微信公众号支付一直提示“errmsg choosewxpay fail”,也没有提示具体错误信息,签名没有问题(签名验证地址:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1),支付目录设置也没有问题,因为用的是微信提供的sdk,所有重点检查了sdk的具体流程,发现了原来是sdk签名使用的加密算法问题。

根据微信支付的业务流程,支付主要有两个步骤:1 后台调用统一下单接口获取prepay_id,2 前端再调用js函数chooseWXPay拉起支付,这两个流程都需要用到签名

sdk下载地址:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=11_1,使用的java版本的sdk,默认调用统一下单接口的加密是HMACSHA256,而前端js调用chooseWXPay的加密算法只支持MD5,两次的加密算法不一致也导致提示错误信息“errmsg choosewxpay fail”,具体也不知道这两个流程的加密算法有什么关联,微信也不说明。

sdk文件WXPay.java中默认为HMACSHA256,都修改为MD5调用支付接口了

 

后面根据错误原因针对性的查了一下微信支付HMACSHA256还是有其他同学发现了这个问题,http://blog.csdn.net/neverneverstops_/article/details/77067169,只是大家搜索的时候一般都是搜索“errmsg choosewxpay fail”、签名错误等,查到的都是签名错误、支付目录设置问题等等。

 

posted on 2017-10-10 14:19  jaamy  阅读(1014)  评论(0编辑  收藏  举报