Search

Are you looking for test card numbers?

Would you like to contact support?

Payment-method icon

UnionPay SecurePlus

Use SecurePlus authentication for China UnionPay.

  Read more

Learn about pricing and supported countries for UnionPay on adyen.com.

China UnionPay International (UPI) is the only interbank network in Mainland China, East and Southeast Asia, and the biggest card scheme globally by number of cards.

This page explains how to accept UnionPay payments with SecurePlus authentication, the 3D Secure implementation used by China UnionPay. SecurePlus requires shoppers to identify themselves using a code sent to their phone number.

The integration steps for UnionPay without SecurePlus are exactly the same as for other cards.

Payment type Payment flow Countries Currencies Recurring Refunds Partial refunds Captures Partial captures Chargebacks
Credit card/Debit Card Direct International Multiple -white_check_mark- -white_check_mark- -white_check_mark- -white_check_mark- -white_check_mark-
See note 1
-white_check_mark-
See note 2

1 Multiple partial captures are not supported.
2 If a payment has been authenticated with SecurePlus, you avoid the liability for chargebacks in case of fraud.

Before you begin

These instructions explain how to add UnionPay SecurePlus to your existing API-only integration. The API-only integration works the same way for all payment methods. If you haven't done this integration yet, refer to our API-only integration guide.

Before starting your integration:

  1. Make sure that you have set up your back end implementation.
  2. Add UnionPay in your test Customer Area.

Build your payment form for UnionPay

When a shopper chooses to pay with UnionPay, collect the following details in your payment form:

Payment details Example input Required
The card number "6250947000000014" -white_check_mark-
The card expiry month "03" -white_check_mark-
The card expiry year "30" -white_check_mark-
The security code (CVV / CVC) "737" -white_check_mark-
The card holder's phone number "+85211112222" -white_check_mark-

 Make a payment

From your server, make a /payments request, specifying:

  • paymentMethod.type: scheme
  • paymentMethod.number: The card number (without separators).
  • paymentMethod.expiryMonth: The card expiry month.
  • paymentMethod.expiryYear: The card expiry year.
  • paymentMethod.cvc: The card verification code.
  • paymentMethod.telephoneNumber: The shopper's telephone number.
  • browserInfo: The shopper's browser information.
/payments request
{
   "amount":{
      "currency":"CNY",
      "value":1000
   },
   "reference":"YOUR_ORDER_NUMBER",
   "paymentMethod":{
      "type":"scheme",
      "number":"6250947000000014",
      "expiryMonth":"10",
      "expiryYear":"2020",
      "cvc":"737",
      "telephoneNumber":"+85211112222"
   },
   "merchantAccount":"YOUR_MERCHANT_ACCOUNT",
   "browserInfo":{
      "userAgent":"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008052912 Firefox/3.0",
      "acceptHeader":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
   }
}

If SecurePlus authentication is supported, you'll receive a resultCode of Pending.

/payments response
{
  "resultCode":"Pending",
  ...
  "details":[
    {
      "key":"cupsecureplus.smscode",
      "type":"text"
    },
    {
      "key":"MD",
      "type":"text"
    }
  ],
  "paymentData":"Ab02b4c0!BQABAgBKNFnhRjSn4jZPsP7nywoY...",
  "redirect":{
    "data":{
      "MD":"djIhMFQxMHpFRHlyY3BOSHJ1UUNmZnk1Zz09IZ3a9YOyDsr30Ni+jrj0M3pyy..."
    }
  }
}

If the card does not support SecurePlus verification you'll receive the same response as for a regular credit card payment.

Verify the payment

  1. Present a screen in your UI to collect the SMS verification code that was sent to the shopper.
  2. Make a /payments/details request, specifying:

    • paymentData: The value from the /payments response.
    • details object, containing:
      • MD: The value from the /payments response.
      • cupsecureplus.smscode: The SMS verification code you collected from the shopper.
    /payments/details request
    {
      "paymentData":"Ab02b4c0!BQABAgBKNFnhRjSn4jZPsP7nywoY...",
      "details":{
        "MD":"djIhMFQxMHpFRHlyY3BOSHJ1UUNmZnk1Zz09IZ3a9YOyDsr30Ni+jrj0M3pyy...",
        "cupsecureplus.smscode":"123456"
      }
    }

Present the payment result

Use the resultCode from the /payments or /payments/details response to present the payment result to your shopper. You will also receive the outcome of the payment asynchronously in a notification webhook.

For card payments, you can receive the following resultCode values:

resultCode Description Action to take
Authorised The payment was successful. Inform the shopper that the payment has been successful.
If you are using manual capture, you also need to capture the payment.
Cancelled The shopper cancelled the payment. Ask the shopper whether they want to continue with the order, or ask them to select a different payment method.
Error There was an error when the payment was being processed. For more information, check the refusalReason field. Inform the shopper that there was an error processing their payment.
Refused The payment was refused. For more information, check the refusalReason field. Ask the shopper to try the payment again using a different payment method.

Test and go live

Before making live payments, use the following details to test your integration:

SecurePlus Credit Card

Card Number Expiry Date CVN2 PIN Cellphone
6250947000000014 03/2030 123 111111 +85211112222

SecurePlus Debit Card

Card Number Expiry Date CVN2 PIN Cellphone
6250946000000016 12/2033 123 111111 +85211112222

Check the status of test payments in your Customer Area > Transactions > Payments.

See also