Android微信支付流程

  1. 在微信开放平台https://open.weixin.qq.com创建应用并申请微信支付成功,记录下AppID,同时在微信商户平台https://pay.weixin.qq.com记录下MCH_ID即商户号与API_KEY即密钥(需要在商户平台自己去设置)。需要注意的事项:在微信开放平台的审核通过的项目的应用详情中有个应用签名,需要用APK包名生成一个应用签名,这个签名工具是腾讯提供的,下载地址:https://res.wx.qq.com/open/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android2.apk,把这个签名工具安装至手机上,然后你的手机上也需要安装好你自己工程的apk,用签名工具即可生成一串签名,这段签名是微信开放平台中需要用到的。
  2. 支付的主要代码如下: IWXAPI msgApi = WXAPIFactory.createWXAPI(PayActivity.this, null);
    // 将该app注册到微信
    msgApi.registerApp(ConstantUtil.APP_ID);
    mMap = WXRequestUtil.sendPayment(“商城-订单支付”, genOutTradNo(), 0.01);
    Log.i(“TAG”,”统一下单返回信息:”+mMap.toString());
    Toast.makeText(PayActivity.this, “获取订单中…”, Toast.LENGTH_SHORT).show();
    if(mMap!=null && mMap.size()>0){
    if(mMap.get(“return_code”).equals(“SUCCESS”)&&mMap.get(“result_code”).equals(“SUCCESS”)){
    PayReq req = new PayReq();
    req.appId = ConstantUtil.APP_ID;
    req.partnerId = ConstantUtil.MCH_ID;//商户号
    req.prepayId = mMap.get(“prepay_id”);//获取的预支付ID
    req.nonceStr = WXRequestUtil.NonceStr();
    req.timeStamp = String.valueOf(System.currentTimeMillis()/1000);
    req.packageValue = “Sign=WXPay”;
    req.sign = WXRequestUtil.getSignBeforePay(req.appId,req.partnerId,req.prepayId,req.packageValue,req.nonceStr,req.timeStamp);//重新签名的sign
    Toast.makeText(PayActivity.this, “正常调起支付”, Toast.LENGTH_SHORT).show();
    Log.i(“TAG”, “调起支付时的sign值:”+req.sign);
    Log.i(“TAG”,”检查你请求参数是否有误:”+req.checkArgs()+”“);//这是检查你请求参数是否有误,如果打印是false,请检查你的请求参数是否是上面的几个
    msgApi.sendReq(req);//发起微信支付请求
    }else{
    Toast.makeText(PayActivity.this, mMap.get(“return_msg”), Toast.LENGTH_SHORT).show();
    }
    }
  3. 执行msgApi.sendReq(req)之后,需要用到WXPayEntryActivity,这是支付信息的回调。可以参考http://blog.csdn.net/synaric/article/details/52573519
  4. 注意事项:由于调其微信支付的时候需要将APPID注册到微信客户端中,并且将订单数据传给微信,所以在未调试成功之前如果返回结果-1,那么下次调试
    的时候需要清空微信客户端的数据,这个也很重要。(设置-应用-微信-清空数据)
    下面是项目地址: https://github.com/taotao0915/wechat_sdk_sample_android此项目是由腾讯微信支付的demo自己改装完成的,里面只用到了微信支付这块,其他分享、收藏等未涉及。你需要填写ConstantUtil中的参数、build.gradle中的signingConfigs(修改成自己的keystore)、项目的包名换成自己的。这里的微信支付都是在app端处理的,但是实际开发中要把涉及到支付的都放在服务端处理,保证支付的安全性,我们可以把这个项目中的支付相关代码放置服务器端,并加以优化。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值