最近因為在串綠界的金流,來記錄一下好了。
首先要先去綠界下載 API 文件還有 SDK,我是用 php 寫的所以就下載 php 那包。
接下來要傳資料到後端去處理:
<form action="Ecpay.php" id="" method="post"><label>編號 (MerchantTradeNo):
<input class="form-control" name="MerchantTradeNo" type="text" value="商店的訂單編號" />
不可重複使用。英數字大小寫混合
</label>
<label class="col-xs-12">時間 (MerchantTradeDate):
<input class="form-control" name="MerchantTradeDate" type="text" value="當下時間" />
yyyy/MM/dd HH:mm:ss
</label>
<label class="col-xs-12">類型 (PaymentType):
<input class="form-control" name="PaymentType" type="text" value="aio" />
aio
</label>
<label class="col-xs-12">金額 (TotalAmount):
<input class="form-control" name="TotalAmount" type="text" value="本次要負的金額" />
請帶整數,不可有小數點 僅限新台幣 金額不可為 0 元,如果是 CVS 或 BARCODE 最低限制為 30 元,最高限制為 30,000 元
</label>
<label class="col-xs-12">描述 (TradeDesc):
<input class="form-control" name="TradeDesc" type="text" value="Desc" />
</label>
<label class="col-xs-12">名稱 (ItemName):
<input class="form-control" name="ItemName" type="text" value="A#B" />
如果商品名稱有多筆,需在金流選擇頁一行一行顯示商品名稱的話,商品名稱請以符號#分隔。
</label>
<label class="col-xs-12">回傳網址 (ReturnURL):
<input class="form-control" name="ReturnURL" type="text" value="要接收綠界回傳付款資訊的網址" />
</label>
<label class="col-xs-12">付款方式 (ChoosePayment):
<input name="ChoosePayment" type="text" value="ALL" />
綠界提供下列付款方式,請於建立訂單時傳送過來:Credit:信用卡及銀聯卡
UnionPay:銀聯卡(需申請開通)
WebATM:網路ATM
ATM:自動櫃員機
CVS:超商代碼
BARCODE:超商條碼
ALL:不指定付款方式,由綠界顯示付款方式選擇頁面。
</label>
<button class="btn btn-default" type="submit">付款</button>
</form>
接著在 post 後處理資料再送到綠界就可以了
include('ECPay.Payment.Integration.php');
try {
$obj = new ECPay_AllInOne();
//服務參數
$obj->ServiceURL = "https://payment-stage.ecpay.com.tw/Cashier/AioCheckOut/V5"; //服務位置,記得測試完要還成正式網址
$obj->HashKey = '5294y06JbISpM5x9' ; //測試用Hashkey,請自行帶入ECPay提供的HashKey
$obj->HashIV = 'v77hoKGq4kWxNNIS' ; //測試用HashIV,請自行帶入ECPay提供的HashIV
$obj->MerchantID = '2000132'; //測試用MerchantID,請自行帶入ECPay提供的MerchantID
$obj->EncryptType = '1'; //CheckMacValue加密類型,請固定填入1,使用SHA256加密
//基本參數(請依系統規劃自行調整)
$MerchantTradeNo = "Test".time() ;
$obj->Send['ReturnURL'] = "接收回傳資料的網址" ; //付款完成通知回傳的網址
$obj->Send['MerchantTradeNo'] = $MerchantTradeNo; //訂單編號
$obj->Send['MerchantTradeDate'] = date('Y/m/d H:i:s'); //交易時間
$obj->Send['TotalAmount'] = 2000; //交易金額
$obj->Send['TradeDesc'] = "good to drink" ; //交易描述
$obj->Send['ChoosePayment'] = ECPay_PaymentMethod::ALL ; //付款方式:全功能
//訂單的商品資料
array_push($obj->Send['Items'], array('Name' => "歐付寶黑芝麻豆漿", 'Price' => (int)"2000",
'Currency' => "元", 'Quantity' => (int) "1", 'URL' => "dedwed"));
//產生訂單(auto submit至ECPay)
$obj->CheckOut();
} catch (Exception $e) {
echo $e->getMessage();
}
最後處理回傳的付款資訊即可。
require('ECPay.Payment.Integration.php');
try {
// 收到綠界科技的付款結果訊息,並判斷檢查碼是否相符
$AL = new ECPay_AllInOne();
$AL->MerchantID = '2000132';
$AL->HashKey = '5294y06JbISpM5x9';
$AL->HashIV = 'v77hoKGq4kWxNNIS';
// $AL->EncryptType = ECPay_EncryptType::ENC_MD5; // MD5
$AL->EncryptType = ECPay_EncryptType::ENC_SHA256; // SHA256
$feedback = $AL->CheckOutFeedback();
// 以付款結果訊息進行相對應的處理
/**
回傳的綠界科技的付款結果訊息如下:
Array
(
[MerchantID] =>
[MerchantTradeNo] =>
[StoreID] =>
[RtnCode] =>
[RtnMsg] =>
[TradeNo] =>
[TradeAmt] =>
[PaymentDate] =>
[PaymentType] =>
[PaymentTypeChargeFee] =>
[TradeDate] =>
[SimulatePaid] =>
[CustomField1] =>
[CustomField2] =>
[CustomField3] =>
[CustomField4] =>
[CheckMacValue] =>
)
再個別寫入資料庫更新即可
*/
// 在網頁端回應 1|OK
echo '1|OK';
} catch(Exception $e) {
echo '0|' . $e->getMessage();
}