最近因為在串綠界的金流,來記錄一下好了。
首先要先去綠界下載 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(); }