您的位置:首页 > 移动开发 > 微信开发

Android微信支付开发

2016-07-03 11:53 435 查看
         项目第一期已经完成,里面涉及到了微信支付,当时由于项目赶进度,只是把功能实现了,并没有认真的梳理一下,现在趁有时间好好总结一下。

         第一步,在微信开放平台注册一个账号,然后创建一个应用,填写应用的相关信息(签名、包名、图标等)。填完之后,等待审核。审核通过之后,你会获取到AppId、AppSecret和接口相关信息,如下图。注:接口状态前两个是应用审核通过之后直接就获得的,而我们要用到的微信支付这个接口还是要申请的,申请资料是公司的相关资料(这个是公司相关人员申请的)。资料审核完以后,会向你所填写的邮箱里发送商户号和密码等重要信息,一定要保存好。



第二步,查看支付文档,下载微信提供的demo,正式开始开发。

下面是微信支付开发的时序图,可以更直观的查看app支付在各端的交互流程:



可以把微信提供的demo直接复制到你的应用中,然后在Constants这个类中将参数换成你自己的,商户号MCH_ID是在支付审核通过后给你邮箱中发送的一个参数,如下图:



1、在AppRegister类中注册你的appId

API 调用前,需要先向微信注册您的APP,代码如下:

final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);

// 将该app 注册到微信

msgApi.registerApp(APP_ID);

2、生成微信支付参数:

req.appId = Constants.APP_ID;
req.partnerId = Constants.MCH_ID;
req.prepayId = resultunifiedorder.get("prepay_id");
req.packageValue = "Sign=WXPay";
req.nonceStr = genNonceStr();
req.timeStamp = String.valueOf(genTimeStamp());

List<NameValuePair> signParams = new LinkedList<NameValuePair>();
signParams.add(new BasicNameValuePair("appid", req.appId));
signParams.add(new BasicNameValuePair("noncestr", req.nonceStr));
signParams.add(new BasicNameValuePair("package", req.packageValue));
signParams.add(new BasicNameValuePair("partnerid", req.partnerId));
signParams.add(new BasicNameValuePair("prepayid", req.prepayId));
signParams.add(new BasicNameValuePair("timestamp", req.timeStamp));

req.sign = genAppSign(signParams);

3、调起微信支付参数:

msgApi.registerApp(Constants.APP_ID);

msgApi.sendReq(req);

4、接受支付返回结果:在WXPayEntryActivity 类中实现onResp 函数,处理支付结果的通知和下一步界面操作。

在onResp 方法中带的参数resp的errCode有3个值:

errCode == 0  支付成功;

errCode == -1  支付失败;

errCode == -2  支付取消;

到这里,微信支付开发就结束了。最后,还要提醒大家注意下面几点:

(1)微信支付回调的WXPayEntryActivity必须是:你的包名+.wxapi.WXPayEntryActivity.java。

(2)如果微信支付之前可以支付,突然不能正常支付了,你可以清理一下微信缓存,这个我试过对我有用。

以上就是我所总结的微信支付的过程,难免会有漏洞和不足之处,欢迎大神批评吐槽,大家共同进步!

最后,附上参考网站的链接http://www.360doc.com/content/15/0214/10/7044580_448519997.shtml
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息