欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于微信支付的那些事

程序员文章站 2024-01-21 20:27:10
...

博客已经转移到个人站点:
http://www.wangchengmeng.club/2018/02/01/%E5%85%B3%E4%BA%8E%E5%BE%AE%E4%BF%A1%E6%94%AF%E4%BB%98%E7%9A%84%E9%82%A3%E4%BA%9B%E4%BA%8B/

欢迎来吐槽

自己总结一下微信支付吧。

微信app开发文档区:
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1

集成微信支付:

1-在微信开放平台申请(省略)

2-在app的gradle文件中的dependencies下加入

compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'

3-在调用微信API之前先要初始化

//初始化微信支付
    public void initWxPay() {
        IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);
        msgApi.registerApp(app_id);
    }

4-定义支付回调类WXPayEntryActivity

清单注册:

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

5-请求支付接口

向app端服务器请求支付参数,然后带上参数请求支付接口:

PayReq request = new PayReq();
        if (null != param) {
           //微信支付参数 由服务端返回
           request.appId = param.appid;
           request.partnerId = param.partnerid;
           request.prepayId = param.prepayid;
           request.packageValue = "Sign=WXPay";
           request.nonceStr = param.noncestr;//生成一个随机字符串
           request.timeStamp = param.timestamp;
           request.sign = param.sign;//签名(服务端生成)
        }

        if (null != mIWXAPI) {
           mIWXAPI.sendReq(request);
        }

6-支付回调

    @Override
   public void onResp(BaseResp baseResp) {
      if (0 == baseResp.errCode) {
         //支付成功 0
         CanBus.getDefault().post(new Intent(Constants.WX_PAY_SUCCESS_CODE));
      } else if (-1 == baseResp.errCode) {
         //支付失败 -1 可能参数错误,检查签名
         CanBus.getDefault().post(new Intent(Constants.PAY_FAILURE_CODE));
      } else {
         //支付取消 -2
         CanBus.getDefault().post(new Intent(Constants.PAY_FAILURE_CODE));
      }
      Utils.finish(this);
   }