微信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源碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章