Rails 串接 ECPay 綠界金流(一)Postman 測試 API
紀錄串接的過程方便以後回來看
首先先註冊 POSTMAN
POSTMAN 可以快速測試 API 的工具
有提供網頁版及軟體
經過七七四十九天整理出 Body Request 需要的欄位
測試環境 https://payment-stage.ecpay.com.tw/Cashier/AioCheckOut/V5
使用 POST 傳送, 所以欄位要寫在 Body 裡
不能用 LOCAL HOST,而且網址須為 HTTPS
API 必要欄位
MerchantID 2000132 特店編號(綠界提供)
MerchantTradeNo 特 店 交 易 編號 String(20)
MerchantTradeDate 特 店 交 易 時間 String(20)
PaymentType 交易類型 String(20)
TotalAmount 交易金額 Int
TradeDesc 交易描述 String(200)
ItemName 商品名稱 String(400)
ReturnURL 付 款 完 成 通 知 回 傳 網址 String(200)
ChoosePayment 選 擇 預 設 付款方式 String(20)
CheckMacValue 檢查碼 String
EncryptType — CheckMac Value 加密 類型 Int 使用 SHA256 加密
填入 Postman 裡
HashKey=5294y06JbISpM5x9
HashIV=v77hoKGq4kWxNNIS
一、照傳遞的參數 A — Z 排序( 如果重複往後比下個字母 ),用 & 串接每個參數
ChoosePayment=ALL&EncryptType=1&ItemName=Apple iphone 7 手機殼&MerchantID=2000132&MerchantTradeDate=2013/03/12 15:30:23&MerchantTradeNo=ecpay20130312153023&PaymentType=aio&ReturnURL=https://www.ecpay.com.tw/receive.php&TotalAmount=1000&TradeDesc=促銷方案
二、在參數最前面加官方提供的 Hash key、會後面加Hash IV,用 & 串接參數
HashKey=5294y06JbISpM5x9&ChoosePayment=ALL&EncryptType=1&ItemName=Apple iphone 7 手機殼&MerchantID=2000132&MerchantTradeDate=2013/03/12 15:30:23&MerchantTradeNo=ecpay20130312153023&PaymentType=aio&ReturnURL=https://www.ecpay.com.tw/receive.php&TotalAmount=1000&TradeDesc=促銷方案&HashIV=v77hoKGq4kWxNNIS
三、將組成字串做 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%3Decpay20130312153023%26PaymentType%3Daio%26ReturnURL%3Dhttps%3A%2F%2Fwww.ecpay.com.tw%2Freceive.php%26TotalAmount%3D1000%26TradeDesc%3D%E4%BF%83%E9%8A%B7%E6%96%B9%E6%A1%88%26HashIV%3Dv77hoKGq4kWxNNIS
四、字串轉成小寫
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%3decpay20130312153023%26paymenttype%3daio%26returnurl%3dhttps%3a%2f%2fwww.ecpay.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+iphone+7+%e6%89%8b%e6%a9%9f%e6%ae%bc%26merchantid%3d2000132%26merchanttradedate%3d2013%2f03%2f12+15%3a30%3a23%26merchanttradeno%3decpay20130312153023%26paymenttype%3daio%26returnurl%3dhttps%3a%2f%2fwww.ecpay.com.tw%2freceive.php%26totalamount%3d1000%26tradedesc%3d%e4%bf%83%e9%8a%b7%e6%96%b9%e6%a1%88%26hashiv%3dv77hokgq4kwxnnis
六、用 SHA 256 加密產生 Hash
d0669ff3cfb8eae22bd89f088bb907075c4a214c03910f5dbba43a129e027051
七、再將字串轉成大寫並產生檢查碼
D0669FF3CFB8EAE22BD89F088BB907075C4A214C03910F5DBBA43A129E027051
八、將這段檢查碼寫入 CheckMacValue 欄位然後 Send
經過不停找錯跟文件提供的範例比對
( 一開始很自 HIGH 不停送 Request,試到後面才發現還要轉換符號…等 )
終於跳出成功畫面,刷卡 5000 元💳💳💳
別高興太早,這只是第一步,接下來要將驗證寫進 Ruby 裡面
這又是一段故事了…
我會持續紀錄,盡量將過程筆記下來,方便以後自己找
感謝收看,我們下集見👋🏻