歐付寶提供多樣化的金流,本頁以「信用卡定期定額」付款方式做介紹。

請商店將網頁表單 POST 傳送至以下的介接網址,以建立信用卡定期定額訂單。消費者填寫信用卡資料後送出,會進入簡訊驗證階段 (OTP),

輸入完畢後同時會將資訊送至銀行授權。

 小提醒 :若是初次串接歐付寶,可先參考「快速串接教學」。

本頁內容

流程簡圖

信用卡定期定額-歐付寶串接教學 金流 電子發票

傳送參數建立訂單[收合]

介接網址:

  • 正式環境: https://payment.allpay.com.tw/Cashier/AioCheckOut/V2

  • 測試環境: https://payment-stage.allpay.com.tw/Cashier/AioCheckOut/V2


請商店將以下參數 POST 傳送至介接網址,以建立信用卡定期定額訂單:

 小提醒 :您可使用「廠商後台測試環境」→「系統開發管理」→「建立測試訂單」來自訂以下參數,線上模擬建立訂單/模擬付款。帳號密碼請參考「快速串接教學」。

必要參數

參數 說明
MerchantID
string (10)
商店代號 (必要)
註冊歐付寶會員時,歐付寶會提供一組商店代號。
MerchantTradeNo
string (20)
商店交易編號 (必要)
1.商店交易編號不可重複
2.可英數字大小寫混合。
3.如何避免訂單編號重複請參考FAQ
MerchantTradeDate
string (20)
商店交易時間 (必要)
日期時間格式:yyyy/MM/dd HH:mm:ss
TotalAmount
int
交易金額 (必要)
純數字格式,無千分位。
1.純數字,無千分位
2.僅限新台幣
3.金額不可為0元,CVS/BARCODE最低限制為30元
TradeDesc
string (200)
交易描述 (必要)
交易的簡易描述。
ItemName
string (200)
商品名稱 (必要)
如果商品名稱有多筆,需在金流選擇頁一行一行顯示商品名稱的話,商品名稱請以#號分隔。
ReturnURL
string (200)
付款完成通知回傳網址 (必要)
接收歐付寶回傳付款完成通知的網址。
ChoosePayment
string (20)
預設付款方式 (必要)
請固定填入"Credit"。  
PeriodAmount
int
每次授權金額 (必要)
純數字格式,無千分位。
1.純數字,無千分位
2.僅限新台幣
3.金額不可為0元,CVS/BARCODE最低限制為30元

必須與"TotalAmount"金額相同。
PeriodType
string (1)
週期種類 (必要)
可設定以下參數:
D:以天為週期
M:以月為週期
Y:以年為週期
Frequency
int
執行頻率 (必要)
此參數用來定義多久要執行一次:
1. 至少要大於等於 1 次以上。

2. 當PeriodType 設為 D 時,最多可設 365 次。
3. 當 PeriodType 設為 M 時,最多可設 12 次。

4. 當 PeriodType 設為 Y 時,最多可設 1 次。
ExecTimes
int
執行次數 (必要)
總共要執行幾次。
1. 至少要大於 1 次以上。

2. 當PeriodType 設為 D 時,最多可設 999次。
3. 當 PeriodType 設為 M 時,最多可設 99 次。

4. 當 PeriodType 設為 Y 時,最多可設 9 次。
例 1:
當信用卡定期定額扣款為每個月扣 1 次 500 元,總共要扣款 12 次:

(TotalAmount)參數請帶 500
PeriodAmount=500
PeriodType=M

Frequency=1
ExecTimes=12

例 2:
當信用卡定期定額扣款為 6000 元,每 6 個月扣 1 次,總共要扣 2 次時:

(TotalAmount)參數請帶 6000
PeriodAmount=6000
PeriodType=M

Frequency=6
ExecTimes=2
PaymentType
string (20)
交易類型 (必要)
請固定填入"aio"。
※如果您使用 phpJavaC#Ruby on RailsNode.js 的金流整合 SDK 工具包,可略過此參數。
CheckMacValue
string (max)
檢查碼 (必要)
※如果您使用 phpJavaC#Ruby on RailsNode.js 的金流整合 SDK 工具包,可略過此參數。
※請參考 CheckMacValue 產生步驟

如果您需要進階的功能,傳送上述必要參數時,可一同傳送以下的選填參數:

選填參數[開啟]

參數 說明
PeriodReturnURL
string (200)
定期定額的執行結果回應URL(選填)
若交易是信用卡定期定額的方式,第一次授權會將結果傳到您設定的ReturnURL,
第二次開始每次執行授權完,會將授權結果回傳到設定的PeriodReturnURL。
Language
string (3)
語系設定(選填)
預設語系為中文,若要變更語系為英文時,該參數值請帶 ENG。
PaymentInfoURL
string (200)
訂單建立通知回傳網址 (選填)
接收歐付寶回傳訂單建立通知的網址。
ClientBackURL
string (200)
Client端返回廠商網址 (選填)
若需於歐付寶的付款完成頁面,顯示[回到廠商]的按鈕,請設定此參數,按鈕會連結至此網址。
※頁面導回的時候,不會帶付款結果到此網址,僅會將頁面導回。
ItemURL
string (200)
商品銷售網址 (選填)
OrderResultURL
string (200)
Client端回傳付款結果網址 (選填)
若不使用歐付寶的付款完成頁面,可設定此參數,指定您的付款結果頁。 ※部分銀行的網路ATM在交易成功後,並不會將頁面導回至歐付寶,所以歐付寶也不會將頁面導回此參數設定的網址。
NeedExtraPaidInfo
string (1)
是否需要額外的付款資訊 (選填)
若於付款完成通知及訂單查詢時,需接收信用卡額外資訊(交易授權單號、卡片末4碼...等)時, 請填入"Y"。
DeviceSource
string (10)
裝置來源 (選填)
此參數用來設定付款頁面的顯示,預設為空值,由 O'Pay 自動判定。
P:電腦版, M:行動裝置版
PlatformID
string (10)
特約合作平台商代號 (選填)
平台商與歐付寶簽約時,歐付寶會提供一組平台商代號。
一般商店不用帶此參數。
ExpireTime
Varchar (20)
付款截止時間 (選填)
格式為 yyyy/MM/dd HH:mm:ss。
只能帶入送出交易後的 72 小時(三天)之內時間。
不填則預設為送出交易後的 72 小時。
InvoiceMark
string (1)
電子發票開立註記 (選填)
此參數為付款完成後開立電子發票。請參考 InvoiceMark 參數為 Y 所需參數
若要開立發票,請將該參數設定為「Y」

範例程式[收合]

使用 php SDK 範例程式:

 小提醒 :若是初次使用歐付寶 SDK,可參考「下載及使用 SDK 元件」。


/*
 *  產生訂單的範例程式碼。
 */
try
{
    $oPayment = new AllInOne();
    /* 服務參數 */
    $oPayment->ServiceURL ="[您要呼叫的服務位址]";
    $oPayment->HashKey = "[O'Pay提供給您的Hash Key]";
    $oPayment->HashIV = "[O'Pay提供給您的Hash IV]";
    $oPayment->MerchantID ="[O'Pay提供給您的特店編號]";
    /* 基本參數 */
    $oPayment->Send['ReturnURL'] = "[您要收到付款完成通知的伺服器端網址]";
    $oPayment->Send['ClientBackURL'] = "[您要歐付寶返回按鈕導向的瀏覽器端網址]";
    $oPayment->Send['OrderResultURL'] = "[您要收到付款完成通知的瀏覽器端網址]";
    $oPayment->Send['MerchantTradeNo'] = "[您此筆訂單交易編號]";
    $oPayment->Send['MerchantTradeDate'] = date('Y/m/d H:i:s');
    $oPayment->Send['TotalAmount'] = (int) "[您此筆訂單的交易總金額]";
    $oPayment->Send['TradeDesc'] = "[您該筆訂單的描述]";
    $oPayment->Send['ChoosePayment'] = PaymentMethod::Credit;
    $oPayment->Send['Remark'] = "[您要填寫的其他備註]";
    $oPayment->Send['ChooseSubPayment'] = PaymentMethodItem::None;
    $oPayment->Send['NeedExtraPaidInfo'] = ExtraPaymentInfo::No;
    $oPayment->Send['DeviceSource'] = DeviceType::PC;
    // 加入選購商品資料。
    array_push($oPayment->Send['Items'], array('Name' => "[產品A]", 'Price' => (int)"[單價]",
'Currency' => "[幣別]", 'Quantity' => (int) "[數量]", 'URL' => "[產品說明位址]"));
    array_push($oPayment->Send['Items'], array('Name' => "[產品B]", 'Price' => (int)"[單價]",
'Currency' => "[幣別]", 'Quantity' => (int) "[數量]", 'URL' => "[產品說明位址]"));
    array_push($oPayment->Send['Items'], array('Name' => "[產品C]", 'Price' => (int)"[單價]",
'Currency' => "[幣別]", 'Quantity' => (int) "[數量]", 'URL' => "[產品說明位址]"));
    /* Credit 定期定額延伸參數 */
    $oPayment->SendExtend['PeriodAmount'] = (int) "[每次授權金額]";
    $oPayment->SendExtend['PeriodType'] = PeriodType::Month;
    $oPayment->SendExtend['Frequency'] = (int) "[執行頻率]";
    $oPayment->SendExtend['ExecTimes'] = (int) "[執行次數]";
    $oPayment->SendExtend['PeriodReturnURL'] = "[定期定額執行結果的回應位址]";
    /* 產生訂單 */
    $oPayment->CheckOut();
    /* 產生產生訂單 Html Code 的方法 */
    $szHtml = $oPayment->CheckOutString();
}
catch (Exception $e)
{
    // 例外錯誤處理。
    throw $e;
}
                                    

使用 Java SDK 範例程式:

 小提醒 :若是初次使用歐付寶 SDK,可參考「下載及使用 SDK 元件」。


/*
 *  產生訂單的範例程式碼。
 */
List<String> enErrors = new ArrayList<String>();
try {
	AllInOne oPayment = new AllInOne();
	
	/* 服務參數 */
	oPayment.ServiceMethod = HttpMethod.HttpPOST;
	oPayment.ServiceURL =  "[您要呼叫的服務位址]";
	oPayment.HashKey = "[O'Pay提供給您的Hash Key]";
	oPayment.HashIV = "[O'Pay提供給您的Hash IV]";
	oPayment.MerchantID = "[O'Pay提供給您的特店編號]";
	
	/* 基本參數 */
	oPayment.Send.ReturnURL = "[您要收到付款完成通知的伺服器端網址]";
	oPayment.Send.ClientBackURL = "[您要歐付寶返回按鈕導向的瀏覽器端網址]";
	oPayment.Send.OrderResultURL = "[您要收到付款完成通知的瀏覽器端網址]";
	oPayment.Send.MerchantTradeNo = "[您此筆訂單交易編號]";
	oPayment.Send.MerchantTradeDate = new Date();//"[您此筆訂單的交易時間]"
	oPayment.Send.TotalAmount = new Decimal("[您此筆訂單的交易總金額]");
	oPayment.Send.TradeDesc = "[您該筆訂單的描述]";
	oPayment.Send.ChoosePayment = PaymentMethod.Alipay;
	oPayment.Send.Remark = "[您要填寫的其他備註]";
	oPayment.Send.ChooseSubPayment = PaymentMethodItem.None;
	oPayment.Send.NeedExtraPaidInfo = ExtraPaymentInfo.No;
	oPayment.Send.DeviceSource = DeviceType.PC;
	
	// 加入選購商品資料。
	Item a1 = new Item();
	a1.Name = "[產品A]";
	a1.Price = new Decimal("[單價]");
	a1.Currency = "[幣別]";
	a1.Quantity = 0;//[數量]
	a1.URL = "[產品說明位址]";
	oPayment.Send.Items.add(a1);
	
	Item a2 = new Item();
	a2.Name = "[產品B]";
	a2.Price = new Decimal("[單價]");
	a2.Currency = "[幣別]";
	a2.Quantity = 0;//[數量]
	a2.URL = "[產品說明位址]";
	oPayment.Send.Items.add(a2);
	
	/* Credit 定期定額延伸參數 */
	oPayment.SendExtend.PeriodAmount = new Decimal("[每次授權金額]");
	oPayment.SendExtend.PeriodType = PeriodType.Month;
	oPayment.SendExtend.Frequency = 1;//"[執行頻率]";
	oPayment.SendExtend.ExecTimes = 3;//"[執行次數]";
	oPayment.SendExtend.PeriodReturnURL = "[定期定額執行結果的回應位址]";
	/* 產生訂單 */
	enErrors.addAll(oPayment.CheckOut(response.getWriter()));
	/* 產生產生訂單 Html Code 的方法 */
	StringBuilder szHtml = new StringBuilder();
	enErrors.addAll(oPayment.CheckOutString(szHtml));
	
}
catch (Exception e) {
	// 例外錯誤處理。
	enErrors.add(e.getMessage());
}
finally {
	// 顯示錯誤訊息。
	if (enErrors.size() > 0)
		out.print(enErrors);
}
                                    

使用 C# SDK 範例程式:

 小提醒 :若是初次使用歐付寶 SDK,可參考「下載及使用 SDK 元件」。


/*
 *  產生訂單的範例程式碼。
 */
List<string> enErrors = new List<string>();

try
{
    using (AllInOne oPayment = new AllInOne())
    {
        /* 服務參數 */
        oPayment.ServiceMethod = HttpMethod.HttpPOST;
        oPayment.ServiceURL = "[您要呼叫的服務位址]";
        oPayment.HashKey = "[O'Pay提供給您的Hash Key]";
        oPayment.HashIV = "[O'Pay提供給您的Hash IV]";
        oPayment.MerchantID = "[O'Pay提供給您的特店編號]";
        /* 基本參數 */
        oPayment.Send.ReturnURL = "[您要收到付款完成通知的伺服器端網址]";
        oPayment.Send.ClientBackURL = "[您要歐付寶返回按鈕導向的瀏覽器端網址]";
        oPayment.Send.OrderResultURL = "[您要收到付款完成通知的瀏覽器端網址]";
        oPayment.Send.MerchantTradeNo = "[您此筆訂單交易編號]";
        oPayment.Send.MerchantTradeDate = DateTime.Parse("[您此筆訂單的交易時間]");
        oPayment.Send.TotalAmount = Decimal.Parse("[您此筆訂單的交易總金額]");
        oPayment.Send.TradeDesc = "[您該筆訂單的描述]";
        oPayment.Send.ChoosePayment = PaymentMethod.Credit;
        oPayment.Send.Remark = "[您要填寫的其他備註]";
        oPayment.Send.ChooseSubPayment = PaymentMethodItem.None;
        oPayment.Send.NeedExtraPaidInfo = ExtraPaymentInfo.Yes;
        oPayment.Send.HoldTrade = HoldTradeType.No;
        oPayment.Send.DeviceSource = DeviceType.PC;
        // 加入選購商品資料。
        oPayment.Send.Items.Add(new Item() { Name = "[產品A]", Price = Decimal.Parse("[單價]"), Currency = "[幣別]", Quantity = Int32.Parse("[數量]"), URL = "[產品說明位址]" });
        oPayment.Send.Items.Add(new Item() { Name = "[產品B]", Price = Decimal.Parse("[單價]"), Currency = "[幣別]", Quantity = Int32.Parse("[數量]"), URL = "[產品說明位址]" });
        oPayment.Send.Items.Add(new Item() { Name = "[產品C]", Price = Decimal.Parse("[單價]"), Currency = "[幣別]", Quantity = Int32.Parse("[數量]"), URL = "[產品說明位址]" });
        /* Credit 定期定額延伸參數 */
        oPayment.SendExtend.PeriodAmount = Int32.Parse("[每次授權金額]");
        oPayment.SendExtend.PeriodType = PeriodType.Month;
        oPayment.SendExtend.Frequency = Int32.Parse("[執行頻率]");
        oPayment.SendExtend.ExecTimes = Int32.Parse("[執行次數]");
        oPayment.SendExtend.PeriodReturnURL = "[定期定額執行結果的回應位址]";
        /* 產生訂單 */
        enErrors.AddRange(oPayment.CheckOut());
        /* 產生產生訂單 Html Code 的方法 */
        string szHtml = String.Empty;
        enErrors.AddRange(oPayment.CheckOutString(ref szHtml));
    }
}
catch (Exception ex)
{
    // 例外錯誤處理。
    enErrors.Add(ex.Message);
}
finally
{
    // 顯示錯誤訊息。
    if (enErrors.Count() > 0)
    {
        string szErrorMessage = String.Join("\\r\\n", enErrors);
    }
}
                                    

使用 Ruby on Rails SDK 範例程式:
https://github.com/allPay/allPayAIO_Ruby/



使用 Node.js SDK 範例程式:
https://github.com/allPay/allPayAIO_Node.js/



其它程式語言,可 點此下載參考範例程式(php、C#),請參考前述建立訂單的參數,串接歐付寶的 API




付款圖例[收合]

付款流程示例:

信用卡定期定額付款流程

1. 將建立「信用卡定期定額」訂單的參數 POST 傳送至介接網址後,在付款頁面,消費者須登入歐付寶會員。
信用卡定期定額 付款流程(1)-歐付寶串接教學 金流 電子發票
2. 訂單成立,消費者填寫信用卡資料。
信用卡定期定額 付款流程(2)-歐付寶串接教學 金流 電子發票
3. 消費者付款完成畫面。
信用卡定期定額 付款流程(3)-歐付寶串接教學 金流 電子發票

 下一頁: 歐付寶回傳第一次授權付款結果


GO TOP