美文网首页
iOS 微信支付报错 支付验证签名失败

iOS 微信支付报错 支付验证签名失败

作者: keyuan0214 | 来源:发表于2018-05-11 12:00 被阅读0次

可能的原因有两个:
一、传给微信sdk的参数中时间戳的格式错误。
iOS中时间戳的格式要求是32位的int类型


image.png

一般服务器返回的是字符串需要强制转换成32位int类型的值

二、服务器的签名方式错误

微信支付:服务器(Java)统一下单获取prepay_id成功,iOS调用微信sdk提示支付验证签名失败。

原因如下:
微信支付:服务器统一下单获取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。

注意事项:回调的时候也用一致的签名方法!!

我的项目出现的微信“支付验证签名失败”原因就是后端服务器用的demo的加密方式和后面的md5的方式不是一种导致给我参数,我再去调微信sdk的时候出现签名失败。

后来java的后端服务器改成一样的就好了,就可以成功调起微信支付。

稍后会补上我的微信支付测试demo的github地址

https://github.com/YO-huang/weixinpay-ios

相关文章

网友评论

      本文标题:iOS 微信支付报错 支付验证签名失败

      本文链接:https://www.haomeiwen.com/subject/ygqfdftx.html