视频一区二区三区自拍_千金肉奴隷1985未删减版在线观看_国产成人黄色视频在线播放_少女免费播放片高清在线观看_国产精品v欧美精品v

報(bào)錯(cuò):狀態(tài)碼401或者“錯(cuò)誤的簽名,驗(yàn)簽失敗”或者“簽名錯(cuò)誤,請(qǐng)檢查后再試”

更新時(shí)間:2024.08.22

建議開發(fā)者先參考如何計(jì)算簽名如何驗(yàn)證簽名系列文檔,一步步按照示例操作,熟悉簽名計(jì)算過程,解決簽名問題。

如果出現(xiàn)以上報(bào)錯(cuò)則說明是簽名計(jì)算錯(cuò)誤,請(qǐng)按照以下步驟排查:

1、如果你是服務(wù)商,則簽名時(shí)需要用服務(wù)商的商戶API私鑰而不是子商戶的API私鑰

2、計(jì)算簽名的時(shí)候用的是商戶API私鑰(apiclient_key.pem)文件,你可以通過文件名做初步的甄別,請(qǐng)確認(rèn)你使用的是正確的文件,常見的錯(cuò)誤使用方式有以下幾種:

(1)使用了商戶API證書(apiclient_cert.pem)文件而不是商戶API私鑰(apiclient_key.pem),這兩個(gè)文件的名字非常相似,請(qǐng)注意不要搞混

(2)使用了平臺(tái)證書(wechatpay.pem)的公鑰文件,而不是商戶API私鑰(apiclient_key.pem)
請(qǐng)確認(rèn)你是參考了如何下載商戶API證書 (opens new window),獲取了商戶API證書(apiclient_cert.pem)和商戶API私鑰(apiclient_key.pem)

3、計(jì)算簽名時(shí),你需要用到商戶API私鑰(apiclient_key.pem)文件去計(jì)算簽名串,同時(shí)你需要通過HTTP Authorization頭來傳遞簽名,Authorization頭部會(huì)涉及商戶號(hào)(mchid)、商戶API證書的序列號(hào)(serial_no)請(qǐng)確認(rèn)商戶API私鑰(apiclient_key.pem)、商戶號(hào)(mchid)和商戶API證書(apiclient_cert.pem)的序列號(hào)(serial_no)是一一對(duì)應(yīng)的關(guān)系,請(qǐng)按照以下步驟排查

舉例說明:

1Authorization: WECHATPAY2-SHA256-RSA2048 mchid="1900007291",nonce_str="593BEC0C930BF1AFEB40B4A08C8FB242",signature="gZGkLF3mVIHY72hE1cFSrbEOKr5O7N2jYZAt5VSBpZpHn84HWylnljJHGGlMAtFt4AUP/gso9MyQ95GNb9h9DYI3RmwQe2kvcysVKoYvzgst217AzZYYwHaUnanaEFEuKD33L84JPe/HX1CLs4VjcE16aZfORqHanlgPivirKg/SysHWtlHVU5zYiWsfXU3ylgWXqjj4hHRgKiJ1KbPzMqS0izDfnEBfTWp7GQddnxVOcbCGfk6jQECNu5GX9hFoxL2oCv5iHUg5Vka0/rKs9wjlRLmDPyObMpJUYQ2/a7HcNnzFxxC+JJa+PAjLWT/nkEMdTMotHFwQN05TWB0M9A==%",timestamp="1554208460",serial_no="1DDE55AD98ED71D6EDD4A4A16996DE7B47773A8C"

(1)確認(rèn)你使用的商戶API證書(apiclient_cert.pem)和商戶API證書序列號(hào)是一致的,可以用openssl命令行工具查看商戶API證書序列號(hào)

1openssl x509 -in apiclient_cert.pem -noout -serial

你會(huì)得到商戶API證書序列號(hào),確認(rèn)你得到的序列號(hào)和Authorization頭部傳的serial_no字段是一致的

1serial=1DDE55AD98ED71D6EDD4A4A16996DE7B47773A8C

(2)確認(rèn)你的商戶號(hào)(mchid)和商戶API證書(apiclient_cert.pem)也是匹配的,可以用openssl命令行工具查看證書對(duì)應(yīng)的商戶號(hào)

1openssl x509 -in apiclient_cert.pem -noout -text | grep -o 'CN=[0-9]*' | sed 's/CN=//'

你會(huì)得到商戶號(hào)(mchid),確認(rèn)你得到的序列號(hào)和Authorization頭部傳的mchid字段是一致的

11900007291

4、HTTP Authorization頭里傳遞的隨機(jī)字符串(nonce_str)和時(shí)間戳(timestamp)字段和你計(jì)算簽名時(shí)的傳的值不一致

舉例說明:如下圖,計(jì)算簽名是用的時(shí)間戳和隨機(jī)字符串必須和HTTP Authorization頭里傳遞的隨機(jī)字符串(nonce_str)和時(shí)間戳(timestamp)保持一致

alt text alt text

5、簽名串格式問題 alt text

(1)計(jì)算簽名時(shí)沒有正確處理\n,格式不正確,簽名示例里\n是換行符而不是一個(gè)字符,請(qǐng)確認(rèn)計(jì)算簽名時(shí)有正確處理\n

(2)第一行的請(qǐng)求方法必須要用大寫字母,比如GET,POST,PUT而不能是小寫字母的get,post,put

(3)生成請(qǐng)求簽名共5行,每一行都以換行符結(jié)尾,如果是get請(qǐng)求請(qǐng)注意第五行是空行加換行符,請(qǐng)不要遺漏換行符

(4)請(qǐng)確認(rèn)第二行的URL正常替換成你的要請(qǐng)求的接口的url,而不是文檔示例里的URL,且不帶域名格式的,一定是/v3/certificates格式,而不是https://api.mch.weixin.qq.com/v3/certificates格式

(5)請(qǐng)檢查你的簽名串里沒有多余的/,比如不要出現(xiàn)//v3/certificates

7、以上確認(rèn)都無問題,依然存在簽名報(bào)錯(cuò)問題,則很有可能是因?yàn)榇a處理上做了轉(zhuǎn)義,你可以使用你的代碼并用示例里的密鑰和示例請(qǐng)求計(jì)算一遍簽名值,如果代碼計(jì)算出來的簽名值和示例里的不一致,則請(qǐng)檢查你的代碼的轉(zhuǎn)義問題

可以參考 操作指引-如何生成請(qǐng)求簽名操作指引-如何驗(yàn)證簽名 系列文檔

更多技術(shù)問題
技術(shù)咨詢
反饋
咨詢