應用場景
- 超商繳費條碼(BARCODE)因超商端作業時間關係會於消費者付款完成兩天後回傳。
- ATM、CVS、BARCODE可透過廠商管理後台的『模擬付款』,來確認ReturnURL是否正確接收付款結果通知。
- 付款結果通知常見付款狀態未更新原因說明。
- 1|OK僅是廠商回應綠界是否收到通知,並不會改變付款狀態。
- 若因授權時間過久未收到付款結果通知訊息時,請使用查詢訂單API查詢後再顯示付款結果。
Client端方式(POST)(OrderResultURL)
當消費者付款完成後,綠界一次性反饋付款結果通知,並將頁面導至特店自製頁面
- Step1.綠界:傳送付款結果並將頁面導至特店的自製頁面網址(OrderResultURL)
- Step2.特店:收到綠界的付款結果訊息,並判斷檢查碼是否相符
注意事項:
- 若要將付款結果頁顯示於特店自製頁面,請設定[OrderResultURL]。反之,未設定則會停留於綠界付款成功頁面。
- 若[OrderResultURL]與[ClientBackURL]同時設定,將會以[OrderResultURL]為主。
- 部分銀行WebATM在交易成功後,會停留在銀行的頁面,並不會導回給綠界,因此綠界也不會將頁面導回到[OrderResultURL]的頁面
- 銀聯卡及非即時交易(ATM、CVS、BARCODE)不支援此參數。
- 建議在測試階段時先不要設定此參數,可將畫面停留在綠界,看見綠界所提供的錯誤訊息,便可有效除錯。
- 若有設定此參數,請務必根據回傳的交易狀態來判斷顯示付款成功與否的頁面。
- 因各家銀行授權時間不同,若因授權時間過久未收到反饋訊息,請使用查詢訂單API查詢後再顯示付款結果。
- 若此參數設定網址未使用https時,部份瀏覽器可能會出現警告訊息提醒。
HTTPS 傳輸協定
- Accept :text/html
- Content Type :application/x-www-form-urlencoded
- HTTP Method :POST
綠界回傳參數說明
MerchantID String(10)
特店編號
MerchantTradeNo String(20)
特店交易編號
訂單產生時傳送給綠界的特店交易編號。
StoreID String(20)
特店旗下店舖代號
RtnCode Int
交易狀態
- 若回傳值為1時,為付款成功
- 其餘代碼皆為交易異常,請至廠商管理後台確認後再出貨。
注意事項:
- 若RtnCode為”10300066″ 時,代表交易付款結果待確認中,請勿出貨,請至廠商管理後台確認已付款完成再出貨。
RtnMsg String(200)
交易訊息
TradeNo String(20)
綠界的交易編號
請保存綠界的交易編號與特店交易編號[MerchantTradeNo]的關連。
TradeAmt Int
交易金額
PaymentDate String(20)
付款時間
格式為yyyy/MM/dd HH:mm:ss
PaymentType String(20)
特店選擇的付款方式
請參考回覆付款方式一覽表
PaymentTypeChargeFee Number
交易手續費金額
TradeDate String(20)
訂單成立時間
格式為yyyy/MM/dd HH:mm:ss
SimulatePaid Int
是否為模擬付款
- 是否為模擬付款
- 0:代表此交易非模擬付款。
- 1:代表此交易為模擬付款,RtnCode也為1。並非是由消費者實際真的付款,所以綠界也不會撥款給廠商,請勿對該筆交易做出貨等動作,以避免損失。
CustomField1 String(50)
自訂名稱欄位1
提供合作廠商使用記錄用客製化使用欄位
CustomField2 String(50)
自訂名稱欄位2
提供合作廠商使用記錄用客製化使用欄位
CustomField3 String(50)
自訂名稱欄位3
提供合作廠商使用記錄用客製化使用欄位
CustomField4 String(50)
自訂名稱欄位4
提供合作廠商使用記錄用客製化使用欄位
CheckMacValue String
檢查碼
特店必須檢查檢查碼 [CheckMacValue] 來驗證,請參考附錄檢查碼機制。
綠界回傳參數範例
付款結果通知會以「form data」格式直接回傳參數,回傳格式「參數=值」表示,參數與參數之間以&隔開
CustomField1=&CustomField2=&CustomField3=&CustomField4=&MerchantID=3002607
&MerchantTradeNo=Test1510056539&PaymentDate=2017/11/02 16:22:18
&PaymentType=Credit_CreditCard&PaymentTypeChargeFee=1&RtnCode=1&RtnMsg=交易成功&SimulatePaid=0&StoreID=&TradeAmt=100&TradeDate=2017/11/07 20:08:59&TradeNo=17110720085960236789
&CheckMacValue=F6C47E0EFDFD81139E3B1AA1D27DC2BDFF6CD569202B4BCCBCD939C0DA60A5DE
特店回覆參數說明
回傳值為純字串並無參數名稱。
若收到綠界回傳結果通知,請回傳1|OK,此訊息僅代表特店回應是否已收到綠界回傳通知,並不會影響訂單的狀態。
1|OK
注意事項:
- 特店務必判斷檢查碼[CheckMacValue]是否正確,以及是否已經對該筆訂單的付款通知,做過相對應的處理,以免造成交易狀態無法同步的損失。
- 若未正確回應1|OK,系統會隔5~15分鐘後重發訊息給特店,當天重複發送四次。
- 若特店持續收到綠界回傳付款資訊,此時請檢查是否未正確回應1|OK給綠界,常見錯誤回傳值為(“1|OK”、1|ok、_OK 、1\OK、空白 )。
- 若遇消費者已付款,但未收到綠界回傳付款完成資訊,此時請檢查接收回傳參數的伺服器是否服務正常,導致無法接收。請參考:無法收到綠界回傳的付款結果通知
- 當模擬付款[SimulatePaid]的值為1時,表示此筆訂單資訊是由綠界廠商後台模擬付款按鈕所發送的回傳付款通知測試資訊,並非是由消費者實際真的付款,所以綠界也不會撥款給特店,請勿對該筆交易做出貨等動作,以避免損失。
- 特店務必判斷交易狀態[RtnCode]是否為1,若非1時請勿對該筆交易做出貨動作,並取得交易訊息[RtnMsg] 記錄失敗原因。
YAML
提供的 YAML 文件用於定義 API 的配置、結構、操作和基礎設施管理等資訊,方便開發人員理解和使用 API。
openapi: 3.1.0
info:
title: ECPay Payment Result Notification API
version: 1.0.0
servers:
- url: ReturnUrl
description: Production Environment
- url: ReturnUrl
description: Testing Environment
paths:
/payment/Result:
post:
summary: Payment Result Notification
description: Notify the merchant of the payment result.
requestBody:
required: true
content:
html/text:
schema:
type: object
required:
- MerchantID
- MerchantTradeNo
- RtnCode
properties:
MerchantID:
type: string
maxLength: 10
description: Merchant ID
MerchantTradeNo:
type: string
maxLength: 20
description: Merchant trade number, sent to ECPay when the order is created
StoreID:
type: string
maxLength: 20
description: Store ID under the merchant
RtnCode:
type: integer
description: Transaction status. If the return value is 1, it indicates successful payment. Other codes indicate transaction abnormalities. Please check in the merchant management backend before shipping.
RtnMsg:
type: string
maxLength: 200
description: Transaction message
TradeNo:
type: string
maxLength: 20
description: ECPay's transaction number. Please keep the relationship between ECPay's transaction number and the merchant trade number
TradeAmt:
type: integer
description: Transaction amount
PaymentDate:
type: string
maxLength: 20
format: date-time
description: Payment time
PaymentType:
type: string
maxLength: 20
description: Payment method selected by the merchant. Please refer to the list of payment methods returned
PaymentTypeChargeFee:
type: number
description: Transaction handling fee amount
TradeDate:
type: string
maxLength: 20
format: date-time
description: Order creation time
SimulatePaid:
type: integer
enum: [0, 1]
description: Whether it is a simulated payment.
CustomField1:
type: string
maxLength: 50
description: Custom field 1, provided for cooperative partners for custom use
CustomField2:
type: string
maxLength: 50
description: Custom field 2, provided for cooperative partners for custom use
CustomField3:
type: string
maxLength: 50
description: Custom field 3, provided for cooperative partners for custom use
CustomField4:
type: string
maxLength: 50
description: Custom field 4, provided for cooperative partners for custom use
CheckMacValue:
type: string
description: Check code. Merchants must check the check code to verify
responses:
'200':
description: Success
content:
text/plain:
schema:
type: string
example: 1|OK
'400':
description: Invalid request
'500':
description: Server error