搜索到这篇文章的想必都是在调试微信支付,
身为一个做过两次app 微信支付的人员,我遇到的问题有服务的,客户端的,
ok 接下来慢慢介绍问题,当然了文章最底部也有开发前准备
![L{D42G]TUR~UTPZ}56XX`_C.gif](http://upload-images.jianshu.io/upload_images/2516867-90fcc9e28f650877.gif?imageMogr2/auto-orient/strip)
**问题 -1(微信支付竟然所有的错误都是-1) **
-
后台的问题:调用微信统一下单API、以及返回数据给前端时候的sign问题 参数二次签名的时候 必须是小写,小写,小写
(1).调用统一下单时候的商户key 微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置
(2).调用统一下单API后,按照微信文档中的业务流程,下一步该是:
统一下单接口返回正常的prepay_id,
再按签名规范重新生成签名后,将数据传输给APP。
参与签名的字段名为appId,partnerId
,prepayId,nonceStr,timeStamp,package。
- 从这开始就是app的注意事项检查appid 是否注册
(1).配置文件xml注册
<!-- wxpay-->
<activity
android:name=".wxapi.WXPayEntryActivity"
android:exported="true"
android:launchMode="singleTop"
>
</activity>
<receiver android:name=".wxapi.AppRegister"
android:permission="com.tencent.mm.plugin.permission.SEND">
<intent-filter>
<action android:name="com.tencent.mm.plugin.openapi.Intent.ACTION_REFRESH_WXAPP" />
</intent-filter>
</receiver>
(2).AppRegister
public class AppRegister extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
final IWXAPI api = WXAPIFactory.createWXAPI(context, null);
api.registerApp(Constants.APP_ID);
}
}
(3).调起微信支付时候也需要注册 应该是双重保障吧
msgApi = WXAPIFactory.createWXAPI(getActivity(),null);
msgApi.registerApp(Constants.APP_ID);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
/** 检测是否有微信软件 */
if (isWXAppInstalledAndSupported(msgApi)) {
PayReq request = new PayReq();
request.appId = vo.getAppid();
request.partnerId = vo.getPartnerid();
request.prepayId = vo.getPrepayid();
request.nonceStr =vo.getNoncestr();
request.timeStamp = vo.getTimestamp();
request.packageValue = "Sign=WXPay";
request.sign =vo.getSign();
msgApi.sendReq(request);
} else {
MessageBox.toast(getActivity(),"亲,您还没有安装微信");
}
}
});
- 检查你的应用签名是否正确 具体的做法就是下载官方的工具 将你的app 正常打包运行到手机上 检测一下下边两张照片里标注的 值是否正确
其实你会清楚的发现这个值和正常打包之后的md5类似 只不过就是改成小写去掉冒号
MD5: 92:5A:6E:58:CF:45:B5:2C:7B:23:BB:75:96:E3:9D:C0
- 检查你微信回调的WXPayEntryActivity 是不是在你根目录+wxapi的包下 根目录-》就是你配置文件里的package 一定要匹配 否则不走你的回调 还有就是回调的activity必需命名为WXPayEntryActivity
开发前的准备
安卓sdk下载
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1
微信开放平台
https://open.weixin.qq.com/
微信android开发手册
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317784&token=&lang=zh_CN
微信app开发步骤
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5