Android 微信支付集成

  • 准备工作

1.先在微信开发者平台注册账号:开发者平台地址 https://open.weixin.qq.com/
2.注册完之后,需要申请开发者资质认证,这个是要交费的,还需要填写公司信息啥的,交完费需要等待几天。。。
3.认证完之后就可以创建应用了
这里写图片描述
将应用的信息填完之后提交之后,等待微信官方的审核,几天的等待。。。
4.审核通过之后,可以得到appid
这里写图片描述

5.申请微信支付功能,提交完申请又是漫长的等待,几天之后。。
这里写图片描述

  • APP端集成
    1.将lib文件拷贝到项目的libs文件中
    这里写图片描述
    2.将wxapi文件和WXPayEntryActivity这个类拷贝到项目里,路径是包名路径下,也就是说,清单文件中的配置必须是下列格式,如果你想用微信支付,必须按这个格式来
 <activity android:name=".wxapi.WXPayEntryActivity"
            android:exported="true"
            android:launchMode="singleTop"></activity>

3.将该app注册到微信


        api = WXAPIFactory.createWXAPI(this, null);
// 将该app注册到微信
        api.registerApp(Constants.APP_ID);

4.调用api发起支付

        PayReq req = new PayReq();
                        //req.appId = "wxf8b4f85f3a794e77";  // 测试用appId
                        req.appId           = json.getString("appid");
                        //微信支付分配的商户号
                        req.partnerId       = json.getString("partnerid");
                        //预支付交易会话ID,微信返回的支付交易会话ID
                        req.prepayId        = json.getString("prepayid");
                        //随机字符串,不长于32位
                        req.nonceStr        = json.getString("noncestr");
                        //标准北京时间,时区为东八区,自197011000秒以来的秒数。注意:部分系统取到的值为毫秒级,需要转换成秒(10位数字)。
                        req.timeStamp       = json.getString("timestamp");
                        //暂填写固定值Sign=WXPay
                        req.packageValue    = json.getString("package");
                        //签名
                        req.sign            = json.getString("sign");
                        req.extData         = "app data"; // optional
//                       在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信
                        api.sendReq(req);

PayReq 的值都是后台返回的。

到现在为止基本上算是结束了,我在集成微信支付的时候踩了一个坑,这里强调一下,就是微信开发者平台中后台设置中关于软件的签名

这里写图片描述

这个地方包名肯定没问题,不会错,应用签名,最开始的时候我以为是软件签名的sha1值,sb了,这个地方可以看官方的介绍https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5
这个签名的获取必须用微信提供的工具获取,要不你就GG了,微信霸气侧漏啊,如果你安装在手机端的软件是debug版,获取的签名就是debug版的签名,如果是发布版,你在验证的时候需要用发布版的软件去调用微信支付,别弄混了。
微信还有很多坑,很少有人能不踩坑直接就成功了,一般都提示支付失败 -1,这时候你要静下心来好好查看到底哪个地方出问题了,百度看看微信支付-1 的坑,祝你好运。。。

猜你喜欢

转载自blog.csdn.net/csdn_mm/article/details/78813500