說明
以下範例為綠界檢查碼機制[CheckMacValue]產生方式。
待加密的字串
RtnCode=1&RtnMsg=&IA_Allow_No=1909181313013546&IA_Invoice_No=UV11100019&IA_Date=2019-09-18 13:13:23&IIS_Remain_Allowance_Amt=0
檢核碼計算順序
(1) 將傳遞參數依照第一個英文字母,由A到Z的順序來排序(遇到第一個英名字母相同時,以第二個英名字母來比較,以此類推),並且以&方式將所有參數串連。
IA_Allow_No=1909181313013546&IA_Date=2019-09-18 13:13:23&IA_Invoice_No=UV11100019&IIS_Remain_Allowance_Amt=0&RtnCode=1&RtnMsg=
(2) 參數最前面加上HashKey、最後面加上HashIV
HashKey=ejCk326UnaZWKisg&IA_Allow_No=1909181313013546&IA_Date=2019-09-18 13:13:23&IA_Invoice_No=UV11100019&IIS_Remain_Allowance_Amt=0&RtnCode=1&RtnMsg=&HashIV=q9jcZX8Ib9LM8wYk
(3) 將整串字串進行URL encode
HashKey%3DejCk326UnaZWKisg%26IA_Allow_No%3D1909181313013546%26IA_Date%3D2019-09-18+13%3A13%3A23%26IA_Invoice_No%3DUV11100019%26IIS_Remain_Allowance_Amt%3D0%26RtnCode%3D1%26RtnMsg%3D%26HashIV%3Dq9jcZX8Ib9LM8wYk
注意事項:
若使用PHP語言時請使用urlencode()(RFC 1866),並使用str_replace() 依urlencode轉換表更換字元
(4) 轉為小寫
hashkey%3dejck326unazwkisg%26ia_allow_no%3d1909181313013546%26ia_date%3d2019-09-18+13%3a13%3a23%26ia_invoice_no%3duv11100019%26iis_remain_allowance_amt%3d0%26rtncode%3d1%26rtnmsg%3d%26hashiv%3dq9jczx8ib9lm8wyk
注意事項:
若使用PHP語言時請使用strtolower()
(5) 以MD5加密方式來產生雜凑值
50a276e71dae26343013958b405eeea0
(6) 再轉大寫產生CheckMacValue
50A276E71DAE26343013958B405EEEA0
注意事項:
- 請用MD5加密方式產生雜凑值。
- 請確認您的語言的 UrlEncode function 轉換後的結果符合附錄URLENCODE轉換表中的「.NET編碼(ecpay)」欄位值,若有不符合的字元,請用字元替換功能處理,以免無法符合檢查規則。
例如:PHP urlencode function會將 ! 字元編碼成 %21,不符合「.NET編碼(ecpay)」,所以在 PHP urlencode後需用 str_replace function 將%21轉回 ! 字元。以下僅以 PHP轉換範例說明:
$sMacValue = str_replace(‘%2d’, ‘-‘, $sMacValue);
$sMacValue = str_replace(‘%5f’, ‘_’, $sMacValue);
$sMacValue = str_replace(‘%2e’, ‘.’, $sMacValue);
$sMacValue = str_replace(‘%21’, ‘!’, $sMacValue);
$sMacValue = str_replace(‘%2a’, ‘*’, $sMacValue);
$sMacValue = str_replace(‘%28’, ‘(‘, $sMacValue);
$sMacValue = str_replace(‘%29’, ‘)’, $sMacValue);
其它程式語言的轉換功能,請閱該程式語言的編碼轉換規則改寫。