微信支付
写在前面的话
小豪从来都是一个认认真真写总结的人(●’◡’●)
微信支付
第一个坑
好像修改了应用签名的时候需要等着它审核。
Android集成微信支付正确姿势
引入微信的jar包
初始化注册到微信
IWXAPI msgApi = WXAPIFactory.createWXAPI(this,Constants.APP_ID, true);// 第二个参数是是否校验签名,坑!!! msgApi.registerApp(Constants.APP_ID); 官方的什么鬼,不要理他,第三个参数记得要填true!
解析后台传入的订单信息
就是逐个解析,但是,为什么不用Gson呢? { "appId": "你的APPID", "money": 4, "nonceStr": "d33JjYv6I8a8DmPG", "partnerId": "1264518301", "paySign": "1ADA353C0A710E144B77804F3B1A525F", "prepay_id": "wx2016041117561365055d7bd30985662433", "timeStamp": "1460368573", "wxPackage": "Sign=WXPay" }
将订单信息传入请求,调起微信支付
PayReq request = new PayReq(); request.appId = wx.getAppId(); request.partnerId = wx.getPartnerId(); request.prepayId = wx.getPrepay_id(); request.nonceStr = wx.getNonceStr(); request.timeStamp = wx.getTimeStamp(); request.packageValue = wx.getWxPackage(); request.sign = wx.getPaySign(); //request.extData = "app data"; // optional msgApi.sendReq(request);// 调起微信支付
此时,你以为就可以成功调起微信支付了。
支付结果的回调
想要成功回调,还需要编写WXPayEntryActivity类(包名或类名不一致会造成无法回调)
必须放在wxapi包下,且这个包必须是在根目录下 不能放在其他包下
应该是这样的结构:
清单文件应该是这样的:
<activity android:name=".wxapi.WXPayEntryActivity" android:exported="true" android:launchMode="singleTop" />
必须这样写!!!回调的Activity必须是:你的包名(微信demo里是:net.sourceforge.simcpux)+.wxapi.WXPayEntryActivity.java
你就不!好,那你就别想回调成功。我仿佛看到了这样的嘴脸
这一切文档里没有,demo里写错的!
需要注意,如果errorCode总是为 -1
请尝试通过下面方法解决:
- 用提交的签名的keystore文件打包
- 清理微信的缓存
- 看上面再来一遍
其他人的总结
- Android常用第三方支付
- 移动应用
微信支付集成小结 - http://www.th7.cn/Program/Android/201501/351050.shtml
- http://www.tqcto.com/article/mobile/57931.html
最后的提醒
看完这篇如果还没有成功,那你就去骂腾讯吧