给微信客服发邮件之后,客服回复的答案是
按照以下几点来检查,
1,你签名中的key,也就是你的API密钥key,这个参数要你们自己到商户平台设置的,设置的规则是32位数字与字母大小写的组合的随机数,不能设置成签名串和参数appsecret,你们有正确设置吗???
2,检查开放平台对应的包名与签名是否有正确设置。
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5这里有详细的设置说明。
3,调用支付使用的noncestr这个参数必须和商家服务器调用统一下单接口返回的那个noncestr一致
4,从预支付订单返回的数据,没有重新签名,也会引起这个问题。
5,重新安装微信后试试。
首先应该检查app打包时使用的签名文件的MD5的值是否一样,此处可参考我微信登录中的方法(上一篇文章),如果这个MD5的值跟微信开放平台填写的值是一个的话就应该跟服务器交流核对noncestr的值是否一至,我此次出现的问题是直接把服务器发过来的sign发送给微信了,根据第四条应该重新进行签名,签名方式参考代码如下:
支付拉起代码:参数从服务器获取
public static void sendPayMessage(final String prepayId, final String nonceStr, final String timeStamp, final String sign){ if (!isSupportPay() || !Fanrncho_api.isWXAppInstalled()){ showToast(instance, WX_INFO); return</