Credit Card Binding / ReturnURL

Scenario

Server-side notifications(ReturnURL)
When a consumer makes a payment, merchant’s server (i.e. ReturnURL) will receive a notification sent by ECPay’s. When your server receives ECPay’s notification, please respond a string 1|OK.

  • Step1. ECPay’s server:send payment notification to ReturnURL.
  • Step2. Merchant’s server: respond a string 1|OK.

❗ Special note:

  • For common errors of not receiving notifications please see the FAQ.
  • The string 1|OK is merely a message in response to tell ECPay’s server that the ReturnURL already successfully received the notification request; the 1|OK will not change the payment state.

Message format

  • Accept :text/html
  • Content Type:application/json
  • HTTP Method:POST

Request (Json format)

MerchantID String(10)
Required

For platform merchants, the value please populate with the Platform merchant’s MerchantID.

RqHeader Object
Required

Request header

Timestamp Number
Required

Unix timestamp

❗ Special note:

  • ECPay will verify the timestamp.If ECPay receives the request is more 10 minutes late than the timestamp, the transaction will be failed.
  • Merchants are suggested to synchronize the time of a computer on client- or server-side to another server or nearest reference time source.
  • For more details can be seen here; another online tool can be found here.

Data String
Required

Payload of JSON that has been encrypted.

Response Example (Json format)

{
    "MerchantID": "3002607",
    "RpHeader": {
        "Timestamp": 1234564848
    },
    "TransCode": 1,
    "TransMsg": "Success",
    "Data": "…"
}

Message payload of Data (Json format):

RtnCode Int

Response codes to indicate whether the API is successfully executed or not.

  • 1: API is successfully executed.
  • Others: failed.
  • For more details please see error codes.

RtnMsg String(200)

Response messages.

PlatformID String(10)

MerchantID String(10)

MerchantMemberID String(30)

Merchant Member ID

BindCardID String(64)

Binding Credit Card Code

IsSameCard Bool

Are credit cards repeating their bindings?

OrderInfo Object

Order information

MerchantTradeNo String(20)

Merchant’s order ID

TradeNo String(20)

ECPay’s order ID. Please save this parameter in merchant’s system in order to keep the relation between ECPay’s order ID merchants’ order ID MerchantTradeNo.

TradeAmt Int

Transaction amount

TradeDate String(20)

Time at which the order was created. Format: yyyy/MM/dd HH:mm:ss

PaymentType String(20)

Payment method

PaymentDate String(20)

Date of payment. Format: yyyy/MM/dd HH:mm:ss

ChargeFee Number

ECPay’s service charge

ProcessFee   Number

ECPay’s transaction processing fee

TradeStatus String(8)

Status of transaction

CardInfo JSON

Credit card information. If using credit card or Union Pay, the CardInfo will be returned.

AuthCode String(6)

Authorization code. Not returned if using Union Pay card.

Gwsr Int

ID of authorization

ProcessDate String(20)

Date of processing authorization. Format: yyyy/MM/dd HH:mm:ss

Amount Int

Transaction/authorization amount

Eci Int

Return value of 3D (VBV). This is a value returned from the Directory Server (Visa, MasterCard, and JCB) to indicate the authentication results of cardholder’s credit card payment on 3D Secure.

Possible values:

5, 6, 2, 1: The value returned (ECI) means that transaction was a 3D secure authentication.

Card6No String(6)

First 6 digits of credit card

Card4No String(4)

Last 4 digits of credit card

CardValidYY String(2)

Credit Card Expiration year
Format : YY。

CardValidMM String(2)

Credit Card Expiration Months 
Format : MM

Stage Int

Number of installments

Stast Int

Amount of down payment

Staed Int

Amount of each period (except for down payment)

CustomField String(200)

A parameter for merchant to place customized value.

Data Example(Json format):

{
    "RtnCode": 1,
    "RtnMsg": "Success",
    "PlatformID": "1234567890",
    "MerchantID": "1234567890",
    "MerchantMemberID": "abcdefg",
    "BindCardID": "a123dfgh",
    "CardInfo": {
        "Card6No": "123456",
        "Card4No": "1234",
        "CardValidYY": "25",
        "CardValidMM": "12",
        "AuthCode": "654123",
        "Gwsr": 125,
        "ProcessDate": "2022/09/18 15:39:10",
        "Amount": 2
        "Eci": 1,
    },
  "OrderInfo": {
        "MerchantTradeNo": "test123466",
        "TradeNo": "123456789",
        "PaymentDate": "2022/09/18 15:39:10",
        "TradeAmt": 2,
        "PaymentType": "Credit",
        "TradeDate": "2022/09/18 15:39:10",
        "ChargeFee": 0,
        "TradeStatus": "1",
    }
}

❗ Special note:

  • If not correctly responding the string 1|OK, ECPay’s server will have re-send the notification once every 5-15 minutes for 4 times on the payment date.
  • If merchants keep receiving notifications from ECPay, please check if ReturnURL correctly responds the string 1|OK. Common errors may be due to incorrect values, such as “1|OK”, 1|ok, _OK, 1\OK or empty value, which will also cause ECPay’s scheduler to re-send the notifications.
  • If consumers already paid but merchants did not receive the notifications from ECPay, please check the ReturnURL. Common errors of not receiving notifications can be referred to: FAQ.
  • If RthCode is not 1, please do not ship the product to consumers. Instead, please record the RtnMsg and check the root cause.
  • The vendor’s backend is unable to simulate card binding notifications, but it can simulate payment notifications.

Copyright © Green World FinTech Service Co., Ltd. All rights reserved.

綠界官方網站