為協助開發者理解各交易欄位的適用範圍,以下說明 TapPay 文件中「Direct Pay」、「電子支付」、「Token Pay」三種支付方式的定義與適用場景。
Direct Pay
Direct Pay 是指消費者直接於商戶前端頁面輸入信用卡資訊,透過 TapPay 金流閘道進行付款的交易。
電子支付是指透過電子錢包帳戶完成的交易,包含以下支付業者:LINE Pay, 街口支付, 悠遊付等,完整的支付業者請參考
電子支付支援功能
API 欄位支援與格式依各電子支付業者而異,請參考詳細 API 規格說明。
Token Pay
Token Pay 僅指使用 行動支付服務(Apple Pay, Goole Pay, Samsung Pay)所產生的 Tokenized 信用卡號 (DPAN) 所完成的交易
Pay by Prime API
非3D交易流程
3D驗證交易流程
當您要進行3D驗證交易,請在Request欄位中的three_domain_secure帶入true,且在result_url的frontend_redirect_url與backend_notify_url分別帶入對應的值。
建議您在收到frontend redirect 後,於前端顯示交易結果頁面給消費者前,打 Record API(以
rec_trade_id
作為搜尋條件)進行反查確認交易狀態,以避免您因意外狀況未收到 Backend Notify 而發生交易狀態不一致問題。
利用前端所取得的
prime
字串進行交易
每個
prime
字串只可使用一次,因此每次呼叫此 API 前都必須重新取得一個
prime
字串
若將
remember
設為 true 記憶卡號,則會獲得
card_key
和
card_token
,以後即可省去 createToken 這個步驟並改為呼叫
Pay by Card Token
來進行交易。亦可使用
card_key
和
card_token
來進行定期定額扣款,存下此兩個參數後,即可定期呼叫
Pay by Card Token
進行定期定額扣款,且呼叫的週期與金額可自行決定。Apple Pay、Google Pay、Samsung Pay、JKOPAY、悠遊付、Atome、Pi 錢包、全盈支付 不支援此功能
由於尖峰時段銀行方面可能會花較久時間處理,因此請將 timeout 時間設定為 30 秒以避免交易資訊不同步
prime
*
String(71)
信用卡號所換得的字串,由前端 SDK 呼叫 getPrime 成功時回傳
prime 的有效效時間為 90秒。
若您有開啟 Apple Pay 延後授權,請自行保管 Prime(預設 Prime 有效期限為 30 天)。
若您於 sandbox 環境想使用測試 prime 進行 API 串接,可參考
測試 prime
partner_key
*
String(64)
綁定 Portal 帳戶的驗證金鑰
merchant_id
*
String(50)
於 Portal 登錄商家時所產生的識別碼
merchant_group_id
String(50)
於 Portal 設置的商家管理設置,交易時會依據 portal 的支付配置進行交易
不可與 merchant_id 同時使用
amount
*
交易金額。目前支援台幣、港幣、馬幣、美金,台幣以外金額需乘以 100後帶入,各幣別交易金額上限,請參考
reference
當使用AFTEE交易時,金額上限為台幣9,999,999元
merchandise_details
JSONObject
不適用回饋之交易商品金額、點數。僅部分電子支付支援,請參考
電子支付支援功能
currency
String(3)
交易幣別。格式為 ISO 4217 字母代碼,例如:TWD。銀行支援幣別請參考
reference
order_number
String(50)
您自定義的訂單編號,用於 TapPay 做訂單識別,可重複帶入
格式請參考
reference
。若有帶入此欄位,則不能為空
bank_transaction_id
String(40)
銀行端的訂單編號
強烈建議商戶可在此自訂,但不能與之前的重複;若您沒有自訂則會自動幫您產生一組。
但若您沒自訂,當發生421 Gateway 操作逾時(發生機率低),則無法反查該筆交易
(格式規格請參考備註
reference
)
details
String(100)
交易品項內容,為符合 PCI 要求至少必須要有品項名稱,若收單有相關欄位可帶入則TapPay 會將此欄位送至收單端。
部分收單此欄位為必填,若未帶入會導致交易失敗,每個收單的格式要求皆不同,請務必參考
reference
說明
cardholder
*
JSONObject
持卡人資訊,非必填欄位可帶入空字串。以下欄位將作為「詐欺檢測器」及「3D交易風險驗證」的分析資訊。
-
於「3D交易風險驗證」中
-
若持卡人電話號碼為國際號碼,請務必於
phone_number_counrty_code
位中帶入國碼,以避免資訊錯誤。
-
若
name_en
為空值,將以
name
欄位轉送,若不符合格式將轉帶預設值。
-
若該筆交易授權請求需進行身份驗證(KYC),請詳
各銀行需驗證的必填欄位
。
名稱(*為必填)
|
類別(長度)
|
內容
|
phone_number_country_code
|
String(3)
|
電話號碼國碼。預設值為886,請勿輸入任何符號如「 + 」
|
phone_number*
|
String(16)
|
持卡人電話號碼。應符合 E.164 規範 (此為卡組織3D交易風險驗證欄位)
|
name*
|
String(40)
|
姓名
|
name_en
|
String(45)
|
若
name_en
為空值,將以預設值轉送
|
email*
|
String(40)
|
持卡人電子信箱。必須符合 RFC 5322 規範,若不符合則該規範將轉送預設值(此為卡組織3D交易風險驗證欄位)
|
zip_code
|
String(40)
|
郵遞區號
|
address
|
String(90)
|
地址
|
|
national_id
|
String(40)
|
身份證字號
|
member_id
|
String(64)
|
持卡人或購買人會員編號。用於 TapPay 詐欺檢測、會員資料管理時使用。支援 : Direct Pay
|
bank_member_id
|
String(50)
|
持卡人或消費者會員編號,屬於商戶與銀行或是錢包串接方交換或約定之消費者編號。
當使用電子錢包之綁定扣款交易時,此欄位為必填。僅部分電子支付支援,請參考
電子支付支援功能
|
cardholder_verify
JSONObject
身份驗證欄位,請注意:若此筆交易需身份驗證,請詳讀
備註
中各銀行需驗證的必填欄位,若該欄位為 “true” ,則會將 cardholder 欄位對應之資訊送至收單機構進行身份驗證。
若要進行兩段式身份驗證,務必於 kyc_verification_merchant_id 填入您於Portal的商家管理 > KYC 驗證商家設置的merchant ID
如使用 AE 卡進行驗證,將會扣除 1 元,並於兩週內會退還。
您可以在 sandbox 環境中使用
備註
中的測試用身分證字號及電話號碼
支援: Direct Pay
有以下兩種使用情境
使用情境說明
|
支援身份驗證收單銀行
|
支援授權收單銀行
|
支援程度
|
注意事項
|
身份驗證及授權皆可使用同一 merchant id 完成
|
財團法人聯合信用卡處理中心
|
財團法人聯合信用卡處理中心
|
所有發卡行
|
無法做電話號碼驗證,可參考
備註
|
台新銀行
|
台新銀行
|
所有發卡行
|
|
玉山銀行
|
玉山銀行
|
自行卡
|
無法做電話號碼驗證,可參考
備註
|
兩段式身份驗證(身份驗證跟授權不同收單)
|
財團法人聯合信用卡處理中心
|
所有TapPay支援的銀行
|
所有發卡行
|
|
TapPay 身份驗證
|
所有TapPay支援的銀行
|
所有國內發卡行(Visa, MasterCard, JCB)
|
無法做身分證字號驗證,可參考
備註
|
驗證欄位
名稱
|
類型(長度)
|
內容
|
phone_number
|
Boolean
|
是否驗證電話號碼
|
national_id
|
Boolean
|
是否驗證身分證字號
|
kyc_verification_merchant_id
String
此欄位請填入僅供身份驗證,無授權功能的merchant ID。
支援產業:電支產業/ 產壽險業
instalment
int(2)
分期付款期數,預設為 0
目前支援: 台新銀行, 財團法人聯合信用卡處理中心, 藍新金流, 國泰世華銀行, 玉山銀行, 中國信託銀行, 環匯亞太, 聯邦銀行
只支援: Direct Pay
delay_capture_in_days
定義交易授權後銀行要過多久才會請款,單位為天
此參數非必要,預設值為0(當天請款)
若您想要自行手動請款,可帶入 -1 表示暫時不請款
* 收單銀行皆設有請款期限,請向您的收單銀行確認。若您採取手動請款模式,請留意如果該筆交易的請款日超過銀行請款期限,可能會導致請款失敗。
three_domain_secure
Boolean
是否開啟 3D 驗證,預設為 false。此欄位僅應用於 Direct Pay,支援銀行請參考
Direct Pay 支援銀行
result_url
JSONObject
交易結果通知URL,電子支付及 Direct Pay 3D 交易必填 (three_domain_secure = true)。
名稱
|
類別
|
內容
|
frontend_redirect_url
|
String(500)
|
商店前端頁面跳轉網址,必須以 https 開頭。交易完成後,TapPay 將會進行 Web 導轉至您指定之 URL,跳轉參數內容請參考
Frontend Redirect
。電子支付及 Direct Pay 3D 交易必填
|
backend_notify_url
|
String(500)
|
交易結果通知 URL,交易完成後 TapPay 將會發送通知至此 URL,Request 內容請參考 Backend Notify API。此URL 必須為 https 開頭,僅支援 443 port,電子支付及 Direct Pay 3D 交易必填
|
go_back_url
|
String(500)
|
3D 驗證交易時,當消費者因不當操作而被導到 TapPay Error 頁面時,頁面上「Go back」按鈕連結。此情境僅會發生於玉山銀行, 國泰世華銀行, 台新銀行。
若您在交易的 Request 中有定義此參數,則消費者按下 Go back按鈕後,會導到您所指定的 URL;亦可於TapPay Portal > 開發人員內容 > 系統設定 > 跳轉連結設定 設定 Go back 按鈕指向的 URL。
強烈建議您在 3D 交易時定義這個欄位,避免消費者被導轉到交易錯誤頁面時,無法回到商家頁面完成交易或查看交易結果。
建議您此 URL 可以設定為商家首頁或是購物車頁面
|
remember
boolean
是否儲存此付款方式。若此欄位為 true,則 response 會回傳一組 card_secret (card_key, card_token),後續您可使用此組 Token 呼叫 Pay by token 進行交易。僅支援:Direct Pay 及部分支援綁定扣款之電子支付,請參考
電子支付支援功能
redeem
boolean
是否為紅利折抵。
目前支援: 財團法人聯合信用卡處理中心
只支援: Direct Pay
additional_data
JSONString(3000)
資料會加密保存,並在其他客製化需求時才解密做使用
event_code
String(50)
與銀行或錢包合作之活動中,雙方協議的指定活動代碼。支援 : 悠遊付
product_image_url
String(500)
交易付款頁面上所顯示的商品或商家圖片。此欄位等同於line_pay_product_image_url, 若您於呼叫時同時帶入 product_image_url 與line_pay_product_image_url,TapPay 將以product_image_url 欄位的內容為主。格式規格請參考備註
reference
jko_pay_insurance_policy
StringArray
街口支付產壽險交易,保單明細
支援: JKOPAY
當使用 JKOPAY 進行產壽險交易時,以下欄位皆為必填
store_id
String(10)
特店門市店號。若收單端有支援則會將此欄位送至收單,支援的收單及格式請參考
reference
store_name
String(50)
特店門市名稱。若收單端有支援則會將此欄位送至收單,支援的收單及格式請參考
reference
// *** 格式 ***
// 測試環境 URL: https://sandbox.tappaysdk.com/tpc/payment/pay-by-prime
// 正式環境 URL: https://prod.tappaysdk.com/tpc/payment/pay-by-prime
// Header:
// Content-Type: application/json
// x-api-key: YourPartnerKey
"prime": String,
"partner_key": String,
"merchant_id": "merchantA",
"details":"TapPay Test",
"amount": 100,
"cardholder": {
"phone_number": "+886923456789",
"name": "王小明",
"email": "[email protected]",
"zip_code": "100",
"address": "台北市天龍區芝麻街1號1樓",
"national_id": "A123456789"
"remember": true
bank_transaction_id
String(40)
銀行端的訂單編號
強烈建議商戶可在此自訂,但不能與之前的重複;若您沒有自訂則會自動幫您產生一組。
但若您沒自訂,當發生421 Gateway 操作逾時(發生機率低),則無法反查該筆交易
格式規格請參考 reference
bank_order_number
String
收單於授權時回傳的訂單編號,支援之收單及回傳之長度請參考 Reference
auth_code
String(6)
銀行授權碼,僅支援 Direct Pay, Token Pay
card_secret
JSONObject
卡片保管資訊。僅支援:Direct Pay 及部分支援綁定扣款之電子支付,請參考 電子支付支援功能
amount
交易金額,台幣以外金額需乘以 100,如港幣(HKD) 1元代表 100
currency
String(3)
交易幣別。格式為 ISO 4217 字母代碼,例如:TWD。銀行支援幣別請參考 reference
card_info
JSONObject
卡片資訊,僅支援 Direct Pay, Token Pay名稱 | 類別(長度) | 內容 |
---|
bin_code | String(6) | 卡片前六碼 |
last_four | String(4) | 卡片後四碼 |
issuer | String | 發卡銀行 |
issuer_zh_tw | String | 發卡銀行中文名稱 |
bank_id | String | 發卡銀行代碼 |
funding | int | 卡片類別 -1 = Unknown 0 = 信用卡 (Credit Card) 1 = 簽帳卡 (Debit Card) 2 = 預付卡 (Prepaid Card) |
type | int | 卡片種類 -1 = Unknown 1 = VISA 2 = MasterCard 3 = JCB 4 = Union Pay 5 = AMEX |
level | String | 卡片等級 |
country | String | 發卡行國家 |
country_code | String | 發卡行國家碼 |
expiry_date | String | 卡片到期時間,格式 YYYYMM, 僅支援 Direct Pay 且 remember = true 時回傳 |
order_number
String(50)
您自定義的訂單編號,用於 TapPay 做訂單識別,可重複帶入
格式請參考 reference
acquirer
String
收單銀行 / 金流處理器
transaction_time_millis
bank_transaction_time
JSONObject
銀行處理時間
bank_result_code
String(40)
銀行回傳的交易結果代碼
bank_result_msg
String(300)
銀行回傳的交易結果訊息
payment_url
String
付款頁面網址,將此網址回傳至前端跳轉
不支援:Apple Pay, Google Pay, Samsung Pay
instalment_info
JSONObject
非 3D 驗證交易,且使用分期付款時回傳
只支援: Direct Pay
名稱 | 類別 | 內容 |
---|
number_of_instalments | int | 分期期數 |
first_payment | int | 第一期金額 |
each_payment | int | 每一期金額 |
extra_info | JSONObject | 各間銀行分期額外參數不同,請參考 extra_info |
redeem_info
JSONObject
非 3D 驗證交易,且使用紅利折抵時回傳
只支援:Direct Pay
名稱 | 類別 | 內容 |
---|
used_point | String | 紅利折抵點數 |
balance | String | 紅利餘額 |
offset_amount | String | 紅利折抵金額 |
due_amount | String | 折抵後自付金額 |
extra_info | JSONObject | 各間銀行紅利額外參數不同,請參考 extra_info |
card_identifier
String
信用卡識別碼,每張信用卡只會對到一組識別碼。僅支援 Direct Pay, Token Pay
merchant_reference_info
商戶參考資訊名稱 | 類別 | 內容 |
---|
affiliate_codes | Array | 商戶於 TapPay 後台或第三方合作方設定之聯名卡資訊,當交易符合設定時才會回傳,只支援:Direct Pay, Apple Pay, Google Pay, Samsung Pay |
event_code
String(50)
與銀行或錢包合作之活動中,雙方協議的指定活動代碼。支援 : 悠遊付
is_rba_verified
Boolean
該交易有無取得 RBA 評估的風險分數RBA 可以為每筆交易評估風險,以辨認和防止偽冒交易發生。該產品即將上線,您可以參考 TapPay 官網更了解 RBA 這項服務。
transaction_method_details
JSONObject
交易方式細節
RBA 可以為每筆交易評估風險,以辨認和防止偽冒交易發生。該產品即將上線,您可以參考 TapPay 官網更了解 RBA 這項服務。名稱 | 類別 | 內容 |
---|
transaction_method | String | THREE_DOMAIN_SECURE: 表示訂單以 3D 驗證的規格送往銀行做交易 FRICTIONLESS: 表示訂單以一般授權的規格送往銀行做交易 |
transaction_method_reference | String | RBA : 該訂單最後的交易方式,是由 RBA 風險分數規則決定 REQUEST : 訂單最後的交易方式,是由商戶交易時帶來的 Request 規格決定 |
Pay by Card Token API
非3D驗證交易流程
3D驗證交易流程
當您要進行3D驗證交易,請在Request欄位中的three_domain_secure帶入true,且在result_url的frontend_redirect_url與backend_notify_url分別帶入對應的值。
建議您在收到frontend redirect 後,於前端顯示交易結果頁面給消費者前,打 Record API(以 rec_trade_id 作為搜尋條件)進行反查確認交易狀態,以避免您因意外狀況未收到 Backend Notify 而發生交易狀態不一致問題。
由於尖峰時段銀行方面可能會花較久時間處理,因此請將 timeout 時間設定為 30 秒以避免交易資訊不同步
若在呼叫 Pay by Prime API 時,若將 remember 設為 true 記憶卡號,則會獲得 card_key 和 card_token,以後即可省去 createToken 這個步驟並改為呼叫 Pay by Card Token 來進行交易。亦可使用 card_key 和 card_token 來進行定期定額扣款,存下此兩個參數後,即可定期呼叫 Pay by Card Token 進行定期定額扣款,且呼叫的週期與金額可自行決定。
merchant_group_id
String(50)
於 Portal 設置的商家管理設置,交易時會依據 portal 的支付配置進行交易
不可與 merchant_id 同時使用
amount*
交易金額。目前支援台幣、港幣、馬幣、美金,台幣以外金額需乘以 100後帶入,各幣別交易金額上限,請參考 reference
currency*
String(3)
交易幣別。格式為 ISO 4217 字母代碼,例如:TWD。銀行支援幣別請參考 reference
order_number
String(50)
您自定義的訂單編號,用於 TapPay 做訂單識別,可重複帶入
格式請參考 reference。若有帶入此欄位,則不可為空
bank_transaction_id
String(40)
銀行端的訂單編號
強烈建議商戶可在此自訂,但不能與之前的重複;若您沒有自訂則會自動幫您產生一組。
但若您沒自訂,當發生421 Gateway 操作逾時(發生機率低),則無法反查該筆交易
(格式規格請參考備註 reference)
details
String(100)
交易品項內容,為符合 PCI 要求至少必須要有品項名稱,若收單有相關欄位可帶入則TapPay 會將此欄位送至收單端。
部分收單此欄位為必填,若未帶入會導致交易失敗,每個收單的格式要求皆不同,請務必參考 reference 說明
cardholder_verify
JSONObject
身份驗證欄位,請注意:若此筆交易需身份驗證,請詳讀備註中各銀行需驗證的必填欄位,若該欄位為 “true” ,則會將 cardholder 欄位對應之資訊送至收單機構進行身份驗證。
若要進行兩段式身份驗證,務必於 kyc_verification_merchant_id 填入您於Portal的商家管理 > KYC 驗證商家設置的merchant ID
如使用 AE 卡進行驗證,將會扣除 1 元,並於兩週內會退還。
您可以在 sandbox 環境中使用備註中的測試用身分證字號及電話號碼
支援: Direct Pay
有以下兩種使用情境
使用情境說明 | 支援身份驗證收單銀行 | 支援授權收單銀行 | 支援程度 | 注意事項 |
---|
身份驗證及授權皆可使用同一 merchant id 完成 | 財團法人聯合信用卡處理中心 | 財團法人聯合信用卡處理中心 | 所有發卡行 | 無法做電話號碼驗證,可參考備註 |
台新銀行 | 台新銀行 | 所有發卡行 | |
玉山銀行 | 玉山銀行 | 自行卡 | 無法做電話號碼驗證,可參考備註 |
兩段式身份驗證(身份驗證跟授權不同收單) | 財團法人聯合信用卡處理中心 | 所有TapPay支援的銀行 | 所有發卡行 | |
TapPay 身份驗證 | 所有TapPay支援的銀行 | 所有國內發卡行(Visa, MasterCard, JCB) | 無法做身分證字號驗證,可參考備註 |
驗證欄位
名稱 | 類型(長度) | 內容 |
---|
phone_number | Boolean | 是否驗證電話號碼 |
national_id | Boolean | 是否驗證身分證字號 |
kyc_verification_merchant_id
String
此欄位請填入僅供身份驗證,無授權功能的merchant ID。
支援產業:電支產業/ 產壽險業
instalment
int(2)
分期付款期數,預設為 0
目前支援: 台新銀行, 財團法人聯合信用卡處理中心, 藍新金流, 國泰世華銀行, 玉山銀行, 中國信託銀行, 環匯亞太, 聯邦銀行
只支援: Direct Pay
delay_capture_in_days
定義交易授權後銀行要過多久才會請款,單位為天
此參數非必要,預設值為0(當天請款)
若您想要自行手動請款,可帶入 -1 表示暫時不請款
* 收單銀行皆設有請款期限,請向您的收單銀行確認。若您採取手動請款模式,請留意如果該筆交易的請款日超過銀行請款期限,可能會導致請款失敗。
three_domain_secure
Boolean
是否開啟 3D 驗證,預設為 false。此欄位僅應用於 Direct Pay,支援銀行請參考 Direct Pay 支援銀行
result_url
JSONObject
交易結果通知URL,電子支付及 Direct Pay 3D 交易必填 (three_domain_secure = true)。名稱 | 類別 | 內容 |
---|
frontend_redirect_url | String(500) | 商店前端頁面跳轉網址,必須以 https 開頭。交易完成後,TapPay 將會進行 Web 導轉至您指定之 URL,跳轉參數內容請參考 Frontend Redirect。電子支付及 Direct Pay 3D 交易必填 |
backend_notify_url | String(500) | 交易結果通知 URL,交易完成後 TapPay 將會發送通知至此 URL,Request 內容請參考 Backend Notify API。此URL 必須為 https 開頭,僅支援 443 port,電子支付及 Direct Pay 3D 交易必填 |
go_back_url | String(500) | 3D 驗證交易時,當消費者因不當操作而被導到 TapPay Error 頁面時,頁面上「Go back」按鈕連結。此情境僅會發生於玉山銀行, 國泰世華銀行, 台新銀行。 若您在交易的 Request 中有定義此參數,則消費者按下 Go back按鈕後,會導到您所指定的 URL;亦可於TapPay Portal > 開發人員內容 > 系統設定 > 跳轉連結設定 設定 Go back 按鈕指向的 URL。 強烈建議您在 3D 交易時定義這個欄位,避免消費者被導轉到交易錯誤頁面時,無法回到商家頁面完成交易或查看交易結果。 建議您此 URL 可以設定為商家首頁或是購物車頁面 |
card_ccv
String
信用卡安全碼。不可與ccv_prime 同時帶入,僅支援 Direct Pay
當有以下情況時請帶入此參數
1. 未在get-ccv-prime 時取得ccv_prime但想要銀行驗證此參數
2. 未在get-ccv-prime 時取得ccv_prime但使用 AE 卡進行3DS2.0 驗證交易時
redeem
boolean
是否為紅利折抵。
目前支援: 財團法人聯合信用卡處理中心
只支援 : Direct Pay
additional_data
JSONString(3000)
資料會加密保存,並在其他客製化需求時才解密做使用
ccv_prime
String
用信用卡安全碼所換得的字串,由 get-ccv-prime 成功時回傳
不可與card_ccv 同時帶入ccv_prime 的時效為 90秒
支援 : Direct Pay
您可以在 sandbox 環境中使用此測試用
ccv_prime(3碼) : test_65b1ca2d5d0dc8ff5b62296ea8547bab08401f8a57015fb818c5bcd10433fa11
ccv_prime(4碼) : test_cd1e737890874cdadf39caaf56c5b183c36a4117ca89cb24fd674c0892e0fa92
device_id
String(64)
裝置識別碼。若您有使用 TapPay RBA 交易風險評估服務,才需要帶此參數。
有使用 TapPay RBA 交易風險評估服務時,在呼叫 Pay by Card Token API 前,須先呼叫 SDK 的 Get Device ID 方法,並把取得的 Device ID 放入 Pay by Card Token Request 中的 device_id 欄位。
is_merchant_initiated_transaction
Boolean
標示該筆交易為為商店發起或消費者發起。若未帶則預設值為 false。商店發起的交易情境:訂閱制、定期定額等。
true = 商店發起
false = 消費者發起
// *** 格式 ***
// 測試環境 URL: https://sandbox.tappaysdk.com/tpc/payment/pay-by-token
// 正式環境 URL: https://prod.tappaysdk.com/tpc/payment/pay-by-token
// Header:
// Content-Type: application/json
// x-api-key: YourPartnerKey
"card_key": String,
"card_token": String,
"partner_key": String,
"currency": "TWD",
"merchant_id": "merchantA",
"details":"TapPay Test",
"amount": 100
bank_transaction_id
String(40)
銀行端的訂單編號
若有需求可在此自訂,但不能與之前的重複
若您沒有自訂則會自動幫您產生一組
格式規格請參考 reference
bank_order_number
String
收單於授權時回傳的訂單編號,支援之收單及回傳之長度請參考 Reference
amount
交易金額,台幣以外金額需乘以 100,如港幣(HKD) 1元代表 100
currency*
String(3)
交易幣別。格式為 ISO 4217 字母代碼,例如:TWD。銀行支援幣別請參考 reference
auth_code
String(6)
銀行授權碼,僅支援 Direct Pay, Token Pay
card_info
JSONObject
卡片資訊,僅支援 Direct Pay, Token Pay名稱 | 類別(長度) | 內容 |
---|
bin_code | String(6) | 卡片前六碼 |
last_four | String(4) | 卡片後四碼 |
issuer | String | 發卡銀行 |
issuer_zh_tw | String | 發卡銀行中文名稱 |
bank_id | String | 發卡銀行代碼 |
funding | int | 卡片類別 -1 = Unknown 0 = 信用卡 (Credit Card) 1 = 簽帳卡 (Debit Card) 2 = 預付卡 (Prepaid Card) |
type | int | 卡片種類 -1 = Unknown 1 = VISA 2 = MasterCard 3 = JCB 4 = Union Pay 5 = AMEX |
level | String | 卡片等級 |
country | String | 發卡行國家 |
country_code | String | 發卡行國家碼 |
expiry_date | String | 卡片到期時間,格式 YYYYMM, 僅支援 Direct Pay 且 remember = true 時回傳 |
order_number
String(50)
您自定義的訂單編號,用於 TapPay 做訂單識別,可重複帶入
格式請參考 reference
acquirer
String
收單銀行 / 金流處理器
transaction_time_millis
bank_transaction_time
JSONObject
銀行處理時間
bank_result_code
String(40)
銀行回傳的交易結果代碼
bank_result_msg
String(300)
銀行回傳的交易結果訊息
payment_url
String
付款頁面網址,將此網址回傳至前端跳轉
不支援: Apple Pay, Google Pay, Samsung Pay
instalment_info
JSONObject
非 3D 驗證交易,且使用分期付款時回傳
只支援: Direct Pay
名稱 | 類別 | 內容 |
---|
number_of_instalments | int | 分期期數 |
first_payment | int | 第一期金額 |
each_payment | int | 每一期金額 |
extra_info | JSONObject | 各間銀行分期額外參數不同,請參考 extra_info |
redeem_info
JSONObject
非 3D 驗證交易,且使用紅利折抵時回傳
只支援: Direct Pay
名稱 | 類別 | 內容 |
---|
used_point | String | 紅利折抵點數 |
balance | String | 紅利餘額 |
offset_amount | String | 紅利折抵金額 |
due_amount | String | 折抵後自付金額 |
extra_info | JSONObject | 各間銀行紅利額外參數不同,請參考 extra_info |
card_identifier
String
信用卡識別碼,每張信用卡只會對到一組識別碼。僅支援 Direct Pay, Token Pay
merchant_reference_info
商戶參考資訊名稱 | 類別 | 內容 |
---|
affiliate_codes | Array | 商戶於 TapPay 後台或第三方合作方設定之聯名卡資訊,當交易符合設定時才會回傳,只支援 Direct Pay, Apple Pay, Google Pay, Samsung Pay |
is_rba_verified
Boolean
該交易有無取得 RBA 評估的風險分數RBA 可以為每筆交易評估風險,以辨認和防止偽冒交易發生。該產品即將上線,您可以參考 TapPay 官網更了解 RBA 這項服務。
transaction_method_details
JSONObject
交易方式細節
RBA 可以為每筆交易評估風險,以辨認和防止偽冒交易發生。該產品即將上線,您可以參考 TapPay 官網更了解 RBA 這項服務。名稱 | 類別 | 內容 |
---|
transaction_method | String | THREE_DOMAIN_SECURE: 表示訂單以 3D 驗證的規格送往銀行做交易 FRICTIONLESS: 表示訂單以一般授權的規格送往銀行做交易 |
transaction_method_reference | String | RBA : 該訂單最後的交易方式,是由 RBA 風險分數規則決定 REQUEST : 訂單最後的交易方式,是由商戶交易時帶來的 Request 規格決定 |
Frontend Redirect
電子支付及 Direct Pay 3D 交易完成後,TapPay 會幫您 redirect 到您於交易請求 frontend_redirect_url 所填入之 URL,TapPay 會帶四個交易完成的參數
Value
Content-Type
html/text
Request Url
https://your.domain.com/transaction_is_done?
rec_trade_id=LN20171109WsvKhn&
order_number=CF46019917&
status=0&
bank_transaction_id=TP20171109WsvKhn
Request Query String
rec_trade_id
String
交易識別碼
order_number
String
自定義訂單編號。若有帶入此欄位,則不能為空
bank_transaction_id
String
銀行端的訂單編號。
強烈建議商戶可在此自訂,但不能與之前的重複;若您沒有自訂則會自動幫您產生一組。
但若您沒自訂,當發生421 Gateway 操作逾時(發生機率低),則無法反查該筆交易(格式規格請參考備註reference)
status
交易代碼,成功為 0
前端跳轉資料可能被偽造,建議您實做後端通知,若後端通知失敗請使用 Record API
進行反查詢
Backend Notify
電子支付及 Direct Pay 3D 交易完成後,TapPay自動發送後端通知至您於交易請求 backend_notify_url 所填入之 URL
若未成功接收到Backend Notify(您的後端 Server 未回應 HTTP 200),TapPay將每隔1, 2, 4, 8, 16分鐘後再度重送,最多重送五次。若都接收失敗,則會寄發通知信件至聯絡人信箱及技術聯絡人信箱。再請您依照信件指示確認訂單的最新狀態,以免發生交易狀態不一致的問題。
Value
Content-Type
application/json
Request Url
Method : POST
Sandbox
https://{backend_notify_url}
Production
https://{backend_notify_url}
Request Body
rec_trade_id
String
由 TapPay 伺服器產生的交易識別字串
將於查詢交易、退款時使用,請妥善保管
auth_code
String
銀行授權碼,僅支援 Direct Pay, Token Pay
bank_transaction_id
String
銀行端訂單編號
bank_order_number
String
收單於授權時回傳的訂單編號,支援之收單及回傳之長度請參考 Reference
order_number
String
您自定義的訂單編號,用於 TapPay 做訂單識別。若有帶入此欄位,則不能為空
amount
status
交易代碼,成功為 0
String
transaction_time_millis
transaction_complete_millis
交易完成時間 (目前僅支援玉山, 國泰收單)
pay_info
JSONObject
電子支付之支付相關資訊,僅電子支付交易回傳此物件。
此物件欄位為電子支付業者回傳,若電子支付業者未回傳對應資訊,則此物件下之參數內容可能為空字串或 0。
名稱 | 類別 | 內容 |
---|
method | String | 消費者於電子支付所使用之支付方式。 1. CREDIT_CARD(信用卡) 2. BALANCE(電子支付帳戶) 3. POINT (點數折抵) 4. DISCOUNT(LINE Pay 優惠券) 5. ACCOUNT_LINK(帳戶連結扣款) 6. CREDIT_BNPL(先買後付) |
masked_credit_card_number | String | 遮蔽後的卡片號碼。僅部分電子支付支援,請參考 電子支付支援功能 |
credit_card | Int | 使用信用卡支付金額。若無使用此支付方式會顯示為 0 |
balance | Int | 使用錢包儲值帳戶支付金額。若無使用此支付方式,會顯示為 0 |
bank_account | Int | 使用銀行連結帳戶支付金額。若無使用此支付方式,會顯示為 0 |
point | Int | LINE Point, 街口幣, 全盈支付折抵金額。若無折抵則為 0 |
discount | Int | LINE Pay 折扣碼折抵金額 |
bin_code | String | 卡片前6碼或8碼。全盈支付交易回傳。若需要須先跟全盈支付申請開通 |
identity | String | 電子支付之支付工具識別碼,由電子支付業者提供,可能為遮蔽之帳號或信用卡號 |
tool_name | String | 電子支付之支付方式名稱。若支付方式為 AccountLink 或 信用卡,該欄位回覆銀行名稱。支付方式為電子支付帳戶,則回傳電子支付帳戶名稱。 |
e_invoice_carrier
JSONObject
電子發票載具資料
目前僅支援 : JKOPAY, 全盈支付名稱 | 類別 | 內容 |
---|
type | Int(3) | 0:手機條碼 1:自然人憑證條碼 2:其他載具條碼 |
number | String(100) | 電子發票載具號碼 |
donation | Boolean | 是否捐贈 |
donation_id | String(50) | 愛心碼 |
acquirer
String
收單銀行 / 金流處理器
card_identifier
String
信用卡識別碼,每張信用卡只會對到一組識別碼。僅支援 Direct Pay, Token Pay
bank_result_code
String(40)
銀行回傳的交易結果代碼
bank_result_msg
String(300)
銀行回傳的交易結果訊息
merchant_reference_info
商戶參考資訊名稱 | 類別 | 內容 |
---|
affiliate_codes | Array | 商戶於 TapPay 後台或第三方合作方設定之聯名卡資訊,當交易符合設定時才會回傳,只支援: Direct Pay, Apple Pay, Google Pay, Samsung Pay |
instalment_info
JSONObject
若有使用分期付款時回傳
只支援: Direct Pay
名稱 | 類別 | 內容 |
---|
number_of_instalments | int | 分期期數 |
first_payment | int | 第一期金額 |
each_payment | int | 每一期金額 |
extra_info | JSONObject | 各間銀行分期額外參數不同,請參考 extra_info |
redeem_info
JSONObject
非 3D 驗證交易,且使用紅利折抵時回傳
只支援: Direct Pay
名稱 | 類別 | 內容 |
---|
used_point | String | 紅利折抵點數 |
balance | String | 紅利餘額 |
offset_amount | String | 紅利折抵金額 |
due_amount | String | 折抵後自付金額 |
extra_info | JSONObject | 各間銀行紅利額外參數不同,請參考 extra_info |
event_code
String(50)
與銀行或錢包合作之活動中,雙方協議的指定活動代碼。支援 : 悠遊付
merchandise_details
JSONObject
不適用回饋之交易商品金額、點數。僅部分電子支付支援,請參考 電子支付支援功能
// Example
"amount": 1,
"order_number": "KK44845743",
"status": 0,
"bank_transaction_id": "TP201711088cHQHr",
"transaction_time_millis": 1510136365539,
"acquirer": "TW_LINE_PAY",
"msg": "Success",
"rec_trade_id": "LN201711088cHQHr",
"pay_info": {
"point": 0,
"masked_credit_card_number": "************2178",
"method": "CREDIT_CARD"
Refund API
此 API 能讓您用後台直接進行退款,會同時做取消授權及取消請款的動作
若您有部分退款的需求,則必須呼叫此 API
由於尖峰時段銀行方面可能會花較久時間處理,因此請將 timeout 時間設定為 30 秒以避免交
易資訊不同步
當您呼叫此 API 時,TapPay 將於當日向銀行進行退款,不代表當日退款已成功。
實際退款是否成功,請於退款隔天利用 TapPay 後台或 Record API 查詢交易狀態進行確認。
為確保交易狀態一致,當銀行/錢包在請款中不支援取消授權,需等TapPay收到銀行回覆(時間請參考Each bank capture time),確認該筆交易狀態後才能進行後續動作
bank_refund_id
String(20)
商戶端的退款紀錄識別碼(需為半形的英數字),不可重複。收單有相關欄位可帶入則TapPay 會將此欄位送至收單端。支援之收單及長度請參考 Reference
amount
退款金額,全額退款可不用填此參數
外幣金額需包含兩位小數,如 100 代表 1.00
部分退款才需要填寫
分期、T2P、AFTEE 交易不支援部分退款
additional_data
JSONString(3000)
資料會加密保存,並在其他客製化需求時才解密做使用。
merchandise_details
JSONObject
不適用回饋之交易商品金額、點數。僅部分電子支付支援,請參考 電子支付支援功能
// *** 格式 ***
// 測試環境URL: https://sandbox.tappaysdk.com/tpc/transaction/refund
// 正式環境URL: https://prod.tappaysdk.com/tpc/transaction/refund
// Header:
// Content-Type: application/json
// x-api-key: YourPartnerKey
"partner_key": String,
"rec_trade_id": String,
"amount": int // 非必填
Response
status
交易代碼,成功的話為0
String
refund_id
String
退款紀錄的識別碼
bank_refund_order_number
String
收單於退款時回傳的退款編號,支援之收單及回傳之長度請參考 Reference
refund_amount
退款金額
台幣以外金額需乘以 100,如港幣(HKD) 1元 請帶 100
refund_info
JSONObject
退款資訊
電子支付返還的點數及金額資訊,僅電子支付交易回傳此物件。僅部分電子支付回覆此資訊,請參考 電子支付支援功能名稱 | 類別 | 內容 |
---|
returned_reward_amount | Int | 退款後,返還的點數折抵金額 |
returned_real_amount | Int | 退款後,返還的現金金額。 若無則顯示0。 |
is_captured
boolean
是否已請款
bank_result_code
String(40)
銀行回傳的交易結果代碼
bank_result_msg
String(300)
銀行回傳的交易結果訊息
currency
String(3)
交易幣別。格式為 ISO 4217 字母代碼,例如:TWD。銀行支援幣別請參考 reference
Record API
此 API 能讓您用您的後台直接進行查詢交易紀錄
名稱(* = 必填)
類別(長度)
partner_key*
String(64)
綁定 Portal 帳戶的驗證金鑰
records_per_page
每頁的交易數量,最大為 200
第幾頁交易
filters
JSONObject
交易紀錄的限制,有以下幾種可能:
time* 起始到結束時間上限為 90 天
amount
cardholder
merchant_id
record_status
rec_trade_id
order_number
bank_transaction_id
auth_code
currency
tsp
card_identifier
order_by
JSONObject
attribute = time
is_descending = true
排序的方式
// *** 格式 ***
// 測試環境 URL: https://sandbox.tappaysdk.com/tpc/transaction/query
// 正式環境 URL: https://prod.tappaysdk.com/tpc/transaction/query
// Header:
// Content-Type: application/json
// x-api-key: YourPartnerKey
"partner_key": String,
"records_per_page": int,
"page": int,
"filters": {
"time": {
"start_time": long,
"end_time": long
"amount": {
"upper_limit": int,
"lower_limit": int
"cardholder": {
"phone_number": String,
"name": String,
"email": String
"merchant_id": [String],
"record_status": int,
"rec_trade_id": String,
"order_number": String,
"bank_transaction_id": String,
"currency": String
"order_by": {
"attribute": String, // "time"(時間排序) 或 "amount"(金額排序)
"is_descending": boolean
Response
status
交易代碼
2 的話代表在當前過濾條件內,已無更多紀錄
String
records_per_page
每頁的交易數量,最大為 200
第幾頁交易
total_page_count
number_of_transactions
總交易筆數
trade_records
JSONArray