VISA Checkout

Introduction

VISA Checkout (VCO) is a digital wallet for simpler, safer shopping, allowing customers to make purchases without having to spend much time filling forms on the merchant’s website as VCO stores credit card and shipping details.

The VCO wallet can be integrated in three different ways:

Integration Option Description

Hosted Payment Page integration

  1. The customer is redirected to VCO website to login and selects the preferred credit card for payment.

  2. Wirecard Payment Gateway receives the credit card information from VCO and proceeds with payment authorization with the acquirer.

  3. Wirecard Payment Gateway manages all other interactions with VCO.

ReST API integration without a VISA Checkout call ID

This is a hybrid integration. The merchant hosts the payment page and checks with the customer on the preferred payment method. The Wirecard Payment Gateway then handles all integration to VCO.

ReST API integration with a VISA Checkout call ID

This is a pure server-to-server implementation.

General Information

Payment Mode, Countries and Currencies

This table illustrates which payment mode VISA Checkout belongs to. It also provides detailed information about the countries and currencies which are relevant for VISA Checkout.

Payment Mode

Wallet

Countries

International

Currencies

All currencies are supported.

Communication Formats

This table illustrates how VISA Checkout notifications are encoded and which formats and methods can be used for requests and responses.

Requests/Responses

Format

XML

Methods

POST, GET

IPN Encodement

Base64

Transaction Types

Every successful VCO payment request results in two distinct transactions in the database:

  1. one for VCO wallet,

  2. one for Credit Card.

For transaction type details which are not given here, look at Appendix B: Transaction Types.

VISA Checkout   Credit Card

debit

AND

purchase

authorization

AND

authorization

authorization-only

AND

authorization-only

If the merchant does not receive a notification during the timeout period, they can Retrieve Transaction by Transaction ID or Retrieve Transaction by Request ID.

Test Credentials

Test Merchant Account
There is no public merchant-account available. VCO can be enabled to a specific merchant, provided that they have registered with VCO and agreed on VCO’s Merchant Services Agreement. This will generate a VCO external client ID which has to be provided to Wirecard Payment Gateway. For merchants integrating directly to VCO to extract wallet data then to Wirecard Payment Gateway for payments, the API Key has to be additionally provided.

URLs (Endpoints)

HPP

https://api-test.wirecard.com/engine/hpp/

ReST API

https://api-test.wirecard.com/engine/rest/paymentmethods/

Merchant Account ID (MAID)

The MAID can be generated once the VCO external client ID is provided (see info box above).

Username

Please contact merchant support for complete test credentials.

Password

Please contact merchant support for complete test credentials.

Secret Key

Please contact merchant support for complete test credentials.

Workflow

Payment Page
Visa Checkout workflow for Payment Page

The Payment Page workflow follows the usual Payment Page integration and flow.

  1. Consumer adds items to shopping basket.

  2. Merchant redirects consumer to Wirecard Payment Gateway for payment.

  3. Consumer selects Payment Method VCO.

  4. Wirecard Payment Gateway redirects consumer to VCO.

  5. Consumer enters his VCO credentials and selects preferred card.

  6. Wirecard Payment Gateway receives the card information.

  7. Wirecard Payment Gateway processes the transaction with the merchant’s acquirer.

  8. Wirecard Payment Gateway receives transaction status.

  9. Wirecard Payment Gateway sends transaction status to merchant and redirects the consumer to the merchant.

  10. Merchant receives the transaction’s status and displays the completion of the payment process to the consumer.

ReST API Integration with Call ID
Visa Checkout workflow for ReST API with call ID
  1. Consumer adds items to shopping basket.

  2. Consumer selects Payment Method VCO.

  3. Merchant initiates the VCO lightbox.

  4. Consumer enters his VCO credentials and selects preferred card.

  5. Visa Checkout redirects the consumer to the merchant with the payload.

  6. Merchant initiate payment request with call ID information.

  7. Wirecard Payment Gateway retrieves the card information from VCO.

  8. Wirecard Payment Gateway processes the transaction with the merchant’s acquirer.

  9. Wirecard Payment Gateway receives transaction status.

  10. Wirecard Payment Gateway sends transaction status to merchant.

  11. Merchant receives the transaction’s status and displays the completion of the payment process to the consumer.

ReST API Integration without Call ID
Visa Checkout workflow for ReST API without call ID

The workflow for ReST API Integration without Call ID is similar to the workflow for PP with the exception that the merchant displays the payment options to the consumer and redirects the consumer to Wirecard Payment Gateway which displays the lightbox.

  1. Consumer adds items to shopping basket.

  2. Consumer selects Payment Method Visa Checkout.

  3. Merchant redirects consumer to Wirecard Payment Gateway.

  4. Wirecard Payment Gateway redirects consumer to Visa Checkout.

  5. Consumer enters his Visa Checkout credentials and selects preferred card.

  6. Wirecard Payment Gateway receives the card information.

  7. Wirecard Payment Gateway processes the transaction with the merchant’s acquirer.

  8. Wirecard Payment Gateway receives transaction status.

  9. Wirecard Payment Gateway sends transaction status to merchant and redirects the consumer to the merchant.

  10. Merchant receives the transaction’s status and displays the completion of the payment process to the consumer.

Fields

REST Fields

The following elements are elements with differing cardinality from the REST API Fields.

The following elements are either mandatory (M), optional (O) or conditional © in a transaction process. 

Field Request  Response Notification Data Type Size Description

success-redirect-url

M

M

M

String

2000

The URL to which the customer will be re-directed after a successful process handling.

fail-redirect-url

M

M

M

String

2000

The URL to which the customer will be re-directed after an unsuccessful process handling.

wallet/request-token

C

M

M

String

VISA Checkout’s call Id field data. Mandatory for ReST implementation with call Id.

Samples

REST API without Call ID
debit Request
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
    <merchant-account-id>ff12048a-b6c2-11e6-8461-000c2904f494</merchant-account-id>
    <request-id>952c5ba8-c0f1-9c1e-af83-4441faab3361</request-id>
    <transaction-type>debit</transaction-type>
    <requested-amount currency="SGD">4.00</requested-amount>
    <payment-methods>
        <payment-method name="visacheckout"/>
    </payment-methods>
    <three-d>
        <attempt-three-d>true</attempt-three-d>
    </three-d>
    <fail-redirect-url>http://localhost/shop/complete.jsp?state=failed&</fail-redirect-url>
    <success-redirect-url>http://localhost/shop/complete.jsp?state=success&</success-redirect-url>
</payment>
debit Response
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
    <merchant-account-id>ff12048a-b6c2-11e6-8461-000c2904f494</merchant-account-id>
    <transaction-id>79b05b49-48f2-49f7-b5e2-48a0de0c72bf</transaction-id>
    <request-id>952c5ba8-c0f1-9c1e-af83-4441faab3361</request-id>
    <transaction-type>debit</transaction-type>
    <transaction-state>success</transaction-state>
    <completion-time-stamp>2017-01-11T23:44:48.000Z</completion-time-stamp>
    <statuses>
        <status code="201.0000" description="The resource was successfully created." severity="information"/>
    </statuses>
    <requested-amount currency="SGD">4.00</requested-amount>
    <payment-methods>
        <payment-method url="https://dev.thesolution.com/engine/notification/visacheckout/lightBoxPaymentPage? apikey=070G3SR9DI0W7KASXHHO13CEEdFaJv8H8_ivRa-bnH9lvdsvo&callback=https%3A%2F%2Fdev.thesolution.com%2Fe ngine%2Fnotification%2Fvisacheckout%3Fparams%3DcGF5bWVudC50cmFuc2FjdGlvbi1pZD03OWIwNWI0OS00OGYyLTQ5Zjc tYjVlMi00OGEwZGUwYzcyYmYmcGF5bWVudC50cmFuc2FjdGlvbi10eXBlPWRlYml0JnBheW1lbnQuZ3JvdXAtdHJhbnNhY3Rpb24taWQ9Nz liMDViNDktNDhmMi00OWY3LWI1ZTItNDhhMGRlMGM3MmJmJnBheW1lbnQudGhyZWVkLWF0dGVtcHQtdGhyZWUtZD10cnVl&currency code=SGD&total=4.00&contextPath=https%3A%2F%2Fdev.thesolution.com%2Fengine&lightboxurl=htt ps%3A%2F%2Fsandbox-assets.secure.checkout.visa.com%2Fcheckout-widget%2Fresources%2Fjs%2Fintegration%2Fv1%2F sdk.js&buttonsource=https%3A%2F%2Fsandbox.secure.checkout.visa.com%2Fwallet-services-web%2Fxo%2Fbutton. png&externalclientid=0610d773-8015-49dc-a3cc-33e64252f28f&locale=en&countrycode=US&external ProfileId=0610d773801549dca3cc33e64252f28f" name="visacheckout"/>
    </payment-methods>
    <three-d>
        <attempt-three-d>true</attempt-three-d>
    </three-d>
    <fail-redirect-url>http://localhost/shop/complete.jsp?state=failed&</fail-redirect-url>
    <success-redirect-url>http://localhost/shop/complete.jsp?state=success&</success-redirect-url>
</payment>
debit Notification
<?xml version="1.0" encoding="UTF-8"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment" xmlns:ns2="http://www.elastic-payments.com/schema/epa/transaction">
    <merchant-account-id>ff12048a-b6c2-11e6-8461-000c2904f494</merchant-account-id>
    <transaction-id>b6ad8c0b-c40f-4e19-af25-dc0c780ab726</transaction-id>
    <request-id>952c5ba8-c0f1-9c1e-af83-4441faab3361</request-id>
    <transaction-type>debit</transaction-type>
    <transaction-state>success</transaction-state>
    <completion-time-stamp>2017-01-11T23:45:28.000Z</completion-time-stamp>
    <statuses>
        <status code="201.0000" description="visacheckout:The resource was successfully created." severity="information"/>
    </statuses>
    <requested-amount currency="SGD">4</requested-amount>
    <parent-transaction-id>79b05b49-48f2-49f7-b5e2-48a0de0c72bf</parent-transaction-id>
    <order-items/>
    <payment-methods>
        <payment-method name="visacheckout"/>
    </payment-methods>
    <api-id>---</api-id>
    <processing-redirect-url/>
    <provider-transaction-reference-id>7509689972496433202</provider-transaction-reference-id>
</payment>
Samples for REST API with Call ID
debit Request
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
    <merchant-account-id>ff12048a-b6c2-11e6-8461-000c2904f494</merchant-account-id>
    <request-id>779032be-642f-3b87-ade4-d1e5195dcb25</request-id>
    <transaction-type>debit</transaction-type>
    <requested-amount currency="SGD">4.00</requested-amount>
    <account-holder>
        <last-name>Test</last-name>
    </account-holder>
    <payment-methods>
        <payment-method name="visacheckout"/>
    </payment-methods>
    <three-d>
        <attempt-three-d>false</attempt-three-d>
    </three-d>
    <fail-redirect-url>http://localhost/shop/complete.jsp?state=failed&</fail-redirect-url>
    <success-redirect-url>http://localhost/shop/complete.jsp?state=success&</success-redirect-url>
    <wallet>
        <request-token>1946726864049552602</request-token>
    </wallet>
</payment>
debit Response
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
    <merchant-account-id>ff12048a-b6c2-11e6-8461-000c2904f494</merchant-account-id>
    <transaction-id>f1e71763-db84-4d27-9da8-4e44c6fb3ed1</transaction-id>
    <request-id>779032be-642f-3b87-ade4-d1e5195dcb25</request-id>
    <transaction-type>debit</transaction-type>
    <transaction-state>success</transaction-state>
    <completion-time-stamp>2017-01-05T04:47:49.000Z</completion-time-stamp>
    <requested-amount currency="SGD">4.00</requested-amount>
    <account-holder>
        <last-name>Test</last-name>
    </account-holder>
    <payment-methods>
        <payment-method name="visacheckout"/>
    </payment-methods>
    <authorization-code>715406</authorization-code>
    <three-d>
        <attempt-three-d>false</attempt-three-d>
    </three-d>
    <fail-redirect-url>http://localhost/shop/complete.jsp?state=failed&</fail-redirect-url>
    <success-redirect-url>http://localhost/shop/complete.jsp?state=success&</success-redirect-url>
    <wallet>
        <request-token>1946726864049552602</request-token>
    </wallet>
    <provider-transaction-reference-id>1946726864049552602</provider-transaction-reference-id>
</payment>
debit Notification
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
    <merchant-account-id>ff12048a-b6c2-11e6-8461-000c2904f494</merchant-account-id>
    <transaction-id>946e8e43-12ca-49f4-9c5a-ba6c1f3abde7</transaction-id>
    <request-id>779032be-642f-3b87-ade4-d1e5195dcb25</request-id>
    <transaction-type>debit</transaction-type>
    <transaction-state>success</transaction-state>
    <completion-time-stamp>2017-01-05T04:47:48.000Z</completion-time-stamp>
    <statuses>
        <status code="201.0000" description="visacheckout:The resource was successfully created." severity="information"/>
    </statuses>
    <requested-amount currency="SGD">4.000000</requested-amount>
    <account-holder>
        <last-name>Test</last-name>
        <address>
            <country>SG</country>
        </address>
    </account-holder>
    <card-token>
        <token-id>5814368643124003</token-id>
        <masked-account-number>540804******4003</masked-account-number>
    </card-token>
    <notifications>
        <notification url="https://hookb.in/Z6momN91"/>
    </notifications>
    <payment-methods>
        <payment-method name="visacheckout"/>
    </payment-methods>
    <authorization-code>715406</authorization-code>
    <api-id>---</api-id>
    <fail-redirect-url>http://localhost/shop/complete.jsp?state=failed&</fail-redirect-url>
    <success-redirect-url>http://localhost/shop/complete.jsp?state=success&</success-redirect-url>
    <provider-transaction-reference-id>1946726864049552602</provider-transaction-reference-id>
</payment>
Custom URL: