微信支付

写在前面的话

小豪从来都是一个认认真真写总结的人(●’◡’●)

微信支付

  1. APP端开发步骤说明
  2. Android接入指南
  3. demo下载

第一个坑

好像修改了应用签名的时候需要等着它审核。

Android集成微信支付正确姿势

  1. 引入微信的jar包

  2. 初始化注册到微信

    IWXAPI msgApi = WXAPIFactory.createWXAPI(this,Constants.APP_ID, true);// 第二个参数是是否校验签名,坑!!!
    msgApi.registerApp(Constants.APP_ID);        
    官方的什么鬼,不要理他,第三个参数记得要填true!
  3. 解析后台传入的订单信息

    就是逐个解析,但是,为什么不用Gson呢?
    {
         "appId": "你的APPID",
         "money": 4,
         "nonceStr": "d33JjYv6I8a8DmPG",
         "partnerId": "1264518301",
         "paySign": "1ADA353C0A710E144B77804F3B1A525F",
         "prepay_id": "wx2016041117561365055d7bd30985662433",
         "timeStamp": "1460368573",
         "wxPackage": "Sign=WXPay"
    }
  4. 将订单信息传入请求,调起微信支付

    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);// 调起微信支付

    此时,你以为就可以成功调起微信支付了。

    zhuangbi.info.jpg

  5. 支付结果的回调

    想要成功回调,还需要编写WXPayEntryActivity类(包名或类名不一致会造成无法回调)

    必须放在wxapi包下,且这个包必须是在根目录下 不能放在其他包下

    应该是这样的结构:

    QQ截图20160412143624.png

    清单文件应该是这样的:

    <activity
        android:name=".wxapi.WXPayEntryActivity"
        android:exported="true"
        android:launchMode="singleTop" />

    必须这样写!!!回调的Activity必须是:你的包名(微信demo里是:net.sourceforge.simcpux)+.wxapi.WXPayEntryActivity.java
    你就不!好,那你就别想回调成功。

    我仿佛看到了这样的嘴脸

    这一切文档里没有,demo里写错的!


需要注意,如果errorCode总是为 -1

请尝试通过下面方法解决:

  1. 用提交的签名的keystore文件打包
  2. 清理微信的缓存
  3. 看上面再来一遍

其他人的总结

  1. Android常用第三方支付
  2. 移动应用微信支付集成小结
  3. http://www.th7.cn/Program/Android/201501/351050.shtml
  4. http://www.tqcto.com/article/mobile/57931.html

最后的提醒

看完这篇如果还没有成功,那你就去骂腾讯吧