附錄
檢查碼機制
在與歐買尬金流進行資料傳遞時,除了檢查碼[CheckMacValue]及其餘所有傳遞給歐買尬金流的 參數皆需要加入檢查碼計算,下列範例為AioCheckOut建立訂單計算方式。
以下為舉例待加密的字串:
TradeDesc=促銷方案&PaymentType=aio&MerchantTradeDate=2013/03/12 15:30:23&MerchantTradeNo=funpoint20130312153023&MerchantID=2000132&ReturnURL = https://www.funpoint.com.tw/receive.php&ItemName=Apple iphone 7 手機殼&TotalAmount=1000&ChoosePayment=ALL&EncryptType=1
檢核碼計算順序如下:
(1) 將傳遞參數依照第一個英文字母,由A到Z的順序來排序(遇到第一個英名字母相同時,以第二個英名字母來比較,以此類推),並且以&方式將所有參數串連。
ChoosePayment=ALL&EncryptType=1&ItemName=Apple iphone 7 手機殼&MerchantID=2000132&MerchantTradeDate=2013/03/12 15:30:23&MerchantTradeNo=funpoint20130312153023&PaymentType=aio&ReturnURL=https://www.funpoint.com.tw/receive.php&TotalAmount=1000&TradeDesc=促銷方案
(2) 參數最前面加上HashKey、最後面加上HashIV
HashKey=5294y06JbISpM5x9&ChoosePayment=ALL&EncryptType=1&ItemName=Apple iphone 7 手機殼&MerchantID=2000132&MerchantTradeDate=2013/03/12 15:30:23&MerchantTradeNo=funpoint20130312153023&PaymentType=aio&ReturnURL=https://www.funpoint.com.tw/receive.php&TotalAmount=1000&TradeDesc=促銷方案&HashIV=v77hoKGq4kWxNNIS
(3) 將整串字串進行URL encode
HashKey%3d5294y06JbISpM5x9%26ChoosePayment%3dALL%26EncryptType%3d1%26ItemName%3dApple+iphone+7+%e6%89%8b%e6%a9%9f%e6%ae%bc%26MerchantID%3d2000132%26MerchantTradeDate%3d2013%2f03%2f12+15%3a30%3a23%26MerchantTradeNo%3dfunpoint20130312153023%26PaymentType%3daio%26ReturnURL%3dhttps%3a%2f%2fwww.funpoint.com.tw%2freceive.php%26TotalAmount%3d1000%26TradeDesc%3d%e4%bf%83%e9%8a%b7%e6%96%b9%e6%a1%88%26HashIV%3dv77hoKGq4kWxNNIS
- 若使用PHP進行URL encode:
HashKey%3d5294y06JbISpM5x9%26ChoosePayment%3dALL%26EncryptType%3d1%26ItemName%3dApple%20iphone%207%20%e6%89%8b%e6%a9%9f%e6%ae%bc%26MerchantID%3d2000132%26MerchantTradeDate%3d2013%2f03%2f12%2015%3a30%3a23%26MerchantTradeNo%3dfunpoint20130312153023%26PaymentType%3daio%26ReturnURL%3dhttps%3a%2f%2fwww.funpoint.com.tw%2freceive.php%26TotalAmount%3d1000%26TradeDesc%3d%e4%bf%83%e9%8a%b7%e6%96%b9%e6%a1%88%26HashIV%3dv77hoKGq4kWxNNIS
(4) 轉為小寫
hashkey%3d5294y06jbispm5x9%26choosepayment%3dall%26encrypttype%3d1%26itemname%3dapple+iphone+7+%e6%89%8b%e6%a9%9f%e6%ae%bc%26merchantid%3d2000132%26merchanttradedate%3d2013%2f03%2f12+15%3a30%3a23%26merchanttradeno%3dfunpoint20130312153023%26paymenttype%3daio%26returnurl%3dhttps%3a%2f%2fwww.funpoint.com.tw%2freceive.php%26totalamount%3d1000%26tradedesc%3d%e4%bf%83%e9%8a%b7%e6%96%b9%e6%a1%88%26hashiv%3dv77hokgq4kwxnnis
- 若使用PHP進行URL encode:
hashkey%3d5294y06jbispm5x9%26choosepayment%3dall%26encrypttype%3d1%26itemname%3dapple%20iphone%207%20%e6%89%8b%e6%a9%9f%e6%ae%bc%26merchantid%3d2000132%26merchanttradedate%3d2013%2f03%2f12%2015%3a30%3a23%26merchanttradeno%3dfunpoint20130312153023%26paymenttype%3daio%26returnurl%3dhttps%3a%2f%2fwww.funpoint.com.tw%2freceive.php%26totalamount%3d1000%26tradedesc%3d%e4%bf%83%e9%8a%b7%e6%96%b9%e6%a1%88%26hashiv%3dv77hokgq4kwxnnis
(5) 依urlencode 轉換表更換字元 (若使用PHP進行URL encode時使用)
hashkey%3d5294y06jbispm5x9%26choosepayment%3dall%26encrypttype%3d1%26itemname%3dapple+iphone+7+%e6%89%8b%e6%a9%9f%e6%ae%bc%26merchantid%3d2000132%26merchanttradedate%3d2013%2f03%2f12+15%3a30%3a23%26merchanttradeno%3dfunpoint20130312153023%26paymenttype%3daio%26returnurl%3dhttps%3a%2f%2fwww.funpoint.com.tw%2freceive.php%26totalamount%3d1000%26tradedesc%3d%e4%bf%83%e9%8a%b7%e6%96%b9%e6%a1%88%26hashiv%3dv77hokgq4kwxnnis
(6) 以SHA256加密方式來產生雜凑值
aa5842fda7e55aceb7118d6353e9822ca6d6ff09a0d1fc129a879dd5caf93266
(7) 再轉大寫產生CheckMacValue
AA5842FDA7E55ACEB7118D6353E9822CA6D6FF09A0D1FC129A879DD5CAF93266
※ 注意事項:
(1) 請特店接收到歐買尬金流傳送的資訊時,必須檢查檢查碼[CheckMacValue]是否正確,如未判斷特店可能產生損失。
(2) 請用SHA256加密方式產生雜凑值。
(3) 請確認您的語言的 UrlEncode function 轉換後的結果符合附錄URLENCODE轉換表中的「.NET編碼」欄位值,若有 不符合的字元,請用字元替換功能處理,以免無法符合檢查規則。
例如:
PHP urlencode function 會將 ! 字元編碼成 %21,不符合「.NET編碼」,所以在 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);
其它程式語言的轉換功能,請閱該程式語言的編碼轉換規則改寫。
自行檢測表
為避免貴公司/行號因串接錯誤造成出貨損失、系統故障或開立錯誤之電子發票等,系統上線前 請就以下列表自行檢視相關事項,以降低串接錯誤造成之風險。若更換串接廠商、增修系統程 式或設備更換等情事時,應重新檢視檢測項目。
● 前置作業檢測項目:
| 項次 | 單元 | 檢測項目 | 檢測說明 | 檢測 結果 |
|---|---|---|---|---|
| 1. | 歐買尬金流廠商管理後台設定 | 國外信用卡功能 | 如需支援國外信用卡,是否已簽約申請為特店會員且開通 | □是 □否 |
| 2. | 銀聯卡功能 | 如需支援銀聯卡,是否已簽約申請為特店員且開通 | □是 □否 | |
| 3. | 信用卡分期功能 | 如需支援信用卡分期,是否已簽約申請為特店會員且開通 | □是 □否 | |
| 4. | 系統資訊安全作業 | 加密金鑰保存 | 是否已移除前端網頁或JavaScript內含有機密或敏感之資訊 | □是 □否 |
| 5. | SSL憑證 | 是否已確認憑證效期 | □是 □否 | |
| 6. | CheckMacValue (檢查碼) | 是否已確認檢查碼機制使用SHA256加密方式產生雜湊值 | □是 □否 | |
| 7. | 系統設定確認 | 系統時間校正 | 避免時差問題導致API無法正常運作,是否已將主機進行時間校正 | □是 □否 |
● 產生訂單 API 檢測項目:
| 項次 | 單元 | 檢測項目 | 檢測說明 | 檢測 結果 |
|---|---|---|---|---|
| 1. | API參數確認 | ItemName(商品名稱) | 是否依規定填寫,且內容不允許使用html tag | □是 □否 |
| 2. | ReturnURL(付款完成通知回傳網址) | 是否已填寫正確內容 | □是 □否 | |
| 付款方式 ChoosePayment 為 ALL/ATM 時: | ||||
| 3. | ExpireDate(允許繳費有效天數) | 是否依規定填寫天數 | □是 □否 | |
| 付款方式 ChoosePayment 為 ALL/CVS 時 | ||||
| 4. | PaymentInfoURL (Server 端回傳付款相關資訊) | 是否已填寫正確內容 | □是 □否 | |
| 5. | StoreExpireDate(截止時間) | 是否依規定填寫天數/分鐘數 | □是 □否 | |
| 6. | API送出確認 | PC/行動裝置版 | 是否成功開啟歐買尬金流付款頁面,並正確顯示商品名稱 | □是 □否 |
● 付款結果通知檢測項目:
| 項次 | 單元 | 檢測項目 | 檢測說明 | 檢測結果 |
|---|---|---|---|---|
| 1. | 確認付款結果通知 (Server) | 付款結果以 Server POST 回傳至參數 ReturnURL 設定之網址 | 至廠商測試後台 > 系統開發管理 > 模擬交易確認是否接收到付款結果通知 | □是 □否 |
| 2. | 成功接收付款結果通知 | 是否正確回應 1|OK | □是 □否 | |
| 3. | 成功接收付款結果通知後續處理 | 是否已對回傳之付款結果做後續處理 ex: 訂單狀態更新、開立發票等 | □是 □否 | |
| 4. | 確認付款結果通知 (Client) | 付款結果以 Client POST 回傳至參數 OrderResultURL 設定之網址 | 是否已接收到付款結果通知,並做後續處理 | □是 □否 |
● ATM、CVS、BarcodeATM的取號結果通知檢測項目:
| 項次 | 單元 | 檢測項目 | 檢測說明 | 檢測 結果 |
|---|---|---|---|---|
| 1. | 確認取號結果通知 (Server) | 付款結果以 Server POST 回傳至參數 PaymentInfoURL 設定之網址 | 是否已接收到取號結果通知,且回應 1|OK | □是 □否 |
| 2. | 確認取號結果通知 (Client) | 取號結果以 Client POST 回傳至參數 ClientRedirectURL 設定之網址 | 是否已接收到虛擬代碼/超商代碼的取號結果 | □是 □否 |
