微信JSAPI支付躺过的坑

2017年8月20日的记录,后续微信SDK升级可能会避免这些问题。
1、统一下单接口,SDK默认的配置是HMACSHA256签名方式,使用该方式能正常下单,拿到prepay_id。但拿到这个prepay_id传到前端进行微信支付的时候,始终提示“支付签名验证失败”,在这个问题上又耗费了几个日夜,网上各种找,签名工具各种验证,签名都是正确的,但手机调用支付时,签名失败。后来突然间看到一篇帖子说:下单时的签名方式要与支付的签名方式一致,
2、仿忽看到了希望,赶紧一试,修改签名试为MD5,却拿不到prepay_id了。跟踪代码发现,Prepay_id其实已经返回回来了,返回回来后又进行了签名验证,返回的sign并不是我们下单时提交的,是根据返回的参数来生成的,所以代码里对微信支付接口返回的数据进行校验。发现校验不过,所以就报错了。这个问题出在哪里呢?没办法又使用微信的签名验证工具,进行验证,几次之后,发现:

1、本地sdk代码在校验的时候把 sign_type=MD5加到进去了,而微信服务端生成签名时候是没有加这个参数的。这个坑真心大。

修复了上面的问题后,顺利的成功支付了。

综上所述:

1、统一下单接口要使用MD5签名方式(因为支付的时候暂只支持md5)
2、就是本在微信sdk在验证下单返回数据时把sign_type加到参数里了,需要修改,tip:我使用的sdk源码。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wolf犭良

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值