- 准备工作
1.先在微信开发者平台注册账号:开发者平台地址 https://open.weixin.qq.com/
2.注册完之后,需要申请开发者资质认证,这个是要交费的,还需要填写公司信息啥的,交完费需要等待几天。。。
3.认证完之后就可以创建应用了
将应用的信息填完之后提交之后,等待微信官方的审核,几天的等待。。。
4.审核通过之后,可以得到appid
5.申请微信支付功能,提交完申请又是漫长的等待,几天之后。。
- APP端集成
1.将lib文件拷贝到项目的libs文件中
2.将wxapi文件和WXPayEntryActivity这个类拷贝到项目里,路径是包名路径下,也就是说,清单文件中的配置必须是下列格式,如果你想用微信支付,必须按这个格式来
<activity android:name=".wxapi.WXPayEntryActivity"
android:exported="true"
android:launchMode="singleTop"></activity>
3.将该app注册到微信
api = WXAPIFactory.createWXAPI(this, null);
// 将该app注册到微信
api.registerApp(Constants.APP_ID);
4.调用api发起支付
PayReq req = new PayReq();
//req.appId = "wxf8b4f85f3a794e77"; // 测试用appId
req.appId = json.getString("appid");
//微信支付分配的商户号
req.partnerId = json.getString("partnerid");
//预支付交易会话ID,微信返回的支付交易会话ID
req.prepayId = json.getString("prepayid");
//随机字符串,不长于32位
req.nonceStr = json.getString("noncestr");
//标准北京时间,时区为东八区,自1970年1月1日 0点0分0秒以来的秒数。注意:部分系统取到的值为毫秒级,需要转换成秒(10位数字)。
req.timeStamp = json.getString("timestamp");
//暂填写固定值Sign=WXPay
req.packageValue = json.getString("package");
//签名
req.sign = json.getString("sign");
req.extData = "app data"; // optional
// 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信
api.sendReq(req);
PayReq 的值都是后台返回的。
到现在为止基本上算是结束了,我在集成微信支付的时候踩了一个坑,这里强调一下,就是微信开发者平台中后台设置中关于软件的签名
这个地方包名肯定没问题,不会错,应用签名,最开始的时候我以为是软件签名的sha1值,sb了,这个地方可以看官方的介绍https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5
这个签名的获取必须用微信提供的工具获取,要不你就GG了,微信霸气侧漏啊,如果你安装在手机端的软件是debug版,获取的签名就是debug版的签名,如果是发布版,你在验证的时候需要用发布版的软件去调用微信支付,别弄混了。
微信还有很多坑,很少有人能不踩坑直接就成功了,一般都提示支付失败 -1,这时候你要静下心来好好查看到底哪个地方出问题了,百度看看微信支付-1 的坑,祝你好运。。。