[PHP, .NET] 歐付寶(綠界)-金流串接程式 常見錯誤原因


CheckMacValue Error 常見原因



請資訊人員確認以下事項:

1.帶入的 ALL IN ONE HashKey及HashIV 對應的值貼相反

2.帶入的 ALL IN ONE HashKey及HashIV 字母Key錯或多帶入空白鍵(建議使用複製貼上)

3.將 ALL IN ONE HashKey及HashIV 當作參數一起送出亦會產生此錯誤

4.因為綠界僅支援UTF-8編碼,若送出的參數中含有亂碼則會無法計算檢查碼

(建議可以使用 Fiddler Web Debugger做檢查喔!)

5.參數帶入時是否有依照A-Z的字母排序(遇第一個英名字母相同時,以第二個英名字母來比較,以此類推)

6.請確認您的語言的 UrlEncode function 轉換後的結果符合附錄 URLEncode 轉換表中的「.NET 編碼 (ECPAY)」欄位值,若有不符合的字元,請用字元替換功能處理,以免無法符合檢查規則。 
 

附錄: URLEncode 轉換表(allPay)

 
符號 編碼表 .NET編碼(ECPAY)
- %2d -
_ %5f _
. %2e .
! %21 !
~ %7e %7e
* %2a *
( %28 (
) %29 )
space空格 %20 +
@ %40 %40
# %23 %23
$ %24 %24
% %25 %25
^ %5e %5e
& %26 %26
= %3d %3d
+ %2b %2b
; %3b %3b
? %3f %3f
/ %2f %2f
\ %5c %5c
> %3e %3e
< %3c %3c
% %25 %25
` %60 %60
[ %5b %5b
] %5d %5d
{ %7b %7b
} %7d %7d
: %3a %3a
' %27 %27
" %22 %22
, %2c %2c
| %7c %7c

 

PHP轉換程式

※注意事項:
請確認您的程式語言 UrlEncode function 轉換後的結果須符合附錄 URL Encode 轉換表中的「.NET 編碼(ecpay)」欄位值,若有不符合的字元,請用字元替換功能處理,以免無法符合檢查規則。

例如:PHP urlencode function 會將 ! 字元編碼成 %21,不符合「.NET 編碼(ecpay)」,所以在 PHP urlencode 後需
用 str_replace function 將%21 轉回 ! 字元。

台灣金站提供歐付寶(allPay)以 PHP 轉換範例,
function ecpayUrlEncode($str){
    //webgolds ecpayUrlEncode('str')
    $org = array(
        '%2d', '%5f', '%2e', '%21', 
        '%2a', '%28', '%29', '%20'
    );
    $new = array(
        '-', '_', '.', '!', 
        '*', '(', ')', '+'
    );
    return str_replace($org, $new, $str);
}
其它程式語言的轉換功能,請參閱該程式語言的編碼轉換規則改寫。



 

回上一頁

相關文章:

喜歡這篇文章嗎?立即分享

Posted : / Views: 415
Last updated :2017-11-12