Android开发之----微信支付

Android开发之----微信支付

就个人总结以下步骤:

 

1) 提交订单

2) 获取订单返回的数据,里边包含的有订单的数据、以及后台返回的与微信支付相关的数据例如:

"wxpay": {
        "out_trade_no": "TNO2017021718004873800000001",
        "appid": "wxaac3a8ac56f6----",
        "sign": "D9315EF565DA92394D86984DC57F6914",
        "timestamp": "1487325648",
        "partnerid": "1402471902",
        "prepayid": "wx201702171755326bc49d280f0543668849",
        "pkg": "Sign=WXPay",
        "noncestr": "u2e2ZM2zWhmW7FRmrQSnTA9wFRFS6tJZ"
      }

3) 通过返回过来的数据来调取微信支付

/**
 * 处理微信支付
 *
 * @param data
 */
private void weChatResult(WxPay data) {
    IWXAPI msgApi = WXAPIFactory.createWXAPI(this, NetConfig.WX_APP_ID);
    msgApi.registerApp(NetConfig.WX_APP_ID);
    PayReq req = new PayReq();
    req.appId = data.getAppid();
    req.partnerId = data.getPartnerid();
    req.prepayId = data.getPrepayid();
    req.nonceStr = data.getNoncestr();
    req.timeStamp = data.getTimestamp();
    req.packageValue = data.getPkg();
    req.sign = data.getSign();
    req.extData = "app data"; // optional
    dialog.setMessage("正常调起支付");
    // 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信
    msgApi.sendReq(req);
    // dialog的销毁
     /*new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            dialog.dismiss();
        }
    }, 3000);*/
}

4) 调取微信支付然后跳转到微信进行支付

5) 接收微信支付的返回码(String)

1、”0” 支付成功

2、”-1” 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。

3、”-2” 支付取消

6)当接收到返回码为”0”时,这个就是支付成功,这里需要做的操作是调取自己服务器的验证接口,然后进行验证支付成功。(微信和支付宝支付相似,当客户支付成功后只是在微信服务器上边支付成功,但是没有在app本地服务器上边支付成功,只有当客户端调取服务端支付成功,服务端再调取微信的接口,两者之间进行验证才可支付成功

Android开发要点说明

1、后台设置

商户在微信开放平台申请开发应用后,微信开放平台会生成APP的唯一标识APPID。由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付。设置界面在【开放平台】中的栏目【管理中心 / 修改应用 / 修改开发信息】里面,如图8.8红框内所示。


图8.8

应用包名:是在APP项目配置文件AndroidManifest.xml中声明的package值,例如DEMO中的package="net.sourceforge.simcpux"。

应用签名:根据项目的应用包名和编译使用的keystore,可由签名工具生成一个32位的md5串,在调试的手机上安装签名工具后,运行可生成应用签名串,如图8.9所示,绿色串即应用签名。签名工具下载地址https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk


图8.9

 

 

基本步骤如上,然后来说下微信支付的配置

 

1)WXPayEntryActivity 这个activity 是接收微信支付结果的界面,这个界面必须在包名下的 wxapi 包里边,如:

也只有这样放的位置才可,另在AndroidManifest.xml配置文件中配置:

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

2)在WXPayEntryActivityonResp方法中将接收到的返回码 errCode传递到支付界面


3)在支付界面PayActivity 接收返回码:

 
4)如支付成功调服务器的验证支付接口即可(不调验证的话服务器端的支付状态还是未支付,这样建议就不会成功)
 
 
总结难点:
1) 在微信上边配置签名,用微信的签名工具进行签名
2) WXPayEntryActivity所放的位置
3) WXPayEntryActivity接收的errCode返回到支付界面(这里用的是EventBus传递,也可用通知)
4) 支付界面获取到errCode后进行验证
5) 微信支付还与后台有关,主要是得后台返回的数据是正确的,如果返回的数据不正确,就根本调不起微信的。

送给开发安卓的小伙伴们
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值