Android微信支付

来源:互联网 发布:公司流程优化建议 编辑:程序博客网 时间:2024/05/23 12:45

参考文章:http://blog.csdn.net/androidstarjack/article/details/50951941
SDK和demo下载https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1

微信支付集成步骤
1、微信开放平台https://open.weixin.qq.com新建应用,填写包名和应用签名(32位MD5值),拿到AppID,开通微信支付,填一系列资料,最后拿到微信支付商户号partnerId和API密钥。
2、先注册
IWXAPI api
api = WXAPIFactory.createWXAPI(this, AppID);
api.registerApp(AppConfig.AppID);

3、从服务端拿到参数后,起调支付接口
JSONObject data = jo_result.optJSONObject(“data”);
PayReq req = new PayReq();
req.appId = AppID;
req.partnerId = data.optString(“partnerid”);
req.prepayId = data.optString(“prepayid”);
req.nonceStr = data.optString(“noncestr”);
req.timeStamp = data.optString(“timestamp”);
req.packageValue = data.optString(“packageStr”);
req.sign = data.optString(“sign”);
// 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信
api.sendReq(req);

3、设置支付回调界面,将官方给出的例子中WXPayEntryActivity添加到应用中,这个Activity要求放到“App包名.wxapi”的package中,然后在AndroidManifest.xml中注册。

关于errCode = -1的问题
1、首先检查应用的签名是否正确,最直接的检测方法是查看微信分享的界面能否被调起,如果能则排除。
注意:用正式的keystore打包安装测试,不能用eclipse中直接run;
微信提供了包签名工具https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk,此工具生成的签名和我用eclipse生成的签名不一致,我是用eclipse生成的签名测试成功的;
在微信开放平台注册和修改签名时要去掉中间的冒号;
应用的签名可以在微信开放平台修改,但是生效需要一定的时间间隔。
2、sign签名,官方文档建议sign在服务器后台封装,要求全部小写按此顺序:appid,noncestr,package,partnerid,prepayid,timestamp,key。封装方式如下:
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=4_3 这里给出我后台封装的代码:
String sign = “appid=” + AppID +
“&noncestr=” + response.getNonce_str() +
“&package=” + packageStr +
“&partnerid=” + response.getMch_id() +
“&prepayid=” + response.getPrepay_id() +
“&timestamp=”+timestamp +
“&key=” + key;
sign = DigestUtils.md5Hex(signStr);
各个参数可以查看文档https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_12&index=2,key为API密钥,获取方式:微信商户平台(pay.weixin.qq.com)–>账户设置–>API安全–>密钥设置
注意:封装sign之后要进行MD5操作,官方文档里面还要求转化为大写,我测试时转化为大写调不起支付界面,不转化大写则成功调起支付界面。

0 0
原创粉丝点击