Rails 串接 ECPay 綠界金流(一)Postman 測試 API

Henry Huang
Henry{ 學習筆記 }
8 min readDec 24, 2020
Photo by J. Kelly Brito on Unsplash

紀錄串接的過程方便以後回來看

首先先註冊 POSTMAN

https://www.postman.com/

POSTMAN 可以快速測試 API 的工具

有提供網頁版及軟體

軟體下載 https://www.postman.com/downloads/

使用介紹 https://xenby.com/b/151-%E6%8E%A8%E8%96%A6-%E4%BD%BF%E9%96%8B%E7%99%BCapi%E6%9B%B4%E6%96%B9%E4%BE%BF%E7%9A%84%E5%B7%A5%E5%85%B7-postman

安裝完到綠界看文件了

https://www.ecpay.com.tw/Service/API_Dwnld

經過七七四十九天整理出 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 裡面

這又是一段故事了…

我會持續紀錄,盡量將過程筆記下來,方便以後自己找

感謝收看,我們下集見👋🏻

--

--

Henry Huang
Henry{ 學習筆記 }

透過做筆記來加強自己的記憶及之後方便找尋