安全簽章的要件,我們已經拿到 Nonce 及 HashId 了,接下來還需要內文雜湊。

圖 4-1
圖 4-1: 各欄位資料範例

以上為各欄位的資料範例,要完成如上圖 Message 欄位的加密後字串,需要產生內文雜湊。我們來看看 API 文件對於取得內文雜湊的描述。

API 文件說明

圖 4-2
圖 4-2: 文件第 19 頁。

文件這一段的重點為,空值的參數(空白、空陣列)以及多節點參數(指的是值非為字串、數字,其值為還有下一層的陣列或物件)都必須移除,接著對欄位名稱進行排序。

訊息內文

真正要傳給豐支付 API 的訂單資料欄位,稱為訊息內文。

原始資料結構

圖 4-3
圖 4-3: 範例 - 建立訂單的資料結構。

訊息內文原始的資料如上圖,經過處理後如下圖。

雜湊處理

圖 4-4
圖 4-4: 範例 - 排序及去除空欄位及多節點欄位。

接著把過濾後的資料轉成網址型態的字串,但不要有 RFC1738 或 RFC3986 編碼。

圖 4-5
圖 4-5: 範例 - PHP 函式參考。

PHP 的開發者可以使用 http_build_query 函式將陣列轉換為網址型態的字串,再使用 urldecode 還原為未編碼字串。

圖 4-6
圖 4-6: 範例 - 內容雜湊後字串。

如此一來,就得到了訊息內文的雜湊了。

流程總結

總結今天的文章,訊息內文雜湊流程可以簡化為下圖:

圖 4-7
圖 4-7: 訊息內文雜湊流程。

在得到訊息內文雜湊的字串後,搭配前兩天拿到的 Nonce 及 HashId,要來計算出安全簽章 Sign 了。明天的文章,一樣會有詳細的圖文說明如何使用這三段字串資料去算出安全簽章 Sign,我們明天見囉 ^^

最後修改日期: 2022-02-05

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。