For the complete documentation index, see llms.txt. This page is also available as Markdown.

簽名驗證

提示 (TIP)

商戶可按照以下步驟驗證響應或回調的簽名。

如果驗證的商戶請求簽名正確,tokenpay 會將回覆簽名包含在回覆的 HTTP 標頭中。我們建議商戶驗證響應簽名。

同樣地,tokenpay 會將回調數據包的簽名包含在回調的 HTTP 標頭中。商戶必須驗證回調的簽名,以確保該回調是由 tokenpay 發送的。

拼接 (Concatenate)

首先,商戶從響應中獲取以下資訊。

  • HTTP 標頭 TTPay-Timestamp 中的回覆時間戳。

  • HTTP 標頭 TTPay-Nonce 中的回覆隨機字串。

  • 響應消息體 (Response Body),根據接口返回的順序進行校驗。順序不正確會導致校驗失敗。

簽名字串共有三行,每行一個參數。行尾以 \n(換行符,ASCII 編碼值為 0x0A)結束,最後一行不添加 \n。如果參數本身以 \n 結尾,您仍需額外附加一個 \n

Reply timestamp\n
Reply random string\n
Reply message body

例如,HTTP 回覆消息如下:

HTTP/1.1 200 OK
Server: nginx
Date: Tue, 02 Apr 2019 12:59:40 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 2204
Connection: keep-alive
Keep-Alive: timeout=8
Content-Language: zh-CN
TTPay-Nonce: c5ac7061fccab6bf3e254dcf98995b8c
TTPay-Signature: CtcbzwtQjN8rnOXItEBJ5aQFSnIXESeV28Pr2YEmf9wsDQ8Nx25ytW6FXBCAFdrr0mgqngX3AD9gNzjnNHzSGTPBSsaEkIfhPF4b8YRRTpny88tNLyprXA0GU5ID3DkZHpjFkX1hAp/D0fva2GKjGRLtvYbtUk/OLYqFuzbjt3yOBzJSKQqJsvbXILffgAmX4pKql+Ln+6UPvSCeKwznvtPaEx+9nMBmKu7Wpbqm/+2ksc0XwjD+xlvlECkCxfD/OJ4gN3IurE0fpjxIkvHDiinQmk51BI7zQD8k1znU7r/spPqB+vZjc5ep6DC5wZUpFu5vJ8MoNKjCu8wnzyCFdA==
TTPay-Timestamp: 1554209980
Cache-Control: no-cache, must-revalidate

{"app_id":"xxxx"}

那麼簽名字串為:

回覆 (Reply)

tokenpay 的回覆簽名透過 HTTP 標頭 TTPay-Signature 傳輸。(註:此為示例,因排版可能包含換行,實際數據應在同一行)

判斷 (Judgment)

使用 AES-256-ECB 方法生成簽名(您可以參考簽名生成)。將生成的簽名與回覆簽名進行對比。如果不一致,則說明數據被篡改過。

最後更新於