1.V3簽名錯誤
1.1服務端簽名錯誤(如下單) 參數錯誤和方式錯誤無先后順序
1.1.1 簽名方式錯誤
當簽名參數無誤時,就是簽名的方式有問題,可以使用以下方式檢查
使用官方驗簽工具進行驗簽,地址:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/download/Product_5.zip
明文填寫方式參考官方簽名生成文檔 ,地址:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_0.shtml
注意紅色方框內容,【\n】在驗簽工具明文中是換行的意思,不是字符串,注意一共有5個,所以POST請求在驗簽工具里面最后一行需要換一行,GET需要換兩行,并且GET請求需要在URL末尾附加有’?'和對應的查詢字符串
POST請求可參考以下截圖
GET請求可參考以下截圖,注意【?】為英文狀態下的?
1.1.2 簽名參數錯誤(含私鑰等參數) 參數錯誤和方式錯誤無先后順序
當簽名方式無誤時,就是簽名的參數有問題,可以使用以下方式檢查
使用官方postman腳本進行測試,地址:https://github.com/wechatpay-apiv3/wechatpay-postman-script
注意:需要先下載腳本后導入postman里進行配置
嚴格按照官方步驟進行配置,注意這里的配置,Authorization的值就是{{auth}},不需要自己生成簽名
配置好之后先測試下載證書(官方已經配置好,直接可以調用)如果成功下載證書,說明私鑰、商戶號、證書序列號是沒有問題的,根據請求方式選擇【證書下載】或者【發放指定批次的代金券】替換一下參數和請求URL即可測試出錯的接口
1.1.3 Authorization頭部值錯誤
1.商戶號mchid 與使用私鑰不匹配或不存在(注意:千萬不可以有空格)
2.證書序列號serial_no與當前私鑰對應在商戶平臺查看的證書序列號不匹配(注意:如果不匹配可能會導致系統繁忙,請稍后重試)
3.隨機字符串nonce_str與組成簽名的明文中的隨機字符串一致(注意:千萬不可以有空格)
4.時間戳timestamp與組成簽名的明文中的時間戳一致(注意:千萬不可以有空格)
5.組成請求頭時是一行數據,WECHATPAY2-SHA256-RSA2048 mchid=“1900009191”【中間是一個空格,不是換行】
6.無論是下單還是喚起,如果是服務商模式,均使用服務商的參數(私鑰、商戶號、證書序列號)喚起和下單一定需要使用相同的私鑰進行簽名
1.2喚起簽名錯誤
1.2.1 簽名參數錯誤
1.嚴格按照文檔需要的參數進行簽名,如小程序喚起支付
注意參與簽名時不要有空格
2.私鑰文件需要和下單時一樣,如果是服務商模式,均使用服務商的
3.喚起的參數字段名大小寫必須與文檔中一致,注意簽名方式為RSA
4.測試時以上均無誤,則把前端參數寫死后測試
1.2.2 簽名方式錯誤(前后端簽名方式需一致)
1.簽名方式按照文檔中的方式進行簽名,可用簽名驗證工具進行驗簽,明文排放規則如下
這里的【\n】在驗簽工具明文中是換行的意思,不是字符串注意一共有4個,明文最后一行需換行
2.V2簽名錯誤
2.1服務端簽名錯誤(如下單)
使用官方簽名工具驗證簽名,復制請求的XML請求串,使用api秘鑰驗簽
簽名方式按照加密的方式驗證,例如MD5
點擊校驗簽名,就會得到驗簽的結果
使用官方簽名工具生成簽名,使用postman測試,無需任何配置,復制粘貼請求地址和請求參數,就可以校驗參數和秘鑰是否正確
注:需要使用證書的接口,可以自行在網上查詢如何導入證書
地址:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1
注意簽名方式和字段簽名方式需要保持一致,填寫時不要有空格,注意大小寫需要與文檔一致
如果使用驗簽工具生成簽名后請求接口依然提示簽名錯誤,那就是API秘鑰有問題,登錄商戶平臺重置秘鑰后再重試
秘鑰key設置方式:https://kf.qq.com/faq/161220VnAvUb161220NJRbiM.html
如果是服務商模式,均使用服務商的秘鑰
2.2喚起簽名錯誤(前后端簽名方式需一致)
喚起支付時需要按照文檔要求生成簽名,不是用下單成功后返回的簽名,注意簽名的參數大小寫需要與文檔一致
可以使用驗簽工具生成簽名值寫死在前端進行測試,簽名方式及秘鑰key需要下單時一致
喚起時的簽名錯誤可能有:
1.如參與簽名字段的大小寫或者不是文檔規定使用的參數(有缺少或有多余的參數)
2.生成簽名的秘鑰key錯誤,注意一點是在商戶平臺設置的api秘鑰,設置地址:https://kf.qq.com/faq/161220VnAvUb161220NJRbiM.html
服務商模式下單和喚起都需要使用服務商的秘鑰
3.前后端交互問題,可能前端傳遞的參數為空或錯誤
4.注意喚起的方法里的字段需要與文檔中一致,不可以缺少或者多余
字段注意不要有空格,需要真實參數【appId必須是當前喚起主體的appId,例如小程序就必須是當前喚起支付的小程序appId,且和下單時的appId一致】
3.V3驗證簽名錯誤
在代碼中驗簽失敗的時候,可以使用官方驗簽工具進行驗簽,下載地址:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/download/Product_5.zip
驗簽是需要使用平臺證書,不是使用商戶證書,平臺證書接口文檔:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay5_1.shtml
獲取到平臺證書后需要解密,解密文檔:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_2.shtml
明文和簽名填寫方式參考官方驗證簽名文檔 ,文檔地址:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_1.shtml
平臺證書、明文、簽名都得到之后,可以使用驗簽工具進行驗簽,文檔中的/n換行在驗簽工具中是需要手動換行的,所以最后一行也是需要換行。如圖
如有其他簽名錯誤及解決方法歡迎補充