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

来源:互联网 发布:redis排序 java 编辑:程序博客网 时间:2024/05/16 08:53

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

目录

    • Android第三方支付微信支付
      • 微信平台注册应用
      • 支付流程图
      • 注册appId
      • 调起支付
      • 支付结果回调
      • 注意事项

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

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签名信息与微信平台注册时不同,将签名文件重新生成一下。
  • 后台获取订单信息后再次签名参数时严格区分参数大小写问题(开发中后台返回没有按微信平台要求,导致我花了大半天时间查询问题所在,感受如何你们懂得。。。。。。)
0 0
原创粉丝点击