台灣里 OpenPay 線上付款技術手冊 (v2.1.34)
  1. 簡介
    1. 版本更新記錄
  2. 支援及整合方式
    1. 簡易機動付款
      1. 說明
      2. 流程循序圖
      3. 介面及參數
    2. 系統整合付款
      1. 說明
      2. 流程循序圖
      3. 介面及參數
      4. 傳遞參數檢查機制說明
    3. 系統取單付款
      1. 說明
      2. 流程循序圖
      3. 介面及參數
    4. 系統建檔付款
      1. 說明
      2. 流程循序圖
      3. 介面及參數
    5. 付款等待通知
      1. 說明
      2. 介面及參數
    6. 付款入帳通知
      1. 說明
      2. 介面及參數
    7. 付款狀態查詢
      1. 說明
      2. 介面及參數
    8. 付款入帳列表
      1. 說明
      2. 介面及參數
    9. 7-11超商取貨付款選店
      1. 說明
      2. 介面及參數
  3. 付款範例
    1. 簡易機動付款
    2. 系統整合付款
  4. 附錄A: 回傳付款結果表
  5. 附錄B: MD5 範例程式
  6. 附錄C: 自訂回傳商家網站參數範例程式



1. 簡介
    台灣里 OpenPay 付款服務整合 信用卡 / 銀聯卡 / WebATM / 7-11 ibon / 全家 FamiPort / 萊爾富 LifeET / 超商條碼 / 銀行轉帳 / 7-11 取貨付款 / 支付寶 / 財付通 等多種收款通路, 簡單的整合方式, 提供商家多元化的付款服務. 以下各節將介紹 OpenPay 的使用方法及介面參數.

    1.1 版本更新記錄

      [2.1.34] 1. 超商代碼付款(ibon/famiport/lifeet), 入帳通知及付款狀態查詢功能, 新增繳費超商資料欄位(pay_cstore). (ref, ref).
      [2.1.33] 1. 虛擬帳號轉帳付款, 付款成功時新增遮碼扣款帳戶/入款帳戶資料. (ref, ref).
      [2.1.32] 1. 新增系統建檔付款與系統取單付款的API回傳狀態 (ref).
      [2.1.31] 1. 新增系統建檔付款 (ref).
      [2.1.31] 2. [回傳付款結果表] 移動至附錄A (ref).
      [2.1.30] 1. select_paymethod 參數增加可複選選項, 限定當次付款可使用的支付方式.
      [2.1.30] 2. 移除已不支援的收款方式 ApplePay/PayPal.
      [2.1.29] 1. 移除已不支援的收款方式 中國銀聯(ChinaPay), 中信網銀.
      [2.1.28] 1. 新增 2.8 節 [7-11超商取貨付款選店] 服務介面 API.
      [2.1.27] 1. 新增 [萊爾富 LifeET 付款].
      [2.1.26] 1. 修改 2.2 節 [系統整合付款] 介面, 新增離線付款相關回傳參數. (ref).
      [2.1.26] 1. 修改 2.6 節 [付款狀態查詢] 介面, 新增離線付款相關回傳參數. (ref).
      [2.1.25] 1. 新增 2.4 付款等待通知功能 (ref).
      [2.1.25] 2. 修改 2.5 付款入帳通知功能, 新增可於後台指定使用 GET or POST 方式通知 (ref).
      [2.1.24] 1. 信用卡付款成功時, 於 [付款流程回傳], [Web通知回傳] 和 [付款狀態查詢 API] 中新增遮碼卡號資訊.
      [2.1.23] 1. 新增 [Apple Pay 線上付款].
      [2.1.22] 1. 修改 [系統整合付款], 新增 is_show_bill_page 介面參數, 用來設定有指定 return_url 時, 顯不顯示離線繳款單頁面.
      [2.1.21] 1. 修改 [系統取單付款] API, 新增 7-11 取貨付款方式.
      [2.1.21] 2. 修改 [付款狀態查詢] API, 新增離線付款相關資料欄位.
      [2.1.20] 1. 新增 7-11 取貨付款.
      [2.1.19] 1. 新增中信網銀付款.
      [2.1.18] 1. 修正 2.5 付款入帳通知 使用 HTTP/GET 及增加其相關說明.(ref)
      [2.1.17] 1. 新增 2.7 付款入帳列表 API.(ref)
      [2.1.16] 1. 新增 2.6 付款狀態查詢 API.(ref)
      [2.1.16] 2. 修改 2.3 系統取單付款 API, 新增 access ip 限制. (ref)
      [2.1.15] 1. 新增支付寶和財付通線上付款.
      [2.1.14] 1. [系統整合付款]和[系統取單付款]的離線付款方式, 支援於付款要求中指定繳款期限的日期, 其中 ibon 付款支援至時分秒.
      [2.1.13] 1. 回傳付款結果表新增 [10,取消付款] 狀態值, 在付款成功後至入帳通知發動前, 若付款被取消會回傳此狀態值.
      [2.1.12] 1. 新增 全家FamiPort 收款服務, 移除 玉山 eCoin 收款服務.
      [2.1.11] 1. 新增 PayPal/中國銀聯卡 收款服務.
      [2.1.10] 1. 新增付款入帳通知商家端程式功能. (ref)
      [2.1.9a] 1. 修改系統取單付款的商家訂單編號欄位限制. (ref)
      [2.1.9a] 2. 新增系統取單付款回傳狀態. (ref)
      [2.1.9] 1. 新增系統取單付款.
      [2.1.8] 1. 新增簡易機動付款.
      [2.1.8] 2. 新增付款模式(mode)及限制付款方式參數(select_paymethod).
      [2.1.7] 1. 新增 ibon 付款相關參數.
      [2.1.7] 2. 修改回傳付款結果表, 玉山WebATM 改為 WebATM, 移除 [網路郵局/全國繳費網WebATM/全國繳費網活期帳戶] 相關回傳項目.
      [2.1.6] 1. 新增商家傳入配送型態參數.
      [2.1.5] 1. 新增商家傳入備註欄參數.
      [2.1.4] 1. 新增回傳商家網站攜帶參數.
      [2.1.3] 1. 新增便利商店付款.
      [2.1.1] 1. 新增全國網費網線上付款.
      [2.1.1] 2. 新增商家網頁編碼介面參數.
      [2.1.1] 3. 新增簡體中文付款網頁語系.
      [2.1.1] 4. 新增不同語言介面的代收項目簡介設定.
      [2.1.1] 5. 新增商家自訂回傳參數範例.
      [2.1] 1. 新增網路郵局線上付款.



2. 支援及整合方式
台灣里 OpenPay 付款代收服務目前支援以下四種整合方式.
  1. 簡易機動付款: 在商家端系統無購物車無訂單交易系統時使用.
  2. 系統整合付款: 在商家端系統有購物車有訂單系統時使用.
  3. 系統取單付款: 商家端系統不透過消費者瀏覽器, 直接向台灣里系統以 API取得離線付款繳費資訊.
  4. 系統建檔付款: 商家端系統不透過消費者瀏覽器, 直接向台灣里系統以 API 傳送收款明細取得交易單號及支付網址後, 再將繳款人瀏覽器引導至支付網址進行支付.


2.1. 簡易機動付款

      2.1.1. 說明
機動簡易付款方式的使用時機是 商家所使用的網站系統僅具備個別商品定價功能, 沒有訂單交易系統或資料庫以及付款失敗後重新執行付款功能時使用.

使用簡易機動付款的商家, 在商家端系統不需要更動網站架構或程式. 商家只要在網頁或郵件中指定付款的金額及使用模式, 後續的付款及交易資料(付款人,配送資訊) 的填寫和收集動作均可由台灣里端系統完成. 台灣里系統於付款流程完成後, 會即時發送內含交易資料的通知郵件給商家指定的 email 帳戶.

商家端可透過 mode 參數的指定, 使用簡易機動付款的簡易模式或一般模式.
簡易模式透過商家指定的付款要求參數可以立即產生繳款單或繳款說明, 簡化用戶操作.
一般模式則提供完整的付款資訊收集功能, 可以透過付款流程替商家收集付款人消費資訊, 以及彈性選擇希望使用的付款方式.



      2.1.2. 流程循序圖
簡易機動付款循序圖


      2.1.3. 介面及參數

付款介面
名稱 簡易機動付款介面
網址 https://www.twv.com.tw/openpay/pay_direct.php
版本 2.1
說明 消費者於商家端系統確定交易金額後, 商家端系統將消費者瀏灠器導向台灣里付款閘道處執行付款授權, 台灣里付款閘道於消費者執行付款後, 發送通知郵件給商家指定的 E-mail.
傳入參數說明
運作
方式
商家交易系統經消費者瀏灠器以 GET 或 POST 方式, 將參數傳至台灣里付款閘道端執行付款功能.
參數 參數名稱 格式 必要性 參數說明
mid string(15) 台灣里商家編號
台灣里給定的商家編號.
amount integer 付款金額
指定此參數, OpenPay 將會依傳入金額向消費者收取同額新台幣款項.
若不指定此參數, 系統將會顯示付款金額輸入頁面, 提供付款人自行填入付款金額.

註1: 金額須為大於 0 元之整數值.
註2: 信用卡付款金額最低 100 元.
註3: 超商條碼 / 7-11 ibon / 全家 FamiPort / 萊爾富 LifeET 付款金額最低 30 元, 最高 20000 元.
txid string(31) 商家訂單編號
商家端產生的交易序號.
交易序號可以是商家端的訂單編號或付款人的識別編號, 用來區分不同付款.
若不傳入系統會自動指定隨機數字為序號.
mode integer 付款模式
指定此參數, 系統將依參數內容套用簡易模式及一般模式流程.
允許值 [1,2], 預設值[1].
1:一般模式, 2:簡易模式.

註1: 使用簡易模式需同時指定 select_paymethod 參數.
select_paymethod integer 限定使用付款方式
指定此參數, 則消費者於 OpenPay 的付款僅可使用此參數中的支付方式付款.
允許值 [1,2,4,8,9,12,13,14,16,17,19], 無預設值.
1:信用卡, 2:虛擬帳號, 4:WebATM, 8:便利超商, 9:7-11 ibon, 12:全家 FamiPort, 13:支付寶, 14:財付通, 16:7-11取貨付款, 17:銀聯卡, 19:萊爾富 LifeET.

註1: 可單選或複選支付方式, 複選時以逗號(,)分隔 (例: select_paymethod=1,17 時當次支付僅接受信用卡及銀聯卡付款).
註2: 併用簡易模式 mode=2 參數後, 僅可單選使用 [2,8,9,12,19] 支付方式.
prefer_paymethod integer 建議付款方式
指定此參數, 則消費者於 OpenPay 的選擇付款方式步驟, 瀏灠器將預先選擇指定付款方式, 省去消費者再次選擇付款方式的麻煩.
允許值 [1,2,4,8,9,12,13,14,16,17,19], 無預設值.
1:信用卡, 2:虛擬帳號, 4:WebATM, 8:便利超商, 9:7-11 ibon, 12:全家 FamiPort, 13:支付寶, 14:財付通, 16:7-11取貨付款, 17:銀聯卡, 19:萊爾富 LifeET.

註1: 本參數僅預設選定指定支付方式, 並非限制消費者只可使用某方式付款.
iid integer 分期付款期數
指定信用卡付款分期期數,
允許值 [0, 3, 6, 12, 24], 0 為不使用分期付款功能, 預設值 [0].
註1: 此參數僅對信用卡付款有效.
charset string(15) 參數傳送編碼
指定付款要求參數所使用編碼, OpenPay 將使用此編碼來解讀商家傳送的資料.
允許值 [BIG5,UTF-8,GB2312], 預設值 [BIG5].
language string(15) 付款網頁建議語系
指定 OpenPay 付款時使用的語系,
允許值 [tchinese,schinese,english], 預設值 [tchinese] .
tchinese:繁體中文, schinese:簡體中文, english:英文.
description string(255) 代收項目簡介
商家端如帶入此參數, OpenPay 將會在付款頁面中顯示此簡介參數, 提供消費者核對該次付款項目及其內容.
若不帶入此參數, 則付款頁面將不顯示代收項目資訊.
description_tchinese string(255) 繁體中文介面代收項目簡介
商家端如帶入此參數, OpenPay 將會在繁體中文付款頁面中顯示此參數, 提供消費者核對該次付款項目及其內容.
若不帶入此參數, 則以 description 參數方式處理.
( 註: 以 charset=GB2312 傳遞參數者, 為避免出現亂碼, 請勿設定此參數. )
description_schinese string(255) 簡體中文介面代收項目簡介
商家端如帶入此參數, OpenPay 將會在簡體中文付款頁面中顯示此參數, 提供消費者核對該次付款項目及其內容.
若不帶入此參數, 則以 description 參數方式處理.
( 註: 以 charset=BIG5 傳遞參數者, 為避免出現亂碼, 請勿設定此參數. )
description_english string(255) 英文介面代收項目簡介
商家端如帶入此參數, OpenPay 將會在英文付款頁面中顯示此參數, 提供消費者核對該次付款項目及其內容.
若不帶入此參數, 則以 description 參數方式處理.
cid string(255) 消費者身分證號
OpenPay 使用身分證號做為台灣地區人士帳號, 如果商家的系統有能力, 可以帶入 OpenPay 方便於登入或註冊會員時避免消費者手動輸入.
cname string(255) 消費者姓名
檢核付款資訊或會員註冊時均需要消費者姓名資料, 商家可帶入消費者資料避免消費者手動輸入.
建議帶入, 提供 OpenPay 比對黑名單.
caddress string(255) 消費者地址
檢核付款資訊或會員註冊時均需要消費者地址資料, 商家可帶入資料避免消費者手動輸入.
建議帶入, 提供 OpenPay 比對黑名單.
ctel string(255) 消費者電話
檢核付款資訊或會員註冊時均需要消費者電話資料, 商家可帶入資料避免消費者手動輸入.
建議帶入, 提供 OpenPay 比對黑名單.
cemail string(255) 消費者電子郵件
檢核付款資訊或會員註冊時均需要消費者電子郵件資料, 商家可帶入資料避免消費者手動輸入.
建議帶入, 提供 OpenPay 比對黑名單.
xtype integer 配送型態
指定此參數可選擇是否讓消費者留存付款交易相關配送資料. 允許值 [1, 2], 無預設值.
1: 不需配送商品付款, 2: 需配送商品付款.
若不傳入本參數, 且 xname/xaddress/xtel 不傳入或皆傳入空值則視為 [1:不需配送商品付款], 否則視為 [2:需配送商品付款].
xname string(255) 收貨人姓名
檢核付款資訊需要收貨人姓名資料, 商家可帶入資料避免消費者手動輸入.
建議帶入, 提供 OpenPay 比對黑名單.
xaddress string(255) 收貨人地址
檢核付款資訊需要收貨人地址資料, 商家可帶入資料避免消費者手動輸入.
建議帶入, 提供 OpenPay 比對黑名單.
xtel string(255) 收貨人電話
檢核付款資訊需要收貨人電話資料, 商家可帶入資料避免消費者手動輸入.
建議帶入, 提供 OpenPay 比對黑名單.
pcsccod_recv_store_id string(6) 7-11 取貨付款收件超商編號
消費者選用 7-11 取貨付款時, 預選的收件超商編號.
商家端可於送出交易前, 讓消費者使用電子地圖預選收件門市,再帶入收件門市編號供台灣里系統開單,
或此欄位空白, 系統將於消費者選擇 7-11 取貨付款同時, 要求消費者選擇收件門市.
欲整合電子地圖服務, 請參照 "7-11 選店服務技術文件" 文件說明.


2.2. 系統整合付款

      2.2.1. 說明

如果商家所使用的網站系統或購物車具備了訂單管理功能, 建議使用系統整合付款方式. 系統整合付款透過付款要求檢查及結果檢查的機制, 可以確保商家送出的付款金額和訂單單號資訊在傳輸中不會遺失或遭到修改. 台灣里系統於付款流程完成後, 會依據付款要求將結果頁導回商家指定網址, 同時系統也會即時發送內含交易資料的通知郵件給商家指定的 email 帳戶.

如果商家需要在付款流程中傳遞自訂參數的話, 可在傳入 return_url 網址參數中以 CGI-GET 方式, 將參數夾帶於回傳位址 return_url 之後 ( 例 http://www.merchant.com/payback.php?name1=value1&name2=value2, 附加 name1=value1 和 name2=value2 參數 ), 台灣里將於回傳商家網頁的 FORM-POST 中, 直接以原傳入 return_url 做為 FORM ACTION 參數, 商家購物車端即可於回傳資料中的 GET 參數區取得自訂參數 ( 前例中的 name1=value1 和 name2=value2 參數 ).
( 參閱附錄中各語言範例 )


      2.2.2. 循序圖

系統整合付款循序圖


      2.2.3. 介面及參數

付款介面
名稱 系統整合付款介面
網址 https://www.twv.com.tw/openpay/pay.php
版本 2.1
說明 消費者於商家端系統確定交易金額後, 商家端系統將消費者瀏灠器導向台灣里付款閘道處執行付款授權, 台灣里付款閘道於消費者執行付款後, 可將直接顯示付款結果或經消費者瀏灠器導向商家指定付款結果頁.
傳入參數說明
運作
方式
商家交易系統經消費者瀏灠器以 GET 或 POST 方式, 將參數傳至台灣里付款閘道端執行付款功能.
參數 參數名稱 格式 必要性 參數說明
version string(15) 付款介面版本
本付款介面的版本編號 [2.1].
mid string(15) 台灣里商家編號
台灣里給定的商家編號.
amount integer 付款金額
金額須為大於 0 之整數. OpenPay 將會依傳入金額向消費者收取同額新台幣款項.

註1: 金額須為大於 0 元之整數值.
註2: 信用卡付款金額最低 100 元.
註3: 超商 / 7-11 ibon / 全家 FamiPort / 萊爾富 LifeET 付款金額最低 30 元, 最高 20000 元.
txid string(31) 商家訂單編號
商家端產生的交易序號.
交易序號可以是商家端的訂單編號, 或是欲進行付款時產生的識別序號, 用來區分不同筆送出至 OpenPay 的付款交易, 若商家於付款時傳入 OpenPay 給定 return_url, 則 OpenPay 將於付款後回傳此序號, 供商家辨識回傳結果屬於何筆交易.
verify string(32) 傳入參數檢查碼
依傳入參數檢查碼運算公式所計算出的傳入參數檢查碼.
用來驗証商家傳入 OpenPay 參數的正確性.
(請參考傳遞參數檢查機制說明)
mode integer 付款模式
指定此參數, 系統將依參數內容套用簡易模式及一般模式流程.
允許值 [1,2], 預設值[1].
1:一般模式, 2:簡易模式.

註1: 使用簡易模式需同時指定 select_paymethod 參數.
select_paymethod integer 限定使用付款方式
指定此參數, 則消費者於 OpenPay 的付款僅可使用此參數中的支付方式付款.
允許值 [1,2,4,8,9,12,13,14,16,17,19], 無預設值.
1:信用卡, 2:虛擬帳號, 4:WebATM, 8:便利超商, 9:7-11 ibon, 12:全家 FamiPort, 13:支付寶, 14:財付通, 16:7-11取貨付款, 17:銀聯卡, 19:萊爾富 LifeET.

註1: 可單選或複選支付方式, 複選時以逗號(,)分隔 (例: select_paymethod=1,17 時當次支付僅接受信用卡及銀聯卡付款).
註2: 併用簡易模式 mode=2 參數後, 僅可單選使用 [2,8,9,12,19] 支付方式.
prefer_paymethod integer 建議付款方式
指定此參數, 則消費者於 OpenPay 的選擇付款方式步驟, 瀏灠器將預先選擇指定付款方式, 省去消費者再次選擇付款方式的麻煩.
允許值 [1,2,4,8,9,12,13,14,16,17,19], 無預設值.
1:信用卡, 2:虛擬帳號, 4:WebATM, 8:便利超商, 9:7-11 ibon, 12:全家 FamiPort, 13:支付寶, 14:財付通, 16:7-11取貨付款, 17:銀聯卡, 19:萊爾富 LifeET.

註1: 本參數僅預設頁面付款方式功能, 並非限制消費者只可使用某方式付款.
iid integer 分期付款期數
指定信用卡付款分期期數,
允許值 [0, 3, 6, 12, 24], 0 為不使用分期付款功能, 預設值 [0].
註1: 此參數僅對信用卡付款有效.
expire_date date 離線付款繳款期限
指定離線付款繳款期限, 支援下列 3 種用法.
1. 不指定或指定內容為空值, 使用商家後台指定的繳款天數設定.
2. 指定日期, 於該日期前皆可繳款, 格式 YYYY-MM-DD (例: 2000-11-22).
3. 指定日期時間, ibon 於該日期該時間前可繳款, FamiPort/萊爾富 LifeET/虛擬帳號/超商繳款 於該日期前皆可繳款, 格式 YYYY-MM-DD HH:II:SS (例: 2000-11-22 11:22:33).
註1: 此參數僅對離線付款方式有效 (ibon/FamiPort/LifeET/虛擬帳號/超商繳款) 有效.
return_url string(255) 回傳網址
指定 OpenPay 付款完成後瀏灠器回傳的網址,
若帶入此參數, 消費者於 OpenPay 付款後, 會藉由瀏灠器以 FORM-POST 方式, 將付款結果回傳至此網址. 商家自訂參數可以在 URL Encode 處理後附加於此參數之後, 例: payback.php?name1=value1&name2=value2
若不帶入此參數,  OpenPay 將由內定的網頁來顯示付款結果.
charset string(15) 參數傳送編碼
指定商家網頁所使用編碼, OpenPay 將使用此編碼來解讀商家傳送的資料.
允許值 [BIG5,UTF-8,GB2312], 預設值 [BIG5].
language string(15) 付款網頁建議語系
指定 OpenPay 付款時使用的語系,
允許值 [tchinese,schinese,english], 預設值 [tchinese] .
tchinese:繁體中文, schinese:簡體中文, english:英文,
description string(255) 代收項目簡介
商家端如帶入此參數, OpenPay 將會在付款頁面中顯示此參數, 提供消費者核對該次付款項目及其內容.
若不帶入此參數, 則付款頁面將不顯示代收項目資訊.
description_tchinese string(255) 繁體中文介面代收項目簡介
商家端如帶入此參數, OpenPay 將會在繁體中文付款頁面中顯示此參數, 提供消費者核對該次付款項目及其內容.
若不帶入此參數, 則以 description 參數方式處理.
( 註: 以 charset=GB2312 傳遞參數者, 為避免出現亂碼, 請勿設定此參數. )
description_schinese string(255) 簡體中文介面代收項目簡介
商家端如帶入此參數, OpenPay 將會在簡體中文付款頁面中顯示此參數, 提供消費者核對該次付款項目及其內容.
若不帶入此參數, 則以 description 參數方式處理.
( 註: 以 charset=BIG5 傳遞參數者, 為避免出現亂碼, 請勿設定此參數. )
description_english string(255) 英文介面代收項目簡介
商家端如帶入此參數, OpenPay 將會在英文付款頁面中顯示此參數, 提供消費者核對該次付款項目及其內容.
若不帶入此參數, 則以 description 參數方式處理.
note string(255) 一般備註欄資訊
商家端如帶入此參數, OpenPay 將自動將此欄資訊指定給未指定備註資訊的各語系付款頁面.
note_tchinese string(255) 繁體中文介面備註資訊
商家端如帶入此參數, OpenPay 將會在繁體中文付款頁面中顯示此預設備註欄資訊, 若不帶入此參數, 則以 note 參數方式處理.
( 註: 以 charset=GB2312 傳遞參數者, 為避免出現亂碼, 請勿設定此參數. )
note_schinese string(255) 簡體中文介面備註資訊
商家端如帶入此參數, OpenPay 將會在簡體中文付款頁面中顯示此預設備註欄資訊, 若不帶入此參數, 則以 note 參數方式處理.
( 註: 以 charset=BIG5 傳遞參數者, 為避免出現亂碼, 請勿設定此參數. )
note_english string(255) 英文介面備註資訊
商家端如帶入此參數, OpenPay 將會在英文付款頁面中顯示此預設備註欄資訊, 若不帶入此參數, 則以 note 參數方式處理.
cart_type string(15) 購物車型號
填入您的購物車軟體名稱及其版本編號.
cid string(255) 消費者身分證號
OpenPay 使用身分證號做為台灣地區人士帳號, 如果商家的系統有能力, 可以帶入 OpenPay 方便於登入或註冊會員時避免消費者手動輸入.
cname string(255) 消費者姓名
檢核付款資訊或會員註冊時均需要消費者姓名資料, 商家可帶入消費者資料避免消費者手動輸入.
建議帶入, 提供 OpenPay 比對黑名單.
caddress string(255) 消費者地址
檢核付款資訊或會員註冊時均需要消費者地址資料, 商家可帶入資料避免消費者手動輸入.
建議帶入, 提供 OpenPay 比對黑名單.
ctel string(255) 消費者電話
檢核付款資訊或會員註冊時均需要消費者電話資料, 商家可帶入資料避免消費者手動輸入.
建議帶入, 提供 OpenPay 比對黑名單.
cemail string(255) 消費者電子郵件
檢核付款資訊或會員註冊時均需要消費者電子郵件資料, 商家可帶入資料避免消費者手動輸入.
建議帶入, 提供 OpenPay 比對黑名單.
xtype integer 配送型態
指定此參數可選擇是否讓消費者留存付款交易相關配送資料. 允許值 [1, 2], 無預設值.
1: 不需配送商品付款, 2: 需配送商品付款.
若不傳入本參數, 且 xname/xaddress/xtel 不傳入或皆傳入空值則視為 [1:不需配送商品付款], 否則視為 [2:需配送商品付款].
xname string(255) 收貨人姓名
檢核付款資訊需要收貨人姓名資料, 商家可帶入資料避免消費者手動輸入.
建議帶入, 提供 OpenPay 比對黑名單.
xaddress string(255) 收貨人地址
檢核付款資訊需要收貨人地址資料, 商家可帶入資料避免消費者手動輸入.
建議帶入, 提供 OpenPay 比對黑名單.
xtel string(255) 收貨人電話
檢核付款資訊需要收貨人電話資料, 商家可帶入資料避免消費者手動輸入.
建議帶入, 提供 OpenPay 比對黑名單.
pcsccod_recv_store_id string(6) 7-11 取貨付款收件超商編號
消費者選用 7-11 取貨付款時, 預選的收件超商編號.
商家端可於送出交易前, 讓消費者使用電子地圖預選收件門市,再帶入收件門市編號供台灣里系統開單,
或此欄位空白, 系統將於消費者選擇 7-11 取貨付款同時, 要求消費者選擇收件門市.
欲整合電子地圖服務, 請參照 "7-11 選店服務技術文件" 文件說明.
is_show_bill_page integer 有設定 return_url 時, 於返回前顯示離線繳款單頁面.
允許值 [0, 1], 預設值:1.
1: 顯示離線繳款單頁面, 2: 不顯示離線繳款單頁面.
若商家於付款要求參數有傳入回傳網址 return_url 欄位,
在消費者選擇離線式繳款(ibon/FamiPort/LifeET/虛擬帳號/超商繳款/7-11 取貨付款) 後返回 return_url 之前, 可啟用或禁用 "顯示離線繳款單頁面" 功能.
回傳參數說明
運作
方式
若付款界面傳入參數中指定回傳網址 (return_url), 則 OpenPay 將以 FORM-POST 方式, 將付款結果以下列參數方式, 透過消費者瀏灠器帶至回傳網址.
參數 參數名稱 格式 必要性 參數說明
txid string(31) 商家訂單編號
傳入 OpenPay 時的交易序號參數(txid).
amount integer 付款金額
傳入 OpenPay 時的付款金額參數(amount).
pay_type integer 付款種類代碼
消費者選擇的付款種類. (請參考回傳付款結果表)
status integer 付款狀態
消費者執行付款後的狀態. (請參考回傳付款結果表)
tid string(15) 付款交易單號
本次付款的交易單號.
verify string(32) 回傳參數檢查碼
依回傳參數檢查碼運算公式所計算出的回傳參數檢查碼.
用來驗証 OpenPay 回傳商家參數的正確性.
(請參考傳遞參數檢查機制說明)
cname string(255) 消費者姓名
檢核修正後的消費者姓名.
caddress string(255) 消費者地址
檢核修正後的消費者地址.
ctel string(255) 消費者電話
檢核修正後的消費者電話.
cemail string(255) 消費者電子郵件
檢核修正後的消費者電子郵件.
xname string(255) 收貨人姓名
檢核修正後的收貨人姓名.
xaddress string(255) 收貨人地址
檢核修正後的收貨人地址.
xtel string(255) 收貨人電話
檢核修正後的收貨人電話.
error_code integer 付款授權失敗代碼
付款失敗代碼 (保留將來使用)
error_desc string(255) 付款授權失敗原因
付款失敗原因(UTF-8 編碼) (請參考回傳付款結果表)
ccard_no string(16) 信用卡卡號
信用卡授權成功時回傳遮碼卡號.
auth_code string(7) 信用卡授權成功授權碼
信用卡付款授權成功交易之授權碼.
expire_date string(10) 離線式繳費的繳費日期限
選擇離線式繳費時, 消費者繳費的最後期限(例:2001-01-05 為期限當日23:59:59).
expire_time string(19) 離線式繳費的繳費時間期限
選擇離線式繳費時, 消費者繳費的最後期限(例:2001-01-05 17:59:59).
account_no string(31) 虛擬帳號付款轉帳帳號
選擇虛擬帳號付款時, 消費者的銷帳轉帳帳號 (例: 808-12345678901234).
bill_no string(14) 全家 FamiPort/萊爾富 LifeET 繳費單號
選擇全家 FamiPort/萊爾富 LifeET 收款時, 消費者需輸入代碼繳費的繳費單號.
cstore_barcode1 string(9) 超商條碼繳費的第一段條碼
選擇超商條碼繳費時, 第一段條碼的條碼內容. (例:061125619)
cstore_barcode2 string(16) 超商條碼繳費的第二段條碼
選擇超商條碼繳費時, 第二段條碼的條碼內容. (例:9528711250586899)
cstore_barcode3 string(15) 超商條碼繳費的第三段條碼
選擇超商條碼繳費時, 第三段條碼的條碼內容. (例:112599000000100)
fami_bill_no string(14) FamiPort 繳費單號
選擇 FamiPort 繳費時, 於機台拉單時輸入的單號. (例:TW200101011234)
lifeet_bill_no string(15) 萊爾富 LifeET 繳費單號
選擇萊爾富 LifeET 繳費時, 於機台拉單時輸入的單號. (例:TWV200101011234)
ibon_bill_no string(14) ibon 繳費單號
選擇 ibon 繳費時, 於機台拉單時輸入的單號. (例:200101011234)
vac_bank_code string(3) 銀行轉帳轉入銀行代碼
選擇虛擬帳號轉帳繳費時, 付款轉入的銀行代碼 (例:808).
vac_ac_no string(16) 銀行轉帳轉入銀行帳號
選擇虛擬帳號轉帳繳費時, 付款轉入的銀行帳號 (例:9500312345678901).
pcsccod_send_expire_date string(10) 7-11 取貨付款寄件截止日
選擇 7-11 取貨付款時, 商家寄出物件的最後截止日期 (例:2001-01-10).
pcsccod_transport_no string(12) 7-11 取貨付款服務代碼
選擇 7-11 取貨付款時, 交貨便服務開單成功及後續追蹤的服務代碼 (例:F12345671234).
pcsccod_recv_store_id string(6) 7-11 取貨付款取件門市代號
選擇 7-11 取貨付款時, 消費者選擇的取件門市代號. (例:123456)
pcsccod_recv_store_name string(20) 7-11 取貨付款取件門市名稱
選擇 7-11 取貨付款時, 消費者選擇的取件門市名稱. (例:中正門市)
pcsccod_recv_store_address string(6) 7-11 取貨付款取件門市地址
選擇 7-11 取貨付款時, 消費者選擇的取件門市地址. (例:台北市東區中正路10000001號)


      2.2.4. 傳遞參數檢查機制說明

    商家網站與 OpenPay 間的付款參數傳遞動作(傳入/回傳), 由於資料是經由瀏灠器轉送, 不是直接互連傳遞, 所以有可能在傳遞過程中被修改, 造成資訊失真的問題. 為解決此問題, OpenPay 在傳遞的參數中加入檢查碼機制, 透過對資料欄位的訊息摘要(message digest), 確保資料欄位的正確性.

    OpanPay 目前採用的訊息摘要演算法為 MD5 (rfc1321), MD5 演算法會對被摘要訊息產生 128-bits 的摘要值, 為了避免 Web CGI 方式傳遞出現問題, 請先將摘要值以 16 進位轉碼[0-9,a-f] 處理後, 即可得到 OpenPay 用來驗証參數的檢查碼. 舉例來說, 如果被摘要訊息是 "ABCD" (長度為 4 字元的字串), 則應得到摘要值 "cb08ca4a7bb5f9683c19133a84872ca7" (長度為 32 個字元的字串). (不同程式語言範例, 請參考附錄).

    在被摘要訊息的決定方面, 因為傳入 OpenPay 和回傳商家網站的參數不同, 所以各有不同的決定方式. 在傳入 OpenPay 時, 被摘要訊息將是 (參數檢查碼1,mid,txid,amount,參數檢查碼2) 此 5 個參數依順序以 "|' 為分隔字元相連接所組成. 在回傳商家網站時, 被摘要訊息將是 (參數檢查碼1,txid,amount,pay_type,status,tid,參數檢查碼2) 此 7 個參數依順序以 "|' 為分隔字元相連接所組成. (參數檢查碼1,2 可登入特店管理系統查詢). 舉例來說, 若傳入參數為

參數檢查碼1=2efdd6e617bc0114866c89e911a4e3de
mid=TEST
txid=222222
amount=3
參數檢查碼2=6d4b111610073f9c1105d3f852a3d039

被摘要訊息(message)應為

  message =   2efdd6e617bc0114866c89e911a4e3de|TEST|222222|3|6d4b111610073f9c1105d3f852a3d039

(長度為 79 字元的字串), 而摘要值(verify)應為長度為 32 個字元的字串

  verify =   2724e27fa576dcff1ef047018c6f2ccd


  若傳入 OpenPay 的參數經檢查機制驗証後發現不符, OpenPay 將拒絕付款繼續進行, 在回傳商家網站時, OpenPay 會檢附回傳參數檢查碼, 若商家網站經檢查機制驗証後發現不符, 也應視為不合法交易.

  參數檢查機制僅是排除參數錯誤和參數遭修改的保障機制, 實際付款金額及狀態, 得以特店管理系統資料為準.


傳入參數檢查明細表
傳入參數檢查明細表
傳入參數 參數名稱 參數值
參數檢查碼1 2efdd6e617bc0114866c89e911a4e3de
(請進入特店管理系統->商家資料處取得)
商家編號(mid) TEST
商家訂單編號(txid) 222222
付款金額(amount) 3
參數檢查碼2 6d4b111610073f9c1105d3f852a3d039
(請進入特店管理系統->商家資料處取得)
被摘要
訊息
(message)
2efdd6e617bc0114866c89e911a4e3de|TEST|222222|3|6d4b111610073f9c1105d3f852a3d039
(請注意需加入 | 號分隔字元)
摘要值
(verify)
2724e27fa576dcff1ef047018c6f2ccd
回傳參數檢查明細表
回傳參數 參數名稱 參數值
參數檢查碼1 2efdd6e617bc0114866c89e911a4e3de
(請進入特店管理系統->商家資料處取得)
商家訂單編號(txid) 222222
付款金額(amount) 3
付款方式(pay_type) 1
付款狀態(status) 1
交易單號(tid) 200501011234
參數檢查碼2 6d4b111610073f9c1105d3f852a3d039
(請進入特店管理系統->商家資料處取得)
被摘要
訊息
(message)
2efdd6e617bc0114866c89e911a4e3de|222222|3|1|1|200501011234|6d4b111610073f9c1105d3f852a3d039
(請注意需加入 | 號分隔字元)
摘要值
(verify)
0e2965539eedf17e058594eae141b50c



2.3. 系統取單付款

      2.3.1. 說明
商家網站在有離線付款 (7-11 ibon, 全家 famiport,萊爾富 LifeET,超商,虛擬帳號) 需求時, 可使用系統取單付款功能, 直接由商家伺服器連線台灣里付款閘道, 送出付款要求取得離線繳款資料.
台灣里於消費者繳款入帳後, 將直接通知商家款項已到帳.

注意事項1: 使用本功能前, 需於台灣里商家的管理後台 [其他項目管理] -> [付款設定], 指定發送 API 要求的 IP 位址, 非源自指定 IP 位址的查詢要求, API 將傳回狀態失敗.


      2.3.2. 流程循序圖
系統取單付款循序圖


      2.3.3. 介面及參數

付款介面
名稱 系統取單付款介面
網址 https://www.twv.com.tw/openpay/m/pay_srv2srv_cgi161.php
說明 商家端系統確定付款金額後, 透過 HTTP Post 方式 向台灣里付款閘道開單取得離線繳款資訊.
台灣里於入帳後, 傳送入帳通知至商家指定網址, 且發送通知郵件給商家指定的 E-mail.
傳入參數說明
運作
方式
商家交易系統直接以 HTTP Post 方式, 將參數傳至台灣里付款閘道端執行開單功能.
參數 參數名稱 格式 必要性 參數說明
mid string(15) 商家編號
台灣里給定的商家編號.
access_key string(15) 存取密碼
台灣里給定的 API 存取通行碼.
txid string(31) 商家訂單編號
商家端的交易序號, 必填欄位, 用來識別商家送出的不同付款要求.
此欄位值在 100 天內不得重覆.
amount integer 付款金額
OpenPay 將會依傳入金額向消費者收取同額新台幣款項.
使用不同付款方式將會扣除不同數額之交易手續費用.
註1: 金額須為大於 0 元之整數值.
expire_date date 離線付款繳款期限
指定離線付款繳款期限, 支援下列 3 種用法.
1. 不指定或指定內容為空值, 使用商家後台指定的繳款天數來決定.
2. 指定日期, 於該日期前皆可繳款, 格式 YYYY-MM-DD (例: 2000-11-22).
3. 指定日期時間, ibon 於該日期該時間前可繳款, FamiPort/LifeET/虛擬帳號/超商繳款 於該日期前皆可繳款, 格式 YYYY-MM-DD HH:II:SS (例: 2000-11-22 11:22:33).
註1: 此參數僅對離線付款方式有效 (ibon/FamiPort/LifeET/虛擬帳號/超商繳款) 有效.
is_cstore integer 本筆付款是否啟用超商繳款
傳入 1 時, OpenPay 系統將會對此筆付款啟用超商繳款功能.
傳入 0 時, OpenPay 系統將不會對此筆付款提供超商繳款功能.

註1: 超商繳款金額最低 30 元, 最高 20000 元.
is_fami integer 本筆付款是否啟用全家 FamiPort 繳款
傳入 1 時, OpenPay 系統將會對此筆付款啟用全家 FamiPort 繳款功能.
傳入 0 時, OpenPay 系統將不會對此筆付款提供全家 FamiPort 繳款功能.

註1: 全家 FamiPort 繳款金額最低 30 元, 最高 20000 元.
is_lifeet integer 本筆付款是否啟用萊爾富 LifeET 繳款
傳入 1 時, OpenPay 系統將會對此筆付款啟用萊爾富 LifeET 繳款功能.
傳入 0 時, OpenPay 系統將不會對此筆付款提供萊爾富 LifeET 繳款功能.

註1: 萊爾富 LifeET 繳款金額最低 30 元, 最高 20000 元.
is_ibon integer 本筆付款是否啟用 7-11 ibon 繳款
傳入 1 時, OpenPay 系統將會對此筆付款啟用 7-11 ibon 繳款功能.
傳入 0 時, OpenPay 系統將不會對此筆付款提供 7-11 ibon 繳款功能.

註1: 7-11 ibon 繳款金額最低 30 元, 最高 20000 元.
is_pcsccod integer 本筆付款是否啟用 7-11 取貨付款
傳入 1 時, OpenPay 系統將會對此筆付款啟用 7-11 取貨付款功能.
傳入 0 時, OpenPay 系統將不會對此筆付款提供 7-11 取貨付款功能.
啟用 7-11 取貨付款時, 必需同時給定取件人姓名(xname), 取件人手機號碼(xtel), 取件門市編號(pcsccod_recv_store_id) 欄位. 註1: 虛擬帳號繳款金額最低 30 元, 最高 19999 元.
is_vaccount integer 本筆付款單是否啟用虛擬帳號繳款
傳入 1 時, OpenPay 系統將會對此筆付款啟用虛擬帳號繳款功能.
傳入 0 時, OpenPay 系統將不會對此筆付款提供虛擬帳號繳款功能.
註1: 虛擬帳號繳款金額最低 10 元, 最高 30000 元.
encoding string(15) 參數傳送編碼
指定付款要求參數所使用編碼, OpenPay 將使用此編碼來解讀商家傳送的資料.
允許值 [BIG5,UTF-8], 預設值 [BIG5].
description string(255) 代收項目簡介
若帶入此參數, OpenPay 將會在付款時顯示欄位內容供繳款人核對.
若不帶入此參數, 則付款頁面將不顯示代收項目資訊.
cname string(30) 消費者姓名.
caddress string(255) 消費者地址.
ctel string(255) 消費者電話.
xname string(30) 收件人姓名.
xtel string(20) 收件人電話.
pcsccod_recv_store_id string(6) 收件門市編號.
回傳參數說明
運作
方式
回傳參數以 JSON 編碼方式, 回應執行結果至 HTTP Response body 中.
( 例: {"status":12,"tid":null,"txid":null,"amount":null,"expire_date":null} )
參數 參數名稱 格式 必要性 參數說明
status integer 回傳狀態
付款要求的執行結果回傳結果狀態 (狀態定義表).
tid string(15) 付款交易單號
本次付款的交易單號.
txid string(31) 商家訂單編號
傳入 OpenPay 時的商家訂單編號(txid), 或 OpenPay 自動指定之 txid.
amount integer 付款金額
傳入 OpenPay 時的付款金額參數(amount).
expire_date date 繳款截止日
ibon_tid string(15) 7-11 ibon 付款用的繳費單號
fami_bill_no string(14) 全家 FamiPort 付款用的繳費單號
lifeet_bill_no string(15) 萊爾富 LifeET 付款用的繳費單號
vaccount_bank_code string(3) 虛擬帳號收款銀行碼
vaccount_account_no string(16) 虛擬帳號收款帳號
cstore_barcode1 string(9) 超商繳費條碼1
cstore_barcode2 string(16) 超商繳費條碼2
cstore_barcode3 string(15) 超商繳費條碼3
pcsccod_send_expire_date date 7-11 取貨付款送件截止日
pcsccod_transport_no string(12) 7-11 取貨付款服務代碼
pcsccod_recv_store_id string(6) 7-11 取貨付款取件門市編號
pcsccod_recv_store_name string(30) 7-11 取貨付款取件門市名稱
pcsccod_recv_store_address string(255) 7-11 取貨付款取件門市地址


回傳付款結果表
回傳值 說明
1 操作成功
11 系統內部錯誤
12 拒絕存取此功能操作
13 存取密碼錯誤
14 非 CGI-POST API 要求
15 特店開單功能關閉中
101 超過金額大小限制錯誤
102 選擇付款方式不支援
103 商家訂單編號重覆
104 繳費期限格式有誤
201 7-11 取貨付款收件人姓名檢核有誤
202 7-11 取貨付款收件人手機號碼檢核有誤
203 7-11 取貨付款收件門市號碼檢核有誤
204 7-11 取貨付款通路要號失敗



2.4. 系統建檔付款

      2.4.1. 說明
商家網站在有線上及離線收款需求時, 可使用此功能, 直接由商家伺服器透過 API 向台灣里付款閘道傳遞收款參數建立代收交易, 預先取得交易單號及支付網址, 再將消費者引導至支付網址進行線上或離線支付.
台灣里於消費者繳款入帳後, 將直接通知商家款項已到帳.

注意事項1: 使用本功能前, 需於台灣里商家的管理後台 [其他項目管理] -> [付款設定], 指定發送 API 要求的 IP 位址, 非源自指定 IP 位址的查詢要求, API 將傳回狀態失敗.


      2.4.2. 流程循序圖
系統建檔付款循序圖

      2.4.3. 介面及參數

付款介面
名稱 系統建檔付款介面
網址 https://www.twv.com.tw/openpay/m/api_pay_book.php
說明 商家端系統確定付款金額後, 透過 HTTP Post 方式 向台灣里付款閘道開單建檔取得交易單號及支付網址等資訊.
開單建檔完成後,將消費者引導至支付網址進行支付動作.
台灣里於支付完成入帳後, 傳送入帳通知至商家指定網址, 且發送通知郵件給商家指定的 E-mail.
傳入參數說明
運作
方式
1.商家交易系統直接以 HTTP Post 方式, 將參數傳至台灣里付款閘道端執行開單建檔功能.
2.傳入及回傳參數僅接受UTF-8編碼格式.
參數 參數名稱 格式 必要性 參數說明
mid string(15) 商家編號
台灣里給定的商家編號.
access_key string(15) 存取密碼
台灣里給定的 API 存取通行碼.
amount integer 付款金額
金額須為大於 0 之整數. OpenPay 將會依傳入金額向消費者收取同額新台幣款項.

註1: 金額須為大於 0 元之整數值.
註2: 信用卡付款金額最低 100 元.
註3: 超商 / 7-11 ibon / 全家 FamiPort / 萊爾富 LifeET 付款金額最低 30 元, 最高 20000 元.
txid string(31) 商家訂單編號
商家端產生的交易序號.
交易序號可以是商家端的訂單編號, 或是欲進行付款時產生的識別序號, 用來區分不同筆送出至 OpenPay 的付款交易, 若商家於付款時傳入 OpenPay 給定 return_url, 則 OpenPay 將於付款後回傳此序號, 供商家辨識回傳結果屬於何筆交易.
mode integer 付款模式
指定此參數, 系統將依參數內容套用簡易模式及一般模式流程.
允許值 [1,2], 預設值[1].
1:一般模式, 2:簡易模式.

註1: 使用簡易模式需同時指定 select_paymethod 參數.
select_paymethod integer 限定使用付款方式
指定此參數, 則消費者於 OpenPay 的付款僅可使用此參數中的支付方式付款.
允許值 [1,2,4,8,9,12,13,14,16,17,19], 無預設值.
1:信用卡, 2:虛擬帳號, 4:WebATM, 8:便利超商, 9:7-11 ibon, 12:全家 FamiPort, 13:支付寶, 14:財付通, 16:7-11取貨付款, 17:銀聯卡, 19:萊爾富 LifeET.

註1: 可單選或複選支付方式, 複選時以逗號(,)分隔 (例: select_paymethod=1,17 時當次支付僅接受信用卡及銀聯卡付款).
註2: 併用簡易模式 mode=2 參數後, 僅可單選使用 [2,8,9,12,19] 支付方式.
prefer_paymethod integer 建議付款方式
指定此參數, 則消費者於 OpenPay 的選擇付款方式步驟, 瀏灠器將預先選擇指定付款方式, 省去消費者再次選擇付款方式的麻煩.
允許值 [1,2,4,8,9,12,13,14,16,17,19], 無預設值.
1:信用卡, 2:虛擬帳號, 4:WebATM, 8:便利超商, 9:7-11 ibon, 12:全家 FamiPort, 13:支付寶, 14:財付通, 16:7-11取貨付款, 17:銀聯卡, 19:萊爾富 LifeET.

註1: 本參數僅預設頁面付款方式功能, 並非限制消費者只可使用某方式付款.
iid integer 分期付款期數
指定信用卡付款分期期數,
允許值 [0, 3, 6, 12, 24], 0 為不使用分期付款功能, 預設值 [0].
註1: 此參數僅對信用卡付款有效.
expire_date date 離線付款繳款期限
指定離線付款繳款期限, 支援下列 3 種用法.
1. 不指定或指定內容為空值, 使用商家後台指定的繳款天數設定.
2. 指定日期, 於該日期前皆可繳款, 格式 YYYY-MM-DD (例: 2000-11-22).
3. 指定日期時間, ibon 於該日期該時間前可繳款, FamiPort/萊爾富 LifeET/虛擬帳號/超商繳款 於該日期前皆可繳款, 格式 YYYY-MM-DD HH:II:SS (例: 2000-11-22 11:22:33).
註1: 此參數僅對離線付款方式有效 (ibon/FamiPort/LifeET/虛擬帳號/超商繳款) 有效.
return_url string(255) 回傳網址
指定 OpenPay 付款完成後瀏灠器回傳的網址,
若帶入此參數, 消費者於 OpenPay 付款後, 會藉由瀏灠器以 FORM-POST 方式, 將付款結果回傳至此網址. 商家自訂參數可以在 URL Encode 處理後附加於此參數之後, 例: payback.php?name1=value1&name2=value2
若不帶入此參數,  OpenPay 將由內定的網頁來顯示付款結果.
language string(15) 付款網頁建議語系
指定 OpenPay 付款時使用的語系,
允許值 [tchinese,schinese,english], 預設值 [tchinese] .
tchinese:繁體中文, schinese:簡體中文, english:英文,
description string(255) 代收項目簡介
商家端如帶入此參數, OpenPay 將會在付款頁面中顯示此參數, 提供消費者核對該次付款項目及其內容.
若不帶入此參數, 則付款頁面將不顯示代收項目資訊.
description_tchinese string(255) 繁體中文介面代收項目簡介
商家端如帶入此參數, OpenPay 將會在繁體中文付款頁面中顯示此參數, 提供消費者核對該次付款項目及其內容.
若不帶入此參數, 則以 description 參數方式處理.
description_schinese string(255) 簡體中文介面代收項目簡介
商家端如帶入此參數, OpenPay 將會在簡體中文付款頁面中顯示此參數, 提供消費者核對該次付款項目及其內容.
若不帶入此參數, 則以 description 參數方式處理.
description_english string(255) 英文介面代收項目簡介
商家端如帶入此參數, OpenPay 將會在英文付款頁面中顯示此參數, 提供消費者核對該次付款項目及其內容.
若不帶入此參數, 則以 description 參數方式處理.
note string(255) 一般備註欄資訊
商家端如帶入此參數, OpenPay 將自動將此欄資訊指定給未指定備註資訊的各語系付款頁面.
note_tchinese string(255) 繁體中文介面備註資訊
商家端如帶入此參數, OpenPay 將會在繁體中文付款頁面中顯示此預設備註欄資訊, 若不帶入此參數, 則以 note 參數方式處理.
note_schinese string(255) 簡體中文介面備註資訊
商家端如帶入此參數, OpenPay 將會在簡體中文付款頁面中顯示此預設備註欄資訊, 若不帶入此參數, 則以 note 參數方式處理.
note_english string(255) 英文介面備註資訊
商家端如帶入此參數, OpenPay 將會在英文付款頁面中顯示此預設備註欄資訊, 若不帶入此參數, 則以 note 參數方式處理.
cart_type string(15) 購物車型號
填入您的購物車軟體名稱及其版本編號.
cid string(255) 消費者身分證號
OpenPay 使用身分證號做為台灣地區人士帳號, 如果商家的系統有能力, 可以帶入 OpenPay 方便於登入或註冊會員時避免消費者手動輸入.
cname string(255) 消費者姓名
檢核付款資訊或會員註冊時均需要消費者姓名資料, 商家可帶入消費者資料避免消費者手動輸入.
建議帶入, 提供 OpenPay 比對黑名單.
caddress string(255) 消費者地址
檢核付款資訊或會員註冊時均需要消費者地址資料, 商家可帶入資料避免消費者手動輸入.
建議帶入, 提供 OpenPay 比對黑名單.
ctel string(255) 消費者電話
檢核付款資訊或會員註冊時均需要消費者電話資料, 商家可帶入資料避免消費者手動輸入.
建議帶入, 提供 OpenPay 比對黑名單.
cemail string(255) 消費者電子郵件
檢核付款資訊或會員註冊時均需要消費者電子郵件資料, 商家可帶入資料避免消費者手動輸入.
建議帶入, 提供 OpenPay 比對黑名單.
xtype integer 配送型態
指定此參數可選擇是否讓消費者留存付款交易相關配送資料. 允許值 [1, 2], 無預設值.
1: 不需配送商品付款, 2: 需配送商品付款.
若不傳入本參數, 且 xname/xaddress/xtel 不傳入或皆傳入空值則視為 [1:不需配送商品付款], 否則視為 [2:需配送商品付款].
xname string(255) 收貨人姓名
檢核付款資訊需要收貨人姓名資料, 商家可帶入資料避免消費者手動輸入.
建議帶入, 提供 OpenPay 比對黑名單.
xaddress string(255) 收貨人地址
檢核付款資訊需要收貨人地址資料, 商家可帶入資料避免消費者手動輸入.
建議帶入, 提供 OpenPay 比對黑名單.
xtel string(255) 收貨人電話
檢核付款資訊需要收貨人電話資料, 商家可帶入資料避免消費者手動輸入.
建議帶入, 提供 OpenPay 比對黑名單.
pcsccod_recv_store_id string(6) 7-11 取貨付款收件超商編號
消費者選用 7-11 取貨付款時, 預選的收件超商編號.
商家端可於送出交易前, 讓消費者使用電子地圖預選收件門市,再帶入收件門市編號供台灣里系統開單,
或此欄位空白, 系統將於消費者選擇 7-11 取貨付款同時, 要求消費者選擇收件門市.
欲整合電子地圖服務, 請參照 "7-11 選店服務技術文件" 文件說明.
is_show_bill_page integer 有設定 return_url 時, 於返回前顯示離線繳款單頁面.
允許值 [0, 1], 預設值:1.
1: 顯示離線繳款單頁面, 2: 不顯示離線繳款單頁面.
若商家於付款要求參數有傳入回傳網址 return_url 欄位,
在消費者選擇離線式繳款(ibon/FamiPort/LifeET/虛擬帳號/超商繳款/7-11 取貨付款) 後返回 return_url 之前, 可啟用或禁用 "顯示離線繳款單頁面" 功能.
回傳參數說明
運作
方式
回傳參數以 JSON 編碼方式, 回應執行結果至 HTTP Response body 中.
例: {"status":11,"message":"\u958b\u55ae\u6210\u529f","tid":"202301011234","pay_url":"https:\/\/www.twv.com.tw\/openpay\/pay_book.php?bid=202301011234_1fd56c92"}
參數 參數名稱 格式 必要性 參數說明
status integer 回傳狀態
付款要求的執行結果回傳結果狀態 (回傳狀態表).
message string(255) 回傳狀態
付款要求的執行結果回傳結果狀態 (回傳狀態表).
tid string(15) 付款交易單號
本次付款的交易單號.
pay_url string(90) 付款網址
執行支付的台灣里網址, 收到後請將消費者引導至此網址進行支付.


回傳狀態表
回傳值說明
2開單成功
11非 POST Method
12特店編號或API存取密碼錯誤
13來源IP位址不在API允許清單中
14特店開單功能關閉中



2.5. 付款等待通知

      2.5.1. 說明
若商家於 [台灣里後台] 有指定 [付款等待 Web 通知網址], 當用戶使用離線付款開完單, 交易單狀態處於 [付款等待] 時, 台灣里系統會即時通知商家提供的 [付款等待 Web 通知網址] 相關的離線付款資訊. 以免消費者因操作或網路因素沒有回到商家網站同步交易資訊.

請注意
1. OSC, TWE-Commerce, ECSHOP, XTC, Zen Cart 等 OpenSource 購物車因架構關係, 無法支援付款等待通知功能.
2. 付款等待 Web 通知為 [台灣里系統] 直接通知 [商家系統], 過程中沒有 [消費者瀏覽器] 參與運作, 無法取得 [消費者瀏覽器] 與 [商家系統] 間的 session 資訊.
3. 收到付款等待通知代表開單完成, 非付款完成, 若需接收付款完成通知, 請導入 付款入帳通知 功能.


      2.5.2. 介面及參數

付款介面
名稱 付款等待 Web 通知
網址 商家於系統後台定義的 [付款等待 Web 通知網址].
說明 若商家在 [台灣里後台] 有定義 [付款等待 Web 通知網址], 在消費者離線付款開完單之後, 系統會由 [台灣里伺服器], 以 GET 或 POST 方式直接對該網址發送 [付款等待通知資訊].
若商家端 [付款等待 Web 通知網址] 程式一時無法連線或不正常回應時, 商家可啟用 [錯誤重送] 功能, 台灣里會在傳送失敗時, 依指定的時間區隔自動重送通知.
傳入參數說明
運作
方式
系統在離線付款開單完成後, 以 [台灣里商家後台] 設定的 GET or POST 方式 , 將以下交易資訊直接通知 商家端指定的接收 URL.
參數 參數名稱 格式 必要性 參數說明
access_key string(15) 存取密碼
台灣里給定的 API 存取通行碼.
txid string(31) 商家訂單編號
商家端產生的交易序號, 或空值時台灣里即時指定的訂單編號.
amount integer 付款金額
付款入帳金額.
pay_type integer 付款種類代碼
消費者選擇的付款種類. (請參考回傳付款結果表)
status integer 付款狀態
消費者執行付款後的狀態. (請參考回傳付款結果表)
tid string(15) 付款交易單號
本次付款的交易單號.
verify string(32) 回傳參數檢查碼
依回傳參數檢查碼運算公式所計算出的回傳參數檢查碼.
用來驗証 OpenPay 回傳商家參數的正確性.
(請參考傳遞參數檢查機制說明)
cname string(255) 消費者姓名.
caddress string(255) 消費者地址.
ctel string(255) 消費者電話.
xname string(255) 收貨人姓名.
xaddress string(255) 收貨人地址.
xtel string(255) 收貨人電話.
bill_url string(255) 繳費說明頁面網址
台灣里提供的離線繳費說明頁面網址.
expire_date string(15) 繳費期限
本離線繳款單的繳費期限, 逾期無效.
7-11 取貨付款不適用此參數.
cstore_bar_code1 string(9) 超商條碼繳款 - 第一段條碼
使用超商條碼繳款時, 使用的第一段條碼.
cstore_bar_code2 string(16) 超商條碼繳款 - 第二段條碼
使用超商條碼繳款時, 使用的第二段條碼.
cstore_bar_code3 string(15) 超商條碼繳款 - 第三段條碼
使用超商條碼繳款時, 使用的第三段條碼.
fami_bill_no string(14) FamiPort 繳費單號
使用 FamiPort 繳費時, 代碼繳費拉單時所需的繳費單號.
lifeet_bill_no string(15) 萊爾富 LifeET 繳費單號
使用萊爾富 LifeET 繳費時, 代碼繳費拉單時所需的繳費單號.
ibon_tid string(15) ibon 繳費單號
使用 7-11 ibon 繳費時, 拉單時需輸入的繳費交易單號.
vac_bank_code string(3) ATM 轉帳銀行代碼
使用 ATM 轉帳時, 需填入的收款銀行代碼.
vac_ac_no string(16) ATM 轉帳帳號代碼
使用 ATM 轉帳時, 需填入的收款帳號代碼.
pcsccod_send_expire_date string(10) 7-11 取貨付款交寄期限
7-11 取貨付款需於開單後 7 日交件配送, 逾期交易無效.
pcsccod_transport_no string(12) 7-11 取貨付款交寄單號
7-11 取貨付款開單後, 用來拉單列印交寄單的識別號碼.
pcsccod_recv_store_id string(6) 7-11 取貨付款取件門市編號
7-11 取貨付款開單後, 商品配送到消費者收件門市的門市代號.
pcsccod_recv_store_name string(30) 7-11 取貨取件門市店名
7-11 取貨付款開單後, 商品配送到消費者收件門市的門市店名.
pcsccod_recv_store_address string(255) 7-11 取貨取件門市地址
7-11 取貨付款開單後, 商品配送到消費者收件門市的門市地址.
回傳說明
運作
方式
等待收到通知者, 請於 HTTP Response Content 中輸出 OK 兩字元. 連線失敗或回應不包含 OK 兩字元均視為通知失敗, 依需要進行重試程序.
接收成功
HTTP/1.1 200 OK
Date: Thu, 24 Sep 2009 04:22:10 GMT
Server: Apache
Content-Type: text/html

OK
接收失敗
HTTP/1.1 200 OK
Date: Thu, 24 Sep 2009 04:22:10 GMT
Server: Apache
Content-Type: text/html

INTERNAL ERROR



2.6. 付款入帳通知

      2.6.1. 說明
若商家於後台有提供 [付款入帳 Web 通知網址], 當用戶使用線上付款或離線付款付款成功時, 台灣里系統會即時通知商家提供的 [付款入帳 Web 通知網址].

請注意
1. OSC, TWE-Commerce, ECSHOP, XTC, Zen Cart 等 OpenSource 購物車因架構關係, 無法支援付款入帳通知功能.
2. 付款入帳通知方式為 [台灣里系統] 直接通知 [商家系統], 沒有 [消費者瀏覽器] 參與運作, 無法取得 [消費者瀏覽器] 與 [商家系統] 間的 session 資訊.


      2.6.2. 介面及參數

付款介面
名稱 付款入帳通知
網址 商家於系統後台定義的 [付款入帳 Web 通知網址].
說明 若商家有在後台定義相關付款入帳通知網址, 消費者付款入帳之後, 由台灣里付款伺服器, 以 GET/POST 方式直接對付款入帳 Web 通知網址發送付款入帳通知. 若商家端 [付款入帳 Web 通知網址] 程式無法連線或不正常回應時, 台灣里端系統會在指定重試次數內自動重送通知.
傳入參數說明
運作
方式
系統在付款入帳完成後, 以 [台灣里商家後台] 設定的 GET or POST 方式 , 將以下交易資訊直接通知 商家端指定的接收 URL.
參數 參數名稱 格式 必要性 參數說明
access_key string(15) 存取密碼
台灣里給定的 API 存取通行碼.
txid string(31) 商家訂單編號
商家端產生的交易序號, 或空值時台灣里即時指定的訂單編號.
amount integer 付款金額
付款入帳金額.
pay_type integer 付款種類代碼
消費者選擇的付款種類. (請參考回傳付款結果表)
status integer 付款狀態
消費者執行付款後的狀態. (請參考回傳付款結果表)
tid string(15) 付款交易單號
本次付款的交易單號.
verify string(32) 回傳參數檢查碼
依回傳參數檢查碼運算公式所計算出的回傳參數檢查碼.
用來驗証 OpenPay 回傳商家參數的正確性.
(請參考傳遞參數檢查機制說明)
cname string(255) 消費者姓名.
caddress string(255) 消費者地址.
ctel string(255) 消費者電話.
xname string(255) 收貨人姓名.
xaddress string(255) 收貨人地址.
xtel string(255) 收貨人電話.
ccard_no string(16) 信用卡卡號
信用卡授權成功時回傳遮碼卡號.
auth_code string(6) 信用卡授權碼
信用卡授權成功時回傳付款授權碼.
pay_cstore string(40) 繳費超商
超商代碼繳費的繳費超商資訊(店號,店名), 例:統一超,956260,寧波門市
vac_from_bank_ac_no string(20) 虛擬帳號轉帳扣款帳戶
虛擬帳號收款, 扣款的銀行碼及遮碼帳號.
vac_to_bank_ac_no string(20) 虛擬帳號轉帳入款帳戶
虛擬帳號收款, 入款的銀行碼及虛擬帳號.
回傳說明
運作
方式
成功收到通知者, 請於 HTTP Response Content 中輸出 OK 兩字元. 連線失敗或回應不包含 OK 兩字元均視為通知失敗, 依需要進行重試程序.
接收成功
HTTP/1.1 200 OK
Date: Thu, 24 Sep 2009 04:22:10 GMT
Server: Apache
Content-Type: text/html

OK
接收失敗
HTTP/1.1 200 OK
Date: Thu, 24 Sep 2009 04:22:10 GMT
Server: Apache
Content-Type: text/html

INTERNAL ERROR



2.7. 付款狀態查詢 API

      2.7.1. 說明
商家端系統送出付款要求至台灣里系統後, 查詢付款要求在台灣里系統的付款交易狀態是否已入帳.

注意事項1: 使用本功能前, 需於台灣里商家的管理後台 [其他項目管理] -> [付款設定], 指定發送 API 要求的 IP 位址, 非源自指定位址的查詢要求, API 將傳回狀態失敗.
注意事項2: 計算 verify 欄位所使用的存取密碼(access_key), 請於台灣里查詢.
注意事項3: 本查詢 API 使用的商家端訂單編號(txid) 不可有重覆情況. 若查詢時發現重覆情況, API 將傳回狀態失敗.
注意事項4: 商家透過消費者瀏覽器傳送付款要求至台灣里時, 若因消費者未完成付款流程, 使得系統未建立其記錄而查無交易, API 將傳回狀態失敗.
注意事項5: 查詢結果的字串欄位均以 UTF-8 方式編碼, 時間欄位均為 UTC+8 台灣時區.


      2.7.2. 介面及參數

付款介面
名稱 付款狀態查詢
網址 https://www.twv.com.tw/openpay/m/pay_tx_inquiry.php
說明 商家端系統以 HTTP Post 方式, 傳送以下傳入參數, 到台灣里系統查詢付款的入帳狀態.
台灣里系統處理 API 查詢後, 將查詢結果以 JSON 編碼方式直接輸出於 HTTP Response 中.
API 要求(API request) 和回傳(API response) 的參數, 均需經過指定參數序列組合字串的 md5 驗證程序才是合法內容, 驗證若發生失敗不符情況, 請即刻向台灣里回報.
傳入參數說明
運作
方式
商家端系統以 HTTP Post 方式, 傳送以下傳入參數至 API 接收位址.
參數 參數名稱 格式 必要性 參數說明
mid string(15) 台灣里商家編號
台灣里給定的商家編號.
txid string(31) 商家訂單編號
商家端產生的交易序號, 或訂單編號.
verify string(32) 傳入參數檢查碼
access_key, mid, txid 各參數依順序以 '|' 當分隔字元串接後. 再經過 md5 函數計算出雜湊的值(hash value), 用來驗證是否為為商家發出的查詢要求.
查詢要求檢查不符時, API 將回應 merchant verify error 以拒絕非來自商家的交易查詢.
( 例: access_key=1234, mid=TWE, txid=on56789,
則 verify 應為 md5( "1234|TWE|on56789" ) = c94c39713f5ed8285a903dd92d8f192d
回傳說明
運作
方式
台灣里系統於 API 查詢處理後, 將結果參數以 JSON 編碼方式直接輸出於 HTTP Response 中. 商家端直接將 HTTP Response 以 JSON 解碼, 還原查詢結果.
參數 參數名稱 格式 必要性 參數說明
status integer API 查詢狀態
statusdescription說明
1internal error, please contact TWV系統錯誤, 請跟台灣里連絡
2access deny error拒絕存取錯誤
3parameter verify errorAPI 要求驗證錯誤
4txid empty errortxid 空值錯誤
5txid not found errortxid 查無付款記錄錯誤
6txid duplication errortxid 查得多筆記錄錯誤
101API successAPI 查詢成功
status_desc string(40) status 狀態敍述
res_jstr N/A 查詢結果列表經 JSON 編碼後的字串值.
若 status < 100 時, 此欄位為空值.
若 status > 100 時, 此欄位值經 JSON 解碼後, 將回復為付款狀態查詢結果(result tx info), 結果記錄的各欄位值, 請參考 res_jstr JSON 解碼後欄位說明.
verify string(32) 回傳參數檢查碼
若 status < 100 時, 此欄位為空值.
若 status > 100 時, 此欄位將回傳 access_key, status, res_jstr 各參數依順序以 '|' 當分隔字元串接後. 再經過 md5 函數計算出雜湊的值(hash value), 用來驗證是否為為台灣里回傳的查詢結果.
回傳參數檢查不符時, 該次查詢結果可能為偽造, 商家端系統應捨棄該交易查詢結果, 並跟台灣里連絡回報.
( 例: access_key=1234, status=102, res_jstr={"tid":"201401011234", "txid":"on56789", "amount":100, "pay_type":1, "status":101, "fundin_time":"2014-01-01 11:22:33"}
則 verify 應為 md5( '1234|101|{"tid":"201401011234", "txid":"on56789", "amount":100, "pay_type":1, "status":101, "fundin_time":"2014-01-01 11:22:33"}' ) = 52dd18058f1f0ee2d3a2ef8af97801a2
res_jstr
JSON
解碼後
欄位參數
tid string(15) 付款交易單號
此筆付款的台灣里交易單號.
txid string(31) 商家訂單編號
商家端產生的交易序號, 或訂單編號.
amount integer 付款金額
付款入帳金額.
status integer 付款狀態
交易目前的狀態.
statusdescription
0無效付款
1付款中
101付款成功
102付款失敗
pay_type integer 付款種類代碼
消費者選擇的付款種類. ( status > 100 時回傳, 請參考回傳付款結果表)
bill_url string(80) 繳款單網址
離線類付款的繳款說明.
pay_expire_date string(10) 離線式繳費的繳費截止日
離線類付款的繳款截止日或繳款截止時間(例:2001-01-05).
expire_time string(19) 離線式繳費的繳費時間期限
選擇離線式繳費時, 消費者繳費的最後期限(例:2001-01-05 17:59:59).
ccard_no string(16) 信用卡卡號
信用卡授權成功時回傳遮碼卡號.
cstore_barcode1 string(9) 超商條碼付款繳款條碼1
超商條碼付款的第 1 段繳款條碼.
cstore_barcode2 string(16) 超商條碼付款繳款條碼2
超商條碼付款的第 2 段繳款條碼.
cstore_barcode3 string(15) 超商條碼付款繳款條碼3
超商條碼付款的第 3 段繳款條碼.
fami_bill_no string(14) FamiPort 繳費單號
選擇 FamiPort 繳費時, 於機台拉單時輸入的單號.
lifeet_bill_no string(15) 萊爾富 LifeET 繳費單號
選擇萊爾富 LifeET 繳費時, 於機台拉單時輸入的單號.
ibon_bill_no string(14) ibon 繳費單號
選擇 ibon 繳費時, 於機台拉單時輸入的單號.
pay_cstore string(40) 繳費超商
超商代碼繳費的繳費超商資訊(店號,店名), 例:統一超,956260,寧波門市
vac_from_bank_ac_no string(20) 虛擬帳號轉帳扣款帳號
虛擬帳號收款, 扣款的銀行碼及遮碼帳號.
vac_to_bank_ac_no string(20) 虛擬帳號轉帳入款帳號
虛擬帳號收款, 入款的銀行碼及虛擬帳號.
pcsccod_send_expire_date date 7-11 取貨付款送件截止日
7-11 取貨付款的商品送件截止日.
pcsccod_transport_no string(12) 7-11 取貨付款服務代碼
7-11 取貨付款的交貨便服務代碼, 用於列印寄貨單及貨態追蹤.
pcsccod_recv_store_id string(6) 7-11 取貨付款收件門市代號
7-11 取貨付款收件門市代號.
pcsccod_recv_store_name string(18) 7-11 取貨付款收件門市名稱
7-11 取貨付款收件門市的中文名稱.
pcsccod_recv_store_address string(255) 7-11 取貨付款收件門市地址
7-11 取貨付款收件門市的中文地址.
fundin_time datetime 付款入帳時間
( status = 101 付款成功時回傳, 其他時候為空值 )
查詢失敗範例
HTTP/1.1 200 OK
Date: Thu, 01 Jan 2014 11:22:44 GMT
Server: Apache
Content-Type: text/html

{"status":5,"status_desc":"txid not found error"}
查詢成功範例
HTTP/1.1 200 OK
Date: Thu, 01 Jan 2014 11:22:44 GMT
Server: Apache
Content-Type: text/html

{"status":101,"status_desc":"API success","verify":"52dd18058f1f0ee2d3a2ef8af97801a2","res_jstr":"{\"tid\":\"201401011234\", \"txid\":\"on56789\", \"amount\":100, \"pay_type\":1, \"status\":101, \"fundin_time\":\"2014-01-01 11:22:33\"}"}



2.8. 付款入帳列表 API

      2.8.1. 說明
商家端系統查詢台灣里系統內, 指定日期區間的所有已入帳付款. 若查詢成功, API 將以入帳時間為序, 傳回所有已入帳付款列表.
列表將包含已入帳交易的詳細資訊, 包含請款日/核款日/手續費/消費者/收貨人等詳細資訊.

注意事項1: 使用本功能前, 需於台灣里商家的管理後台 [其他項目管理] -> [付款設定], 指定發送 API 要求的 IP 位址, 非源自指定位址的查詢要求, API 將傳回狀態失敗.
注意事項2: 計算 verify 欄位所使用的存取密碼(access_key), 請於台灣里查詢.
注意事項3: 查詢日期區間不可大於 31 日, 若超過限制, API 將傳回狀態失敗.
注意事項4: 查詢結果若無符合記錄或超過 1000 筆記錄, API 將傳回狀態失敗.
注意事項5: 查詢結果的字串欄位均以 UTF-8 方式編碼, 時間欄位均為 UTC+8 台灣時區.



      2.8.2. 介面及參數

付款介面
名稱 付款入帳列表
網址 https://www.twv.com.tw/openpay/m/pay_tx_search.php
說明 商家端系統以 HTTP Post 方式, 傳送以下傳入參數, 到台灣里系統查詢付款的入帳列表.
台灣里系統於 API 查詢處理後, 將查詢結果以 JSON 編碼方式直接輸出於 HTTP Response 中.
API 要求(API request) 和回傳(API response) 的參數, 均需經過指定參數序列組合字串的 md5 驗證程序才是合法內容, 驗證若發生失敗不符情況, 請即刻向台灣里回報.
傳入參數說明
運作
方式
商家端系統以 HTTP Post 方式, 傳送以下傳入參數至 API 接收位址.
參數 參數名稱 格式 必要性 參數說明
mid string(15) 台灣里商家編號
台灣里給定的商家編號.
fundin_date_begin string(10) 起始的付款入帳日
查詢條件中, 付款入帳日條件的起始日期, 例 2014-01-01.
fundin_date_end string(10) 結束的付款入帳日
查詢條件中, 付款入帳日條件的最後日期, 例 2014-01-10.
verify string(32) 傳入參數檢查碼
access_key, mid, fundin_date_begin, fundin_date_end 各參數依順序以 '|' 當分隔字元串接後. 再經過 md5 函數計算出組合字串的雜湊值(hash value), 用來驗證是否為為商家發出的查詢要求. 查詢要求檢查不符時, API 將回應 merchant verify error 以拒絕非來自商家的 API 查詢要求.
( 例: access_key=1234, mid=TWE, fundin_date_begin=2014-01-01, fundin_date_end=2014-01-10, 則 verify 應為 md5( "1234|TWE|2014-01-01|2014-01-10" ) = 6e434f974d0ae9cbe8f7d56110670eeb
回傳說明
運作
方式
台灣里系統於 API 查詢檢查無誤後, 將查詢結果以 JSON 編碼方式直接輸出於 HTTP Response 中. 商家端可直接將 HTTP Response 以 JSON 解碼, 還原查詢結果.
參數 參數名稱 格式 必要性 參數說明
status integer API 查詢結果狀態
API 查詢處理後的結果狀態.
statusdescription說明
1internal error, please contact TWV系統錯誤, 請跟台灣里連絡
2access deny error拒絕存取錯誤
3parameter verify errorAPI 要求驗證錯誤
4begin of fundin date empty errorfundin date 開始條件空白錯誤
5end of fundin date empty errorfundin date 結束條件空白錯誤
6search day exceed limit errorfundin day 查詢超過日數限制錯誤
7record not found error查無符合條件記錄錯誤
8record count exceed limit error符合條件記錄過多超過限制錯誤
101API successAPI 查詢成功
status_desc string(40) API 查詢結果狀態敍述
res_jstr N/A 查詢結果列表經 JSON 編碼後的字串值. 若 status < 100 時, 此欄位為空值.
若 status > 100 時, 此欄位值經 JSON 解碼後, 將回復為交易記錄查詢結果陣列(result tx array), 結果記錄的各欄位值, 請參考 res_jstr JSON 解碼後欄位說明.
verify string(32) 回傳參數檢查碼
若 status < 100 時, 此欄位為空值.
若 status > 100 時, 此欄位將回傳 access_key, status, res_jstr 各參數依順序以 '|' 當分隔字元串接後. 再經過 md5 函數計算出雜湊的值(hash value), 用來驗證是否為為台灣里回傳的查詢結果, 回傳參數檢查不符時, 該次查詢結果可能為偽造, 商家端系統應捨棄該交易查詢結果, 並跟台灣里連絡回報.
( 例: access_key=1234, status=101, res_jstr=[{"tid":"201401021234", "txid":"20140102333", "cid":"", "status":11,"pay_type":11,"reg_time":"2014-01-02 00:00:00", "fundin_time":"2014-01-02 00:10:00", "amount":"100", "request_date":"", "settle_date":"", "merchant_amount":96.7,"service_fee":3.3,"customer_name":"aaa", "customer_address":"bbb", "customer_tel":"ccc", "customer_email":"ddd", "transport_name":"", "transport_address":"", "transport_tel":""}]
則 verify 應為 md5( '1234|101|[{"tid":"201401021234", "txid":"20140102333", "cid":"", "status":11,"pay_type":11,"reg_time":"2014-01-02 00:00:00", "fundin_time":"2014-01-02 00:10:00", "amount":"100", "request_date":"", "settle_date":"", "merchant_amount":96.7,"service_fee":3.3,"customer_name":"aaa", "customer_address":"bbb", "customer_tel":"ccc", "customer_email":"ddd", "transport_name":"", "transport_address":"", "transport_tel":""}]' ) = a7c1f5a4a770e1aef55828719be88281
res_jstr
JSON
解碼後
欄位參數
tid string(15) 付款交易單號
此筆付款的台灣里交易單號.
txid string(31) 商家訂單編號
商家端產生的交易序號, 或訂單編號.
cid string(31) 消費者身分證號
台灣地區人士身分證號.
status integer 付款狀態
交易目前的狀態.
statusdescription
1無效付款
11付款授權成功
12交易服務已完成
13交易產品配送中
14交易產品未收到
15交易產品已收到
16訂單可請款
17訂單請求請款
18訂單請款完成
19換貨處理中
20退貨處理中
pay_type integer 付款種類代碼
消費者選擇的付款種類. ( status > 100 時回傳, 請參考回傳付款結果表)
reg_time datetime 付款開單時間
交易在台灣里系統建立交易單的時間.
fundin_time datetime 付款入帳時間
交易在台灣里系統入帳的時間.
amount integer 付款金額
付款入帳金額.
request_date date 請款日
商家對已入帳交易請款的日期.
settle_date date 核款日
台灣里對已請款交易核款的日期.
merchant_amount float 商家實收款
代收款扣除手續費後的商家實收款.
service_fee float 手續費
代收手續費.
customer_name string(30) 消費者姓名
消費者姓名.
customer_address string(150) 消費者地址
消費者地址.
customer_tel string(55) 消費者電話
消費者電話.
customer_email string(55) 消費者郵件
消費者郵件.
transport_name string(30) 收貨人姓名
收貨人姓名.
transport_address string(150) 收貨人地址
收貨人地址.
transport_tel string(55) 收貨人電話
收貨人電話.
查詢失敗
HTTP/1.1 200 OK
Server: Apache
Content-Type: text/html

{"status":2,"status_desc":"access deny error"}
查詢成功
HTTP/1.1 200 OK
Server: Apache
Content-Type: text/html

{"status":101,"status_desc":"API success","verify":"a7c1f5a4a770e1aef55828719be88281","res_jstr":"[{\"tid\":\"201401021234\", \"txid\":\"20140102333\", \"cid\":\"\", \"status\":11,\"pay_type\":11,\"reg_time\":\"2014-01-02 00:00:00\", \"fundin_time\":\"2014-01-02 00:10:00\", \"amount\":\"100\", \"request_date\":\"\", \"settle_date\":\"\", \"merchant_amount\":96.7,\"service_fee\":3.3,\"customer_name\":\"aaa\", \"customer_address\":\"bbb\", \"customer_tel\":\"ccc\", \"customer_email\":\"ddd\", \"transport_name\":\"\", \"transport_address\":\"\", \"transport_tel\":\"\"}]"}



2.8. 7-11超商取貨付款選店

      2.8.1. 說明
商家端系統若需使用7-11超商取貨付款的選店服務.
可將消費者瀏覽器導向至本服務網址選擇取貨店,
完成選店後, 瀏覽器回傳所選擇的商店資訊至商家指定的網址.


      2.8.2. 介面及參數

付款介面
名稱 7-11超商取貨付款選店
網址 https://www.twv.com.tw/openpay/pcsccod_store_select.php
說明 商家端系統將消費者瀏覽器以 HTTP Post 方式, 導向到台灣里服務網址.
於消費者選店完成後, 台灣里將選店結果以 HTTP Post 方式, 導向商家於要求中指定的回傳網址.
傳入參數說明
運作
方式
商家端系統以 HTTP Post 方式, 傳送以下傳入參數至 API 接收位址.
參數 參數名稱 格式 必要性 參數說明
mid string(15) 台灣里商家編號
台灣里給定的商家編號.
store_id string(6) 預設的超商店號
若無帶入,則顯示地圖供消費者選店.
若有帶入,則直接顯示該店供消費者確認資訊無誤.
return_url string(127) 選店完成的返回網址
消費者選店完成時, 瀏覽器將會被導向到此網址.
例: http://www.merchant.com/store_select_back.php
若需傳遞額外資訊 12345678, 可帶入在網址的 path info 部份.
例: http://www.merchant.com/store_select_back.php/12345678
回傳說明
運作
方式
消費者選店完成後, 台灣里系統將瀏覽器導向到 return_url 參數指定的網址. 並以 FORM Post 傳遞所選的取貨商店資訊.
參數 參數名稱 格式 必要性 參數說明
store_id string(6) 所選取貨店的店號.
store_name string(12) 所選取貨店的名稱.
store_address string(100) 所選取貨店的地址.



3. 付款範例
本節將以下列的設定來示範 OpenPay 付款功能
付款界面版本:2.1
台灣里商家編號:TEST
付款分期數:0 (一次付清)
交易序號:222222
付款金額:3
傳入參數檢查碼:2724e27fa576dcff1ef047018c6f2ccd
付款界面語系:tchinese
瀏覽器回傳位址:http://www.merchant.com/payback.php


3.1. 簡易機動付款範例
簡易機動付款: 一般模式範例
簡易機動付款: 一般模式付款要求範例1, 由消費者輸入付款金額及付款人資訊.
<html>
<body>
<form name="pay" method="post" action="https://www.twv.com.tw/openpay/pay_direct.php">
 <input type="hidden" name="mid" value="TEST">
 <input type="hidden" name="txid" value="222222">
 <input type="hidden" name="mode" value="1">
 <input type="hidden" name="language" value="tchinese">
</form>
<script language="JavaScript"><!--
  document.pay.submit();
// --></script>
</body>
</html>
簡易機動付款: 一般模式付款要求範例2, 由消費者輸入付款人資訊.
<html>
<body>
<form name="pay" method="post" action="https://www.twv.com.tw/openpay/pay_direct.php">
 <input type="hidden" name="mid" value="TEST">
 <input type="hidden" name="txid" value="222222">
 <input type="hidden" name="amount" value="3">
 <input type="hidden" name="mode" value="1">
 <input type="hidden" name="language" value="tchinese">
</form>
<script language="JavaScript"><!--
  document.pay.submit();
// --></script>
</body>
</html>


簡易機動付款: 簡易模式範例
簡易機動付款: 簡易模式付款要求範例1, 由消費者輸入付款金額後即產生 7-11 ibon 繳費說明.
<html>
<body>
<form name="pay" method="post" action="https://www.twv.com.tw/openpay/pay_direct.php">
 <input type="hidden" name="mid" value="TEST">
 <input type="hidden" name="txid" value="222222">
 <input type="hidden" name="mode" value="2">
 <input type="hidden" name="select_paymethod" value="9">
 <input type="hidden" name="charset" value="UTF-8">
 <input type="hidden" name="language" value="tchinese">
 <input type="hidden" name="cname" value="王大明">
 <input type="hidden" name="caddress" value="台北市士林區中正路100001號">
 <input type="hidden" name="ctel" value="0900123456">
 <input type="hidden" name="cemail" value="test@customer.com">
</form>
<script language="JavaScript"><!--
  document.pay.submit();
// --></script>
</body>
</html>
簡易模式付款: 簡易模式付款要求範例2, 傳入後即產生 7-11 ibon 繳費說明.
<html>
<body>
<form name="pay" method="post" action="https://www.twv.com.tw/openpay/pay_direct.php">
 <input type="hidden" name="mid" value="TEST">
 <input type="hidden" name="txid" value="222222">
 <input type="hidden" name="amount" value="100">
 <input type="hidden" name="mode" value="2">
 <input type="hidden" name="select_paymethod" value="9">
 <input type="hidden" name="charset" value="UTF-8">
 <input type="hidden" name="language" value="tchinese">
 <input type="hidden" name="cname" value="王大明">
 <input type="hidden" name="caddress" value="台北市士林區中正路100001號">
 <input type="hidden" name="ctel" value="0900123456">
 <input type="hidden" name="cemail" value="test@customer.com">
</form>
<script language="JavaScript"><!--
  document.pay.submit();
// --></script>
</body>
</html>


3.2. 系統整合付款範例
商家網站傳入付款需求往 OpanPay
<html>
<body>
<form name="pay" method="post" action="https://www.twv.com.tw/openpay/pay.php">
 <input type="hidden" name="version" value="2.1">
 <input type="hidden" name="mid" value="TEST">
 <input type="hidden" name="iid" value="0">
 <input type="hidden" name="txid" value="222222">
 <input type="hidden" name="amount" value="3">
 <input type="hidden" name="verify" value="2724e27fa576dcff1ef047018c6f2ccd">
 <input type="hidden" name="return_url" value="http://www.merchant.com/payback.php">
 <input type="hidden" name="language" value="tchinese">
</form>
<script language="JavaScript"><!--
  document.pay.submit();
// --></script>
</body>
</html>
OpanPay回傳商家網站範例 1. 信用卡付款成功
<html>
<body>
<form name="return" method="post" action="http://www.merchant.com/payback.php">
 <input type="hidden" name="txid" value="222222">
 <input type="hidden" name="amount" value="3">
 <input type="hidden" name="pay_type" value="1">
 <input type="hidden" name="status" value="1">
 <input type="hidden" name="tid" value="200501011234">
 <input type="hidden" name="verify" value="0e2965539eedf17e058594eae141b50c">
 <input type="hidden" name="cname" value="王大明">
 <input type="hidden" name="caddress" value="台北市中山北路100001號">
 <input type="hidden" name="ctel" value="0900123456">
 <input type="hidden" name="cemail" value="twe@twe.com.tw">
 <input type="hidden" name="xname" value="王大明">
 <input type="hidden" name="xaddress" value="台北市中山北路100001號">
 <input type="hidden" name="xemail" value="twe@twe.com.tw">
 <input type="hidden" name="error_code" value="">
 <input type="hidden" name="error_desc" value="">
 <input type="hidden" name="auth_code" value="123456">
 <input type="hidden" name="xid" value="">
 <input type="hidden" name="ref_no" value="">
 <input type="hidden" name="account_no" value="">
 <input type="hidden" name="bill_no" value="">
 <input type="image" name="ImageButton" src="http://www.twv.com.tw/images/com.gif">
 本網頁將使用 javascript 自動導向商家網站, 若您的瀏灠器導向時間過長無回應, 請直接點選
 <input type="submit" value="此處"> 完成導向動作
</form>
<script language="JavaScript"><!--
  document.return.submit();
// --></script>
</body>
</html>
OpanPay回傳商家網站範例 2. 信用卡付款失敗
<html>
<body>
<form name="return" method="post" action="http://www.merchant.com/payback.php">
 <input type="hidden" name="txid" value="222222">
 <input type="hidden" name="amount" value="3">
 <input type="hidden" name="pay_type" value="1">
 <input type="hidden" name="status" value="2">
 <input type="hidden" name="tid" value="200501011234">
 <input type="hidden" name="verify" value="69da8c399384ae8d27346251498fc453">
 <input type="hidden" name="cname" value="王大明">
 <input type="hidden" name="caddress" value="台北市中山北路100001號">
 <input type="hidden" name="ctel" value="0900123456">
 <input type="hidden" name="cemail" value="twe@twe.com.tw">
 <input type="hidden" name="xname" value="王大明">
 <input type="hidden" name="xaddress" value="台北市中山北路100001號">
 <input type="hidden" name="xemail" value="twe@twe.com.tw">
 <input type="hidden" name="error_code" value="">
 <input type="hidden" name="error_desc" value="過期卡">
 <input type="hidden" name="auth_code" value="">
 <input type="hidden" name="xid" value="">
 <input type="hidden" name="ref_no" value="">
 <input type="hidden" name="account_no" value="">
 <input type="hidden" name="bill_no" value="">
 <input type="image" name="ImageButton" src="http://www.twv.com.tw/images/com.gif">
 本網頁將使用 javascript 自動導向商家網站, 若您的瀏灠器導向時間過長無回應, 請直接點選
 <input type="submit" value="此處"> 完成導向動作
</form>
<script language="JavaScript"><!--
  document.return.submit();
// --></script>
</body>
</html>
OpanPay回傳商家網站範例 3. 虛擬帳號轉帳等待付款
<html>
<body>
<form name="return" method="post" action="http://www.merchant.com/payback.php">
 <input type="hidden" name="txid" value="222222">
 <input type="hidden" name="amount" value="3">
 <input type="hidden" name="paytype" value="2">
 <input type="hidden" name="status" value="3">
 <input type="hidden" name="tid" value="200501011234">
 <input type="hidden" name="verify" value="f333e40b5c8d67affa80b437b5d62a06">
 <input type="hidden" name="cname" value="王大明">
 <input type="hidden" name="caddress" value="台北市中山北路100001號">
 <input type="hidden" name="ctel" value="0900123456">
 <input type="hidden" name="cemail" value="twe@twe.com.tw">
 <input type="hidden" name="xname" value="王大明">
 <input type="hidden" name="xaddress" value="台北市中山北路100001號">
 <input type="hidden" name="xemail" value="twe@twe.com.tw">
 <input type="hidden" name="error_code" value="">
 <input type="hidden" name="error_desc" value="">
 <input type="hidden" name="auth_code" value="">
 <input type="hidden" name="xid" value="">
 <input type="hidden" name="ref_no" value="">
 <input type="hidden" name="account_no" value="005-12345678901234">
 <input type="hidden" name="bill_no" value="">
 <input type="image" name="ImageButton" src="http://www.twv.com.tw/images/com.gif">
 本網頁將使用 javascript 自動導向商家網站, 若您的瀏灠器導向時間過長無回應, 請直接點選
 <input type="submit" value="此處"> 完成導向動作
</form>
<script language="JavaScript"><!--
  document.return.submit();
// --></script>
</body>
</html>


附錄A: 回傳付款結果表

回傳付款結果表
付款種類 付款結果 付款種類
(pay_type)
付款狀態
(status)
付款失敗代碼
(error_code)
付款失敗原因
(error_desc)
信用卡 付款成功 1 1

信用卡 付款失敗 1 2
[失敗原因]
信用卡 取消付款 1 10

虛擬帳號轉帳 付款成功 2 1

虛擬帳號轉帳 等待付款 2 3

虛擬帳號轉帳 取消付款 2 10

WebATM 付款成功 4 1

WebATM 付款失敗 4 2
[失敗原因]
WebATM 取消付款 4 10

便利商店條碼 付款成功 8 1

便利商店條碼 等待付款 8 3

便利商店條碼 取消付款 8 10

7-11 ibon付款 付款成功 9 1

7-11 ibon付款 等待付款 9 3

7-11 ibon付款 取消付款 9 10

全家 FamiPort 付款成功 12 1

全家 FamiPort 等待付款 12 3

全家 FamiPort 取消付款 12 10

萊爾富 LifeET 付款成功 19 1

萊爾富 LifeET 等待付款 19 3

萊爾富 LifeET 取消付款 19 10

支付寶 付款成功 13 1

支付寶 付款失敗 13 2
[失敗原因]
支付寶 取消付款 13 10

財付通 付款成功 14 1

財付通 付款失敗 14 2
[失敗原因]
財付通 取消付款 14 10

7-11 取貨付款 付款成功 16 1

7-11 取貨付款 等待付款 16 3

7-11 取貨付款 取消付款 16 10

銀聯卡付款 付款成功 17 1

銀聯卡付款 付款失敗 17 2
[失敗原因]
萊爾富 LifeET 付款成功 19 1

萊爾富 LifeET 等待付款 19 3

萊爾富 LifeET 取消付款 19 10

整合離線付款 等待付款 101 3

整合離線付款 取消付款 101 10


附錄B: MD5 範例程式
以下範例將示範將被摘要訊息是 "ABCD" 長度為 4 字元的字串, 經 MD5 處理後應得到摘要值 "cb08ca4a7bb5f9683c19133a84872ca7" 長度為 32 個字元的字串.
(其他程式語言範例請參考此處, 或與台灣里聯絡)

PHP 範例程式
<?php
$message = "ABCD";
$verify = md5($message);
?>
Perl 範例程式
# Functional style
use Digest::MD5 qw(md5_hex);

$message = "ABCD";
$verify = md5_hex($message);

# OO style
use Digest::MD5;

$message = "ABCD";
$ctx = Digest::MD5->new;
$ctx->add($message);
$verify = $ctx->hexdigest;
Java 範例程式
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Md5Library {
  public static String md5( String message ) throws NoSuchAlgorithmException {
    MessageDigest md = MessageDigest.getInstance("MD5");
    md.update(message.getBytes());
    BigInteger hash = new BigInteger(1, md.digest());
    return hash.toString(16);
  }

  public static void main( String [] argv ) throws NoSuchAlgorithmException {
    String message = "ABCD";
    String verify = Md5Library.md5( message );
  }
}
ASP 範例程式
'ASP 不內建 MD5 HASH 運算,
'請取得 http://userpages.umbc.edu/~mabzug1/cs/md5/md5.asp 程式後,
'以下列方式取得 message 之 md5.
message = "ABCD";
verify = MD5(message);
ASP.NET 範例程式
<%@ Page Language="C#" ContentType="text/html"%>
<%@ Import Namespace="System"%>
<script language="C#" runat="server">
message = "ABCD";
verify = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(message,"md5");
</script>
附錄C: 自訂回傳商家網站參數範例程式
以下將示範 return_url 中夾帶商家自訂參數的範例做法. 假設商家回傳的 url 為 http://www.merchant.com/payback.php, 需帶入自訂參數 "postcode=123456" 和 "附註=請於7日內送達" 為例.

PHP 範例程式
<?php
$return_url = "http://www.merchant.com/payback.php"
  ."?".rawurlencode("postcode")."=".rawurlencode("123456")
  ."&".rawurlencode("附註")."=".rawurlencode("請於7日內送達");
?>
ASP 範例程式
return_url = "http://www.merchant.com/payback.php"
  & "?" & Server.URLEncode("postcode") & "=" & Server.URLEncode("123456")
  & "&" & Server.URLEncode("附註") & "=" & Server.URLEncode("請於7日內送達");
ASP.NET 範例程式
return_url = "http://www.merchant.com/payback.php"
  & "?" & HttpUtility.UrlEncode("postcode",Encoding.Default) & "=" & HttpUtility.UrlEncode("123456",Encoding.Default)
  & "&" & HttpUtility.UrlEncode("附註",Encoding.Default) & "=" & HttpUtility.UrlEncode("請於7日內送達",Encoding.Default);