Server APIs
Overview
我們的後台使用的是 REST 架構,所以每個請求皆是使用 HTTP POST 來進行傳輸
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) | 用卡號所換得的字串,由 getPrime 成功時回傳 prime 的時效為 90秒 若您有開啟 Apple Pay 延後授權,請自行保管 Prime(預設 Prime 有效期限為 30 天) 呼叫 Pay By Prime ,您可以在 sandbox 環境中使用此測試用prime
|
||||||||||||||||||||||||||||||||||||
partner_key* | String(64) | 綁定 Portal 帳戶的驗證金鑰 | ||||||||||||||||||||||||||||||||||||
merchant_id* | String(50) | 於 Portal 登錄商家時所產生的識別碼 | ||||||||||||||||||||||||||||||||||||
merchant_group_id | String(50) | 於 Portal 設置的商家管理設置,交易時會依據 portal 的支付配置進行交易 不可與 merchant_id 同時使用 |
||||||||||||||||||||||||||||||||||||
amount* | int | 交易金額。目前支援台幣、港幣、馬幣、美金,台幣以外金額需乘以 100後帶入,各幣別交易金額上限,請參考 reference | ||||||||||||||||||||||||||||||||||||
merchandise_details | JSONObject | 交易商品明細 目前只支援 JKOPAY 悠遊付 全盈支付
|
||||||||||||||||||||||||||||||||||||
currency | String(3) | 貨幣種類,銀行支援幣別請參考 reference,預設為 TWD | ||||||||||||||||||||||||||||||||||||
order_number | String(50) | 您自定義的訂單編號,用於 TapPay 做訂單識別,可重複帶入 格式請參考 reference。若有帶入此欄位,則不能為空 |
||||||||||||||||||||||||||||||||||||
bank_transaction_id | String(40) | 銀行端的訂單編號 強烈建議商戶可在此自訂,但不能與之前的重複;若您沒有自訂則會自動幫您產生一組。 但若您沒自訂,當發生421 Gateway 操作逾時(發生機率低),則無法反查該筆交易 (格式規格請參考備註 reference) |
||||||||||||||||||||||||||||||||||||
details* | String(100) | 交易品項內容,為符合 PCI 要求至少必須要有品項名稱 我們的詐欺檢測器將會以此作為詐欺判定的基準,所以建議您填寫的資訊能越詳細越好 銀行儲存格式規格請參考 reference 若您啟用TSP服務,且收單銀行為台新銀行,請務必填入交易品項內容; 若沒帶入,TapPay將預設該值為交易序號以避免交易失敗 若您的收單銀行為藍新金流或支付方式為LINE Pay, Atome,此欄位須填入值,否則會導致交易失敗 |
||||||||||||||||||||||||||||||||||||
cardholder* | JSONObject | 持卡人或購買人資訊,裡面應包含以下值。 以下資料將為「詐欺檢測器」,資料越詳細,可獲得越完整的保護 若此筆交易需身份驗證,請詳讀備註中各銀行需驗證的必填欄位,並在對應的參數欄位中帶入正確的值 若無此資料,則該對應的 Key 值,可以帶空字串,(如:zip_code: “”)
|
||||||||||||||||||||||||||||||||||||
cardholder_verify | JSONObject | 身份驗證欄位,請注意:若此筆交易需身份驗證,請詳讀備註中各銀行需驗證的必填欄位,若該欄位為 “true” ,則會將 cardholder 欄位對應之資訊送至收單機構進行身份驗證。 若要進行兩段式身份驗證,務必於 kyc_verification_merchant_id 填入您於Portal的商家管理 > KYC 驗證商家設置的merchant ID 如使用 AE 卡進行驗證,將會扣除 1 元,並於兩週內會退還。 您可以在 sandbox 環境中使用備註中的測試用身分證字號及電話號碼 支援: Direct Pay 有以下兩種使用情境
驗證欄位
|
||||||||||||||||||||||||||||||||||||
kyc_verification_merchant_id | String | 此欄位請填入僅供身份驗證,無授權功能的merchant ID。 支援產業:電支產業/ 產壽險業 |
||||||||||||||||||||||||||||||||||||
instalment | int(2) | 分期付款期數,預設為 0 目前支援: 台新銀行, 財團法人聯合信用卡處理中心, 藍新金流, 國泰世華銀行, 玉山銀行, 中國信託銀行, 環匯亞太, 聯邦銀行 不支援: Apple Pay, Google Pay, Samsung Pay, LINE Pay, JKOPAY, 悠遊付, Atome, Pi錢包, 全盈支付 由於 Atome 不可選擇分期期數,結帳時 Atome 即自動分成三期,故此欄位不支援 Atome |
||||||||||||||||||||||||||||||||||||
delay_capture_in_days | int | 定義交易授權後銀行要過多久才會請款,單位為天 此參數非必要,預設值為0(當天請款) 若您想要自行手動請款,可帶入 -1 表示暫時不請款 * 收單銀行皆設有請款期限,請向您的收單銀行確認。若您採取手動請款模式,請留意如果該筆交易的請款日超過銀行請款期限,可能會導致請款失敗。 |
||||||||||||||||||||||||||||||||||||
three_domain_secure | Boolean | 是否開啟 3D 驗證,預設為 false 目前支援: 台新銀行、中國信託銀行、財團法人聯合信用卡處理中心、玉山銀行、永豐(New)、藍新金流、富邦、RAZER PAY、彰化銀行、國泰世華銀行、聯邦銀行 3DS2.0 驗證目前只支援AE 卡交易且收單行為財團法人聯合信用卡處理中心 不支援: Apple Pay, Google Pay, Samsung Pay, LINE Pay, JKOPAY, 悠遊付, Atome, Pi錢包, 全盈支付 |
||||||||||||||||||||||||||||||||||||
result_url | JSONObject | 使用 LINE Pay, JKOPAY, 悠遊付, Atome, Pi錢包, 全盈支付 或 three_domain_secure 為 true 時必填
|
||||||||||||||||||||||||||||||||||||
remember | boolean | 是否記憶卡號 不支援: Apple Pay, Google Pay, Samsung Pay, JKOPAY, 悠遊付, Atome, Pi錢包, 全盈支付 LINE Pay 交易 remember: true 時,只支援使用 POINT 與信用卡 |
||||||||||||||||||||||||||||||||||||
redeem | boolean | 是否為紅利折抵。 目前支援: 財團法人聯合信用卡處理中心 不支援: Apple Pay, Google Pay, Samsung Pay, LINE Pay, JKOPAY, 悠遊付, Atome, Pi錢包, 全盈支付 |
||||||||||||||||||||||||||||||||||||
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 進行產壽險交易時,以下欄位皆為必填
|
||||||||||||||||||||||||||||||||||||
extra_info | JSONObject | 額外資訊 支援: Atome
|
// *** 格式 ***
// 測試環境 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": "LittleMing@Wang.com",
"zip_code": "100",
"address": "台北市天龍區芝麻街1號1樓",
"national_id": "A123456789"
},
"remember": true
}
Response
名稱 | 類別(長度) | 內容 | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
status | int | 交易代碼,成功的話為0 | ||||||||||||||||||||||||||||||||||||
msg | String | 錯誤訊息 | ||||||||||||||||||||||||||||||||||||
rec_trade_id | String(20) | 由 TapPay 伺服器產生的交易字串 將於退款時用到,請妥善保管 |
||||||||||||||||||||||||||||||||||||
bank_transaction_id | String(40) | 銀行端的訂單編號 強烈建議商戶可在此自訂,但不能與之前的重複;若您沒有自訂則會自動幫您產生一組。 但若您沒自訂,當發生421 Gateway 操作逾時(發生機率低),則無法反查該筆交易 格式規格請參考 reference |
||||||||||||||||||||||||||||||||||||
bank_order_number | String | 銀行或錢包端於授權時回傳的訂單編號 支援:悠遊付, Pi錢包 各支援銀行或錢包回傳長度限制,請參考 Reference |
||||||||||||||||||||||||||||||||||||
auth_code | String(6) | 銀行授權碼,不支援:LINE Pay, JKOPAY, 悠遊付, Atome, Pi錢包, 全盈支付 | ||||||||||||||||||||||||||||||||||||
card_secret | JSONObject | 卡片保管資訊。不支援:Apple Pay, Google Pay, Samsung Pay, JKOPAY, 悠遊付, Atome, Pi錢包, 全盈支付 如果呼叫時 remember = false 則不會回傳此物件 透過 LINE Pay 獲得的 card key 與 card token,若在 180 天內無成功交易,將會過期導致交易失敗 裡面包含以下值:
|
||||||||||||||||||||||||||||||||||||
amount | int | 交易金額,台幣以外金額需乘以 100,如港幣(HKD) 1元代表 100 | ||||||||||||||||||||||||||||||||||||
currency | String(3) | 貨幣種類,銀行支援幣別請參考reference 不支援:LINE Pay, JKOPAY, 悠遊付, Atome, Pi錢包, 全盈支付 |
||||||||||||||||||||||||||||||||||||
card_info | JSONObject | 卡片資訊。不支援: LINE Pay, JKOPAY, 悠遊付, Atome, Pi錢包, 全盈支付
|
||||||||||||||||||||||||||||||||||||
order_number | String(50) | 您自定義的訂單編號,用於 TapPay 做訂單識別,可重複帶入 格式請參考 reference |
||||||||||||||||||||||||||||||||||||
acquirer | String | 收單銀行 / 金流處理器 | ||||||||||||||||||||||||||||||||||||
transaction_time_millis | long | 交易時間 | ||||||||||||||||||||||||||||||||||||
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 驗證交易,且使用分期付款時回傳 不支援:Apple Pay, Google Pay, Samsung Pay, LINE Pay, JKOPAY, 悠遊付, Atome, Pi 錢包, 全盈支付
|
||||||||||||||||||||||||||||||||||||
redeem_info | JSONObject | 非 3D 驗證交易,且使用紅利折抵時回傳 不支援:Apple Pay, Google Pay, Samsung Pay, LINE Pay, JKOPAY, 悠遊付, Atome, Pi 錢包, 全盈支付
|
||||||||||||||||||||||||||||||||||||
card_identifier | String | 不支援:Apple Pay, Google Pay, Samsung Pay, LINE Pay, JKOPAY, 悠遊付, Atome, Pi 錢包, 全盈支付 信用卡識別碼。每張信用卡只會對到一組識別碼。 |
||||||||||||||||||||||||||||||||||||
merchant_reference_info | JSON | 商戶參考資訊
|
||||||||||||||||||||||||||||||||||||
event_code | String(50) | 與銀行或錢包合作之活動中,雙方協議的指定活動代碼。支援 : 悠遊付 | ||||||||||||||||||||||||||||||||||||
is_rba_verified | Boolean | 該交易有無取得 RBA 評估的風險分數RBA 可以為每筆交易評估風險,以辨認和防止偽冒交易發生。該產品即將上線,您可以參考 TapPay 官網更了解 RBA 這項服務。 | ||||||||||||||||||||||||||||||||||||
transaction_method_details | JSONObject | 交易方式細節 RBA 可以為每筆交易評估風險,以辨認和防止偽冒交易發生。該產品即將上線,您可以參考 TapPay 官網更了解 RBA 這項服務。
|
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 進行定期定額扣款,且呼叫的週期與金額可自行決定。
名稱(* = 必填) | 類別(長度) | 內容 | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
card_key* | String(64) | 卡片安全金鑰 由 Pay by Prime 取得 |
||||||||||||||||||||||||||||||||||||
card_token* | String(67) | 卡片識別字串 由 Pay by Prime 取得 |
||||||||||||||||||||||||||||||||||||
partner_key* | String(64) | 綁定 Portal 帳戶的驗證金鑰 | ||||||||||||||||||||||||||||||||||||
merchant_id* | String(50) | 於 Portal 登錄商家時所產生的識別碼 | ||||||||||||||||||||||||||||||||||||
merchant_group_id | String(50) | 於 Portal 設置的商家管理設置,交易時會依據 portal 的支付配置進行交易 不可與 merchant_id 同時使用 |
||||||||||||||||||||||||||||||||||||
amount* | int | 交易金額。目前支援台幣、港幣、馬幣、美金,台幣以外金額需乘以 100後帶入,各幣別交易金額上限,請參考 reference | ||||||||||||||||||||||||||||||||||||
currency* | String(3) | 貨幣種類,銀行支援幣別請參考 reference | ||||||||||||||||||||||||||||||||||||
order_number | String(50) | 您自定義的訂單編號,用於 TapPay 做訂單識別,可重複帶入 格式請參考 reference。若有帶入此欄位,則不可為空 |
||||||||||||||||||||||||||||||||||||
bank_transaction_id | String(40) | 銀行端的訂單編號 強烈建議商戶可在此自訂,但不能與之前的重複;若您沒有自訂則會自動幫您產生一組。 但若您沒自訂,當發生421 Gateway 操作逾時(發生機率低),則無法反查該筆交易 (格式規格請參考備註 reference) |
||||||||||||||||||||||||||||||||||||
details* | String(100) | 交易品項內容,為符合 PCI 要求至少必須要有品項名稱 我們的詐欺檢測器將會以此作為詐欺判定的基準,所以建議您填寫的資訊能越詳細越好 銀行儲存格式規格請參考 reference 若您啟用TSP服務,且收單銀行為台新銀行,請務必填入交易品項內容; 若沒帶入,TapPay將預設該值為交易序號以避免交易失敗 若您的收單銀行為藍新金流或支付方式為LINE Pay,此欄位須填入值,否則會導致交易失敗 |
||||||||||||||||||||||||||||||||||||
cardholder_verify | JSONObject | 身份驗證欄位,請注意:若此筆交易需身份驗證,請詳讀備註中各銀行需驗證的必填欄位,若該欄位為 “true” ,則會將 cardholder 欄位對應之資訊送至收單機構進行身份驗證。 若要進行兩段式身份驗證,務必於 kyc_verification_merchant_id 填入您於Portal的商家管理 > KYC 驗證商家設置的merchant ID 如使用 AE 卡進行驗證,將會扣除 1 元,並於兩週內會退還。 您可以在 sandbox 環境中使用備註中的測試用身分證字號及電話號碼 支援: Direct Pay 有以下兩種使用情境
驗證欄位
|
||||||||||||||||||||||||||||||||||||
kyc_verification_merchant_id | String | 此欄位請填入僅供身份驗證,無授權功能的merchant ID。 支援產業:電支產業/ 產壽險業 |
||||||||||||||||||||||||||||||||||||
instalment | int(2) | 分期付款期數,預設為 0 目前支援: 台新銀行, 財團法人聯合信用卡處理中心, 藍新金流, 國泰世華銀行, 玉山銀行, 中國信託銀行, 環匯亞太, 聯邦銀行 不支援: Apple Pay, Google Pay, Samsung Pay, LINE Pay, JKOPAY, 悠遊付, Atome, Pi 錢包, 全盈支付 |
||||||||||||||||||||||||||||||||||||
delay_capture_in_days | int | 定義交易授權後銀行要過多久才會請款,單位為天 此參數非必要,預設值為0(當天請款) 若您想要自行手動請款,可帶入 -1 表示暫時不請款 * 收單銀行皆設有請款期限,請向您的收單銀行確認。若您採取手動請款模式,請留意如果該筆交易的請款日超過銀行請款期限,可能會導致請款失敗。 |
||||||||||||||||||||||||||||||||||||
three_domain_secure | Boolean | 是否開啟 3D 驗證,預設為 false 目前支援:台新銀行、中國信託銀行、財團法人聯合信用卡處理中心、玉山銀行、永豐(New)、藍新金流、富邦、RAZER PAY、彰化銀行、國泰世華銀行、聯邦銀行 3DS2.0 驗證目前只支援AE 卡交易且收單行為財團法人聯合信用卡處理中心 不支援: Apple Pay, Google Pay, Samsung Pay, LINE Pay, JKOPAY, 悠遊付, Atome, Pi 錢包, 全盈支付 |
||||||||||||||||||||||||||||||||||||
result_url | JSONObject | three_domain_secure 為 true 時必填 不支援: Apple Pay, Google Pay, LINE Pay, Samsung Pay
|
||||||||||||||||||||||||||||||||||||
card_ccv | String | 信用卡安全碼。不可與ccv_prime 同時帶入 當有以下情況時請帶入此參數 1. 未在get-ccv-prime 時取得ccv_prime但想要銀行驗證此參數 2. 未在get-ccv-prime 時取得ccv_prime但使用 AE 卡進行3DS2.0 驗證交易時 不支援LINE Pay, Easy Wallet, Atome, Pi 錢包, 全盈支付 |
||||||||||||||||||||||||||||||||||||
redeem | boolean | 是否為紅利折抵。 目前支援: 財團法人聯合信用卡處理中心 不支援 : Apple Pay, Google Pay, Samsung Pay, LINE Pay, JKOPAY, 悠遊付, Atome, Pi 錢包, 全盈支付 |
||||||||||||||||||||||||||||||||||||
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 欄位。 |
// *** 格式 ***
// 測試環境 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
}
Response
名稱 | 類別(長度) | 內容 | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
status | int | 交易代碼,成功的話為0 | ||||||||||||||||||||||||||||||||||||
msg | String | 錯誤訊息 | ||||||||||||||||||||||||||||||||||||
rec_trade_id | String(20) | 由 TapPay 伺服器產生的交易字串 將於退款時用到,請妥善保管 |
||||||||||||||||||||||||||||||||||||
bank_transaction_id | String(40) | 銀行端的訂單編號 若有需求可在此自訂,但不能與之前的重複 若您沒有自訂則會自動幫您產生一組 格式規格請參考 reference |
||||||||||||||||||||||||||||||||||||
bank_order_number | String | 銀行或錢包端於授權時回傳的訂單編號 支援:悠遊付 各支援銀行或錢包回傳長度限制,請參考 Reference |
||||||||||||||||||||||||||||||||||||
amount | int | 交易金額,台幣以外金額需乘以 100,如港幣(HKD) 1元代表 100 | ||||||||||||||||||||||||||||||||||||
currency* | String(3) | 貨幣種類,銀行支援幣別請參考 reference | ||||||||||||||||||||||||||||||||||||
auth_code | String(6) | 銀行授權碼,不支援: LINE Pay, JKOPAY, 悠遊付, Atome, Pi 錢包, 全盈支付 | ||||||||||||||||||||||||||||||||||||
card_info | JSONObject | 卡片資訊。不支援: LINE Pay, JKOPAY, 悠遊付, Atome, Pi 錢包, 全盈支付
|
||||||||||||||||||||||||||||||||||||
order_number | String(50) | 您自定義的訂單編號,用於 TapPay 做訂單識別,可重複帶入 格式請參考 reference |
||||||||||||||||||||||||||||||||||||
acquirer | String | 收單銀行 / 金流處理器 | ||||||||||||||||||||||||||||||||||||
transaction_time_millis | long | 交易時間 | ||||||||||||||||||||||||||||||||||||
bank_transaction_time | JSONObject | 銀行處理時間 | ||||||||||||||||||||||||||||||||||||
bank_result_code | String(40) | 銀行回傳的交易結果代碼 | ||||||||||||||||||||||||||||||||||||
bank_result_msg | String(300) | 銀行回傳的交易結果訊息 | ||||||||||||||||||||||||||||||||||||
payment_url | String | 付款頁面網址,將此網址回傳至前端跳轉 不支援: Apple Pay, Google Pay, Samsung Pay, LINE Pay, JKOPAY, 悠遊付, Atome, Pi 錢包, 全盈支付 |
||||||||||||||||||||||||||||||||||||
instalment_info | JSONObject | 非 3D 驗證交易,且使用分期付款時回傳 不支援: Apple Pay, Google Pay, Samsung Pay, LINE Pay, JKOPAY, 悠遊付, Atome, Pi 錢包, 全盈支付
|
||||||||||||||||||||||||||||||||||||
redeem_info | JSONObject | 非 3D 驗證交易,且使用紅利折抵時回傳 不支援: Apple Pay, Google Pay, Samsung Pay, LINE Pay, JKOPAY, 悠遊付, Atome, Pi 錢包, 全盈支付
|
||||||||||||||||||||||||||||||||||||
card_identifier | String | 信用卡識別碼。每張信用卡只會對到一組識別碼。 不支援: Apple Pay, Google Pay, Samsung Pay, LINE Pay, JKOPAY, 悠遊付, Atome, Pi 錢包, 全盈支付 |
||||||||||||||||||||||||||||||||||||
merchant_reference_info | JSON | 商戶參考資訊
|
||||||||||||||||||||||||||||||||||||
is_rba_verified | Boolean | 該交易有無取得 RBA 評估的風險分數RBA 可以為每筆交易評估風險,以辨認和防止偽冒交易發生。該產品即將上線,您可以參考 TapPay 官網更了解 RBA 這項服務。 | ||||||||||||||||||||||||||||||||||||
transaction_method_details | JSONObject | 交易方式細節 RBA 可以為每筆交易評估風險,以辨認和防止偽冒交易發生。該產品即將上線,您可以參考 TapPay 官網更了解 RBA 這項服務。
|
Frontend Redirect
- LINE Pay, JKOPAY, 悠遊付, Atome, Pi錢包, 全盈支付 交易完成後,TapPay 會幫您 redirect 到您於 Pay by Prime 設定的 frontend_redirect_url 的地方去 TapPay 會帶四個交易完成的參數
- 3D驗證交易完成後,TapPay 會幫您 redirect 到您於 Pay by Prime / Pay by Token 設定的 frontend_redirect_url 的地方去 TapPay 會帶四個交易完成的參數
Request Header
Key | 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 | Int | 交易代碼,成功為 0 |
前端跳轉資料可能被偽造,建議您實做後端通知,若後端通知失敗請使用 Record API 進行反查詢
Backend Notify
- LINE Pay, JKOPAY, 悠遊付 Atome, Pi錢包, 全盈支付 交易完成後,透過 pay by prime 設定 backend_notify_url 會發一個 POST 到 backend_notify_url 進行通知
- 3D驗證交易完成後,透過 pay by prime / pay by token 設定 backend_notify_url 會發一個 POST 到 backend_notify_url 進行通知
- 若未成功接收到Backend Notify,TapPay將每隔1, 2, 4, 8,16分鐘後再度重送,最多重送五次。若都接收失敗,則會寄發通知信件至聯絡人信箱及技術聯絡人信箱。再請您依照信件指示確認訂單的最新狀態,以免發生交易狀態不一致的問題。
Request Header
Key | Value |
---|---|
Content-Type | application/json |
Request Url
Type | Method : POST |
---|---|
Sandbox | https://{backend_notify_url} |
Production | https://{backend_notify_url} |
Request Body
名稱 | 類別 | 內容 | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
rec_trade_id | String | 由 TapPay 伺服器產生的交易識別字串 將於查詢交易、退款時使用,請妥善保管 |
|||||||||||||||||||||||||||
auth_code | String | 銀行授權碼,不支援: LINE Pay, JKOPAY, 悠遊付, Atome, Pi錢包, 全盈支付 | |||||||||||||||||||||||||||
bank_transaction_id | String | 銀行端訂單編號 | |||||||||||||||||||||||||||
bank_order_number | String | 銀行或錢包端於授權時回傳的訂單編號 支援:悠遊付 各支援銀行或錢包回傳長度限制,請參考 Reference |
|||||||||||||||||||||||||||
order_number | String | 您自定義的訂單編號,用於 TapPay 做訂單識別。若有帶入此欄位,則不能為空 | |||||||||||||||||||||||||||
amount | Int | 金額 | |||||||||||||||||||||||||||
status | Int | 交易代碼,成功為 0 | |||||||||||||||||||||||||||
msg | String | 交易訊息 | |||||||||||||||||||||||||||
transaction_time_millis | Long | 交易時間 | |||||||||||||||||||||||||||
pay_info | JSONObject | 若此交易使用 LINE Pay, JKOPAY, 悠遊付, Atome, Pi錢包, 全盈支付 時回傳訊息 Atome 只能綁定銀行帳戶和 debit card,所以 pay_info 中只有 bank_account 會有值
|
|||||||||||||||||||||||||||
e_invoice_carrier | JSONObject | 電子發票載具資料 目前僅支援 : JKOPAY, 全盈支付
|
|||||||||||||||||||||||||||
acquirer | String | 收單銀行 / 金流處理器 | |||||||||||||||||||||||||||
card_identifier | String | 信用卡識別碼。每張信用卡只會對到一組識別碼。 不支援: Apple Pay, Google Pay, Samsung Pay, LINE Pay, JKOPAY, 悠遊付, Atome, Pi錢包, 全盈支付 |
|||||||||||||||||||||||||||
bank_result_code | String(40) | 銀行回傳的交易結果代碼 | |||||||||||||||||||||||||||
bank_result_msg | String(300) | 銀行回傳的交易結果訊息 | |||||||||||||||||||||||||||
merchant_reference_info | JSON | 商戶參考資訊
|
|||||||||||||||||||||||||||
instalment_info | JSONObject | 若有使用分期付款時回傳 不支援:Apple Pay, Google Pay, Samsung Pay, LINE Pay, JKOPAY, 悠遊付, Atome, Pi錢包, 全盈支付
|
|||||||||||||||||||||||||||
redeem_info | JSONObject | 非 3D 驗證交易,且使用紅利折抵時回傳 不支援: Apple Pay, Google Pay, Samsung Pay, LINE Pay, JKOPAY, 悠遊付, Atome, Pi錢包, 全盈支付
|
|||||||||||||||||||||||||||
event_code | String(50) | 與銀行或錢包合作之活動中,雙方協議的指定活動代碼。支援 : 悠遊付 | |||||||||||||||||||||||||||
merchandise_details | JSONObject | 交易商品明細 目前只支援 JKOPAY 悠遊付 Atome 全盈支付
|
{
// 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),確認該筆交易狀態後才能進行後續動作
名稱(* = 必填) | 類別(長度) | 內容 | ||||||
---|---|---|---|---|---|---|---|---|
partner_key* | String(64) | 綁定 Portal 帳戶的驗證金鑰 | ||||||
rec_trade_id* | String(20) | 欲退款的交易字串,任何一筆交易成功時皆會回傳 | ||||||
bank_refund_id | String(20) | 商戶定義的退款紀錄識別碼(需為半形的英數字),不可重複。 支援:玉山銀行, Atome |
||||||
amount | int | 退款金額,全額退款可不用填此參數 外幣金額需包含兩位小數,如 100 代表 1.00 部分退款才需要填寫 |
||||||
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 | int | 交易代碼,成功的話為0 | |||||||||
msg | String | 錯誤訊息 | |||||||||
refund_id | String | 退款紀錄的識別碼 | |||||||||
bank_refund_order_number | String | 銀行或錢包端於退款時回傳的退款編號 支援:悠遊付, Atome, Pi錢包, 全盈支付 各支援銀行或錢包回傳長度限制,請參考 Reference |
|||||||||
refund_amount | int | 退款金額 台幣以外金額需乘以 100,如港幣(HKD) 1元 請帶 100 |
|||||||||
refund_info | JSONObject | 退款資訊 僅限於錢包交易才會回傳。此欄位主要顯示在執行退款時,錢包端返還的點數及金額資訊。 若一筆交易同時使用現金和點數折抵來付款,退款後會依據各錢包本身規則決定優先返還點數或是金額。 目前僅支援 :全盈支付
|
|||||||||
is_captured | boolean | 是否已請款 | |||||||||
bank_result_code | String(40) | 銀行回傳的交易結果代碼 | |||||||||
bank_result_msg | String(300) | 銀行回傳的交易結果訊息 | |||||||||
currency | String(3) | 貨幣種類(ISO 4217)。銀行支援幣別請參考 reference |
Record API
此 API 能讓您用您的後台直接進行查詢交易紀錄
名稱(* = 必填) | 類別(長度) | 預設 | 內容 |
---|---|---|---|
partner_key* | String(64) | 綁定 Portal 帳戶的驗證金鑰 | |
records_per_page | int | 50 | 每頁的交易數量,最大為 200 |
page | int | 0 | 第幾頁交易 |
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 | int | 交易代碼 2 的話代表在當前過濾條件內,已無更多紀錄 |
msg | String | 錯誤訊息 |
records_per_page | int | 每頁的交易數量,最大為 200 |
page | int | 第幾頁交易 |
total_page_count | int | 總頁數 |
number_of_transactions | long | 總交易筆數 |
trade_records | JSONArray | 交易紀錄 |