美文网首页
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