Android第三方支付——微信支付

Android第三方支付——微信支付

目录

之前一直说要坚持写一个技术博客,但是人都有惰性,说是那么说了,就是不见行动。今天终于觉悟了,痛改前非,于是产生了这篇文章。

1.微信平台注册应用

详细见开发文档

应用包名:是在APP项目配置文件AndroidManifest.xml中声明的package值。
应用签名:根据项目的应用包名和编译使用的keystore,可由签名工具生成一个32位的md5串,在调试的手机上安装签名工具后,运行可生成应用签名串。签名工具下载地址,注册应用必须使用应用包名和正式应用签名,其正确性必须由开发者保证。

2.支付流程图

支付流程图

3.注册appId

APP引入微信JAR包,调用API前,需要先向微信注册自己APP的appid,代码如下:

IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);
// 将该app注册到微信
msgApi.registerApp("自己应用的appId");

4.调起支付

后台生成支付订单,先调用统一下单API生成预付单,获取到prepay_id后将参数再次签名传输给APP发起支付。以下是调起微信支付的关键代码:

IWXAPI api;
if(!api.isWXAppInstalled()) {
    Toast.makeText(context,"请安装微信客户端",Toast.LENGTH_SHORT).show();
}
public void pay() {
    IWXAPI api;
    // 去后台请求订单信息payInfo 
    WXPayInfo payInfo = new WXPayInfo();
    PayReq request = new PayReq();
    request.appId = payInfo.getAppId();
    request.partnerId = payInfo.getPartnerId();
    request.prepayId= payInfo.getPartnerId();
    request.packageValue = payInfo.getPackageValue();
    request.nonceStr= payInfo.getNonceStr();
    request.timeStamp= payInfo.getTimeStamp();
    request.sign= payInfo.getSign();
    api.sendReq(req);
}

5.支付结果回调

publicvoidonResp(BaseRespresp){
    if(resp.getType()==ConstantsAPI.COMMAND_PAY_BY_WX){
        Log.d(TAG,"onPayFinish,errCode="+resp.errCode); 
        swich(resp.errCode) {
            case 0:
                //支付成功
                break;
            case -1:
                //支付失败
                break;
            case -2:
                //支付取消
                break;
        }           
    }
}

微信支付回调WXPayEntryActivity类必须写在项目名下一级目录wxapi包中,其中支付回调-1(支付失败)结果可能出现的原因如下:

  • 签名错误
  • 未注册appid到微信平台
  • 项目中设置的appid错误
  • 注册的appid与设置的appid不同

6.注意事项

  • 支付失败大多数是签名错误导致。
  • 回调的WXPayEntryActivity的位置未写正确,或者未注册该activity。
  • 如果微信支付是在library中实现的,WXPayEntryActivity的位置还必须是项目名一级目录下wxapi包中,否则回调不到。
  • 打包的apk签名信息与微信平台注册时不同,将签名文件重新生成一下。
  • 后台获取订单信息后再次签名参数时严格区分参数大小写问题(开发中后台返回没有按微信平台要求,导致我花了大半天时间查询问题所在,感受如何你们懂得。。。。。。)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值