3D Secure with Payment link

AceHub Payment link supports 3D Secure payments. It uses AceHub's integrated 3DS Server, making merchant integration straightforward.

This guide describes how to implement 3D Secure and 3D Secure 2.0 with Payvision's Payment link API. Check out AceHub 3D Secure documentation and AceHub 3D Secure 2.0 documentation for more details.

Steps

1. Create a payment link

Request a linkId via API.

The field used to enable 3D Secure is threeDSecure. By default, it's false.
Contact our Customer Support team to enable 3D Secure for your account.

a) Request 3DS 1
Enable flag body.link.threeDSecure.

POST https://stagconnect.acehubpaymentservices.com/Gateway/v3/Paymentlinks
{
  "header": {
    "businessId": "{{YOUR_BUSINESS_D}}"
  },
  "body": {
    "transaction": {
        "amount":1,
        "currencyCode": "EUR",
        "authorizationMode":"payment",
        "trackingCode": "{{UNIQUE_ID}}"
    },
    "link":{
        "duration": "P2D",
        "brandIds": [1010,1020,3010],
        "returnUrl": "{{REDIRECTION_URL}}",
        "threeDSecure":true
    }
  }
}
{
    "result": 0,
    "description": "Success",
    "header": {
        "requestTimestamp": "2019-01-01T08:00:00Z"
    },
    "body": {
        "link": {
            "linkId": "{{LINK_ID}}",
            "redirect": {
                "method": "GET",
                "url": "https://stag.checkout-web.dta.payvision.app/paymentlinks/{{LINK_ID}}"
            },
            "brandIds": [
                1010,
                1020,
                3010
            ],
            "expirationTime": "2019-01-01T08:30:00Z",
             "threeDSecure":true
        },
        "transaction": {
            "amount": 1,
            "currencyCode": "EUR",
            "authorizationMode": "PAYMENT",
            "trackingCode": "{{UNIQUE_ID}}"
        }
    }
}

b) Request 3DS 2.0

  • Enable flag body.link.threeDSecure
  • For 3DS 2.0, additionally specify the 3DS version in body.threeDSecure.version as "2".
POST https://stagconnect.acehubpaymentservices.com/Gateway/v3/PaymentLinks
{
  "header": {
    "businessId": "{{YOUR_BUSINESS_ID}}"
  },
  "body": {
    "transaction": {
      "amount": 1,
      "currencyCode": "EUR",
      "authorizationMode": "payment",
      "trackingCode": "{{UNIQUE_ID}}"
    },
    "link": {
      "duration": "P2D",
      "brandIds": [
        1010,
        1020,
        3010
      ],
      "returnUrl": "{{REDIRECTION_URL}}",
      "threeDSecure": true
    },
    "threeDSecure":{
      "version": "2"
    },
    "customer": {
      "givenName": "John",
      "familyName": "Doe",
      "email": "[email protected]",
      "mobileNumber": "666777888"
    },
    "dba": {
      "name": "Name",
      "city": "city"
    },
    "billingAddress": {
      "city": "Amsterdam",
      "street": "Molenpad",
      "CountryCode": "NL",
      "zip": "1016GM",
      "houseNumber": "2"
    }
  }
}
{
  "result": 2,
  "description": "Pending",
  "header": {
    "requestTimestamp": "2019-01-01T08:00:00Z"
  },
  "body": {
     "link": {
            "linkId": "{{LINK_ID}}",
            "redirect": {
                "method": "GET",
                "url": "https://stag.checkout-web.dta.payvision.app/paymentlinks/{{LINK_ID}}"
            },
            "brandIds": [
                1010,
                1020,
                3010
            ],
            "expirationTime": "2019-01-01T08:30:00Z",
            "threeDSecure":true
          
        },
    "transaction": {
      "amount": 1,
      "currencyCode": "EUR",
      "authorizationMode": "PAYMENT",
      "trackingCode": "{{UNIQUE_ID}}"
    }
  }
}

2. Send the payment link to the customer

You can directly share the link.url with your customer or embed the link to open the checkout within your website. Refer to our Embedded Integration guide to learn how to integrate it into your website.

3. Customer pays by card

The customer opens the payment link, chooses to pay by card, provides their card payment details and clicks "Pay." The next steps depend on whether the merchant requested 3DS1 or 3DS 2.0 when creating the link (Step 1).

3DS 1 requested: The customer will be redirected to 3D Secure page served by the issuing bank to complete 3D authentication, after which the payment is processed.
Note: If the issuing bank takes the liability, it may be processed as attempted 3D, bypassing the 3D authentication step.

3DS 2.0 requested: Once the customer provides their card payment details, AceHub takes care of flagging the requested exemption. The customer can get frictionless, challenge or downgrade to 3DS 1.0 flow as described in 3DS 2.0 workflow with Payvision . AceHub then proceeds to process the authorization.

4. Get the payment link status

Once the payment is completed, our system redirects the customer to the returnUrl (previously sent in the creation request) with linkId in query params. Then it's ready to get the status of the payment link via API.
Refer to Get Payment Link ]

GET https://stagconnect.acehubpaymentservices.com/Gateway/v3/paymentlinks/{{LINK_ID}}?businessId={{BUSINESS_ID}}
{
    "result": 0,
    "description": "Completed",
    "header": {
        "requestTimestamp": "2019-02-28T11:08:09Z"
    },
    "body": {
      "transaction": {
        "amount": 1,
          "currencyCode": "EUR",
            "authorizationMode": "PAYMENT",
              "trackingCode": "{{UNIQUE_ID}}"
      },
        "checkout": {
          "checkoutId": "{{CHECKOUT_ID}}",
            "redirect": {
              "method": "GET",
                "url": "https://stag.checkout-web.dta.payvision.app/checkouts/{{CHECKOUT_ID}}"
            },
              "brandIds": [
                1010,
                1020,
                3010,
                3200,
                3025,
                4010,
                6010,
                8010,
                3020,
                5020
              ],
                "expirationTime": "2019-02-28T11:35:20Z",
                  "tokenize": "INQUIRE",
                    "threeDSecure": false,
                      "oneClick": {
                        "tokens": [
                          "{{UNIQUE_ID}}",
                          "{{UNIQUE_ID}}"
                        ],
                          "useCustomerTokens": true,
                            "threeDSecure": false
                      }
        },
          "payments": [
            {
              "result": 0,
              "description": "Ok",
              "header": {
                "requestTimestamp": "2019-02-28T11:07:29Z",
                "requestCode": "100.a72c36d8-e7cd-46a2-9eca-282cdb779a6d"
              },
              "body": {
                "card": {
                  "approvalCode": "210474",
                  "expiryMonth": "12",
                  "expiryYear": "2099",
                  "firstSixDigits": "550000",
                  "holderName": "John Doe",
                  "lastFourDigits": "0004"
                },
                "transaction": {
                  "amount": 1,
                  "currencyCode": "EUR",
                  "action": "payment",
                  "id": "{{UNIQUE_ID}}",
                  "trackingCode": "{{UNIQUE_ID}}",
                  "brandId": 1020
                }
              }
            }
          ]
    }
}