項目總結58:微信小程序支付-校驗簽名失敗-問題處理
問題還原:
項目二次開發需求迭代,重新擴容訂單需求時,發現小程序喚起訂單支付頁面時,總是報"檢驗簽名失敗"異常。
分析和處理問題
1-既然是校驗簽名失敗,說明要么我們自己的簽名不對,要么給微信參數給錯了;
2-微信支付文檔:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6;明確說明喚起支付需要5個參數進行簽名校驗,如下:
3-核實生成喚起支付的參數是否正確,結果發現多了三個參數,因為傳給微信的簽名是用8個參數生成的,而微信校驗簽名時自己生成的簽名是用5個參數生成的,所以兩個簽名不一樣,導致簽名失敗。把三個參數去掉后,就可以了;
幾個比較容易坑人的問題或概念
1-針對驗簽這個操作,APP支付簽名和小程序支付簽名,對應的參數數量和名稱寫法時不一樣的,小程序是5個參數,且參數名稱使用駝峰法則;而APP支付時6個參數,參數名稱是全部小寫。
2-整個微信支付流程中,涉及到兩個簽名
1- 統一下單時,需要對下單參數進行簽名
2- 喚起支付時需要校驗簽名,校驗意味着,需要我們自己先生成簽名,再把參數和簽名傳給微信,微信在生成一個簽名,兩個簽名進行比較。