昨天折腾一宿,就是因为这个问题:
微信支付:服务器统一下单获取prepay_id成功,前端公众号里调用jsapi提示支付验证签名失败(签名工具测试签名正确)
先说出问题原因:统一下单使用的微信支付官方下载的demo的Java版,https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1
这个demo里统一下单使用的签名方式是HMAC-SHA256,而页面签名方式用的https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6
这里默认的是签名方式是MD5,前后两个签名方式不一致导致的“支付验证签名失败”。
解决方法:前后两个签名方式调成一致,同时用MD5或同时用HMAC-SHA256。
注意事项:回调的时候也用一致的签名方法!!
感悟:明明是在线签名工具签名正确了的,明明是默认sign_type就是MD5的,但是谁想到还有前后签名不一致这一说,不说坑不坑的事了,昨天因为找不到原因,眼睛瞪成铜铃大把代码、公众号、商户号,CSDN上相关文档翻了个底朝天,也算有所收获吧,至于有的文档里说把密钥重置一下就可以了什么的,大约是大家的笑谈吧。