Introduction

Click to Pay (CTP)  is a simplified and streamlined solution for online checkouts based on card payments which makes the checkout experience consistent, convenient and secure. It acts as a digital wallet. enabling customers to store their card details securely with the card schemes and eliminating the need to manually enter the card details during checkout.

Click to Pay is built on EMV® Secure Remote Commerce standards, aiming to reduce complexity and unwanted friction for e-commerce merchants and consumers by providing a consistent checkout process.

Overview

Our Click to Pay feature is offered as part of your VISA and Mastercard credit card acceptance with PAYONE and is embedded in the New Hosted Tokenization Form.

Enrolled customers can select stored cards in their Click to Pay wallet instead of manually re-entering the card details. To use Click to Pay, customers can create profiles using their email address either with card schemes, Visa and Mastercard or enable Click to Pay directly with their issuing bank.
The cardholder data and the card details are securely stored with the card schemes Click to Pay solutions. Cardholders may choose to store multiple cards with their Click to Pay profile.

Enrolled customers with Click to Pay can be recognized when email address or mobile phone number is provided during checkout and can select their preferred card from Click to Pay profile to complete the payment.  The payment information is delivered to you by the card schemes Click to Pay solution in an encrypted format, in similar way as other digital wallets encrypted payment data and passed to PAYONE for completing the payment.

Click to Pay is available for Mastercard and Visa via the New Hosted Tokenization form.
PAYONE doesn't currently support recurring payments combined with Click to Pay.

How Click to pay works

PREREQUISITEs 

Click to Pay registration 

To begin with Click to Pay processing in Production environment you will have to be onboarded against Card Schemes. This will be done on Payone side after requesting the product.

Credentials are fetched automatically by the Hosted tokenization application during loading.

Technical prerequisites 

In order to Implement Click to Pay you have to complete the  New Hosted tokenization Page implementation. 

It can be done by following our New Hosted Tokenization integration guide.

Checkout and User journey

  • You have completed the prerequisites and enabled Click to Pay.
  • During checkout, PAYONE recognizes an enrolled customer with Click to Pay either email address provided or by their device.
  • One time password (OTP) is being delivered via email or phone to the recognized customer to authenticate. For recognized devices, the OTP is skipped during checkout.
  • Recognized customers with a valid Click to Pay profile are presented with the list of their cards stored in the Click to Pay profile.
  • Customer may choose one of their stored cards or decide pay with another card by manually entering the card details in the form and completes/confirms the payment.
  • You will get the encrypted payment information when an enrolled card in Click to Pay is used or get a PAYONE pseudo card number when manual card is used.
  • You will request pre/authorization to PAYONE to complete the payment.
     

 INTEGRATION STEPS

enable Click to Pay in the new hosted tokenization form

Once you integrate the New Hosted Tokenization it is fairly simple to enable Click to Pay.

To configure Click to Pay, you have to include the Click to Pay configuration within the config parameter when invoking the getPaymentPage() method. 

Click to Pay is only supported in LIVE mode. If mode=TEST, Click to Pay will not be loaded.

 

Objecttitle
             CTPConfig: {
                enableCTP: true,
                enableCustomerOnboarding: true,
                schemeConfig: {
                    merchantPresentationName: "PayoneC2P-00004"
                },
                transactionAmount: {
                    amount: "3123",
                    currencyCode: "USD"
                },
                uiConfig: {
                    buttonAndBadgeColor: "#000000",
                    buttonFilledHoverColor: "#464646",
                    buttonOutlinedHoverColor: "#f8f8f8",
                    buttonDisabledColor: "#909090",
                    cardItemActiveColor: "#f8f8f8",
                    buttonAndBadgeTextColor: "#ffffff",
                    linkTextColor: "#0054b6",
                    accentColor: "#0054b6",
                    fontFamily: "Nunito, sans-serif",
                    buttonAndInputRadius: "0.25rem",
                    cardItemRadius: "0.5rem",
                    buttonTextCase: "uppercase"
                },
            }
            }
     

Click to Pay configuration parameters

The parameters are defined in CTP Config section of the Hosted Tokenization configuration.  This section encompasses all configurations related to Click to Pay for various card schemes, including Mastercard and Visa. 

Parameter name

Type and Value

Optional/Mandatory for Click to Pay Description
email string Optional - but is is highly recommended for Click to Pay Can be provided by Merchant to speed up Click to Pay payment for the end consumer
locale locale value such as de_DE Optional  with default us_EN.

Currently only de_DE and us_EN are supported by Hosted tokenization Page.

Click to Pay however supports many other european languages.

In order to fully implement other languages please use Custom Language option within the Hosted Tokenization form

mode Only LIVE for Click to Pay Optional . Default LIVE mode for DCP - manual mode - Tests not supported for CTP in PROD Environment
enableCTP

boolean

true or false

Mandatory for Click to  Pay enablement

default=false

Set to true to enable Click to Pay.

When the CTP feature is enabled, users can switch between Click to Pay (CTP) and Manual Card Entry.

enableCustomerOnboarding

boolean

true or false

Optional 

default=false

Set to true to enable user registration with Click to Pay
merchantPresentationName string Optional  The name of the shop the customer is. 
transactionAmount

Object

 amount: '<value>',  currencyCode: 'USD',

Mandatory for Click to  Pay 

currencyCode-  Alpha-3 currency code 

amount - 600 for 6.00 EUR etc

Amount and currency of the transaction
Mandatory for Click to  Pay 
uiConfig Object  Optional 

uiConfig:
configurations related to UI of payment page form.
Using this you can customize the different CSS aspects of the payment form. 

 Click to Pay Specific UI configuration

Example uiConfig object: Under this object we can only change the values of the properties.

Objecttitle
{
    "buttonStyle": "FILLED",
    "buttonTextCase": "capitalize",
    "buttonAndBadgeColor": "#A16207",
    "buttonFilledHoverColor": "#854D0E",
    "buttonOutlinedHoverColor": "#D97706",
    "buttonDisabledColor": "#C4A264",
    "cardItemActiveColor": "#854D0E",
    "buttonAndBadgeTextColor": "#FFFFFF",
    "linkTextColor": "#7C4A32",
    "accentColor": "#854D0E",
    "fontFamily": "Tinos",
    "buttonAndInputRadius": "1rem",
    "cardItemRadius": "2rem"
}

Handling the Payment Token information

Once the Hosted Tokenization process is completed you will have to send the Payment Request to Server API containing token information. You will have to identify what payment clearing type to use based on the cardInputMode.  For the Click to Pay integration you need to supported cardInputmode parameter that is specific for Click to Pay. Depending on the cardInputmode you will request payment authorization either as Click to Pay or as standard card payment.

Please follow this decision making matrix: 

cardInputMode Token Type Clearing type Clearing subtype Comment
manual PPAN clearingtype=cc n/a it`s a classic Credit Card payment - no changes needed for the Authorization of the Credit card.
clickToPay paymentcheckout_data clearingtype=wlt wallettype=CTP Payload for an existing user paying with CTP
register paymentcheckout_data clearingtype=wlt wallettype=CTP No actual different for the Merchant. This is to be expected only if the registration is enabled. Handle as normal Click to Pay transaction

Sample responses for each mode: 

cardInputMode : ClickToPay 

Objecttitle
Status code: 201, token: "string", cardDetails: {"cardholderName":"go***d ka**e","cardNumber":"518600XXXXXX1434","expiryDate":"1225","cardType":"MASTERCARD"}, cardInputMode: clickToPay 

 

cardInputMode : Manual

Objecttitle
Status code: 201, token: "string", cardDetails: {"cardholderName":"govind","cardNumber":"439584XXXXXX0011","expiryDate":"1228","cardType":"VISA"}, cardInputMode: manual

 

cardInputMode : Register 

 

Objecttitle
Status code: 201, token: "string", cardDetails: {"cardholderName":"govind","cardNumber":"439584XXXXXX0110","expiryDate":"1227","cardType":"VISA"}, cardInputMode: register

Integrating API requests for Click to Pay

There is no big deviation between similar API Requests against PAYONE Server API.  Additionally the following parameter to be added to a typical payment request :  add_paydata[paymentcheckout_data] 

POST Request Pre- /Authorization
Account Parameters
request
required
Fixed Value: preauthorisation/authorization
mid
required
your merchant ID, 5-digit numeric
aid
required
your subaccount ID, 5-digit numeric
portalId
required
your Portal ID, 7-digit numeric
key
required
your key value, alpha-numeric
PERSONAL DATA Parameters
firstname
optional
Format CHAR(1..50)

First name of customer; optional if company is used, i.e.: you may use

"company" or "lastname" or "firstname" plus "lastname"

lastname
required
Format CHAR(2..50)

Last name of customer; optional if company is used, i.e.: you may use

"company" or "lastname" or "firstname" plus "lastname"

company
optional
Format CHAR(2..50)

Company name, required for B2B transactions (if add_paydata[b2b] = “yes”)

street
optional
Format CHAR(1..50)

Street number and name (required: at least one character)

zip
optional
Format CHAR(2..50)
Permitted Symbols [0-9][A-Z][a-z][_.-/ ]

Postcode

city
optional
Format CHAR(2..50)

City of customer

country
required
Format List

Permitted values ISO 3166 2-letter-codes

Samples DE / GB/ US

Specifies country of address for the customer.

Some countries require additional information in parameter "state"
email
optional
Format CHAR(5..254)

Permitted Symbols RFC 5322

Special Remark email validation:

Max. length for email is 254 characters. Validation is set up in the following way:

Username = Max. 63 characters

Domain Name = Max. 63 characters
Domain Suffixes = Max. 4 suffixes with max. 124 characters
Example: username[63]@domain_name[63].suffix[60].suffix[60].suffix[4]

"@" and "." is counted as a character as well; in case of a total of three suffixes, this would allow a total of 254 characters.

email-address of customer

birthday
optional
Format DATE(8), YYYYMMDD

Samples 20190101 / 19991231


Date of birth of customer

telephonenumber
optional

Telephone number

Wallet PARAMETERS
wallettype
required
Fixed Value: CTP
CTP: Click to Pay
successurl
required
Format CHAR(2..255)

Scheme <scheme>://<host>/<path>
       <scheme>://<host>/<path>?<query>
       
scheme-pattern: [a-zA-Z]{1}[a-zA-Z0-9]{1,9}

URL for "payment successful"

errorurl
required
Format CHAR(2..255)

Scheme <scheme>://<host>/<path>
       <scheme>://<host>/<path>?<query>
       
scheme-pattern: [a-zA-Z]{1}[a-zA-Z0-9]{1,9}

URL for "faulty payment"

backurl
required
Format CHAR(2..255)

Scheme <scheme>://<host>/<path>
       <scheme>://<host>/<path>?<query>
       
scheme-pattern: [a-zA-Z]{1}[a-zA-Z0-9]{1,9}

URL for "Back" or "Cancel"

mode
required
Fixed value: live
Only live mode is supported

---end

 

add_paydata PARAMETERS
add_paydata[paymentcheckout_data]
required

Sample rhHAQUrR118u[...]cwDw

Click to Pay encrypted token

Response Parameters

Permitted Values

REDIRECT
ERROR
Response Parameter (Approved)
Format NUMERIC(9..12)

The txid specifies the payment process within the PAYONE platform

userid
Format NUMERIC(9..12)

PAYONE User ID, defined by PAYONE

Response Parameter (Error)
Format NUMERIC(1..6)

In case of error the PAYONE Platform returns an error code for your internal usage.

Format CHAR(1..1024)

In case of error the PAYONE Platform returns an error message for your internal usage.

Format CHAR(1..1024)

The customermessage is returned to your system in order to be displayed to the customer.

(Language selection is based on the end customer's language, parameter "language")

Host: api.pay1.de
Content-Type: application/x-www-form-urlencoded    
Payload

add_paydata[paymentcheckout_data]=FpFyA6zSGkZC[...]xi8xeXCNbpGBpvlNXfcang==
aid=12345
amount=1000
clearingtype=wlt
country=DE
currency=EUR
encoding=UTF-8
firstname=Demo
key=123456789abcdefghij
lastname=Dude
mid=12345
mode=live
portalid=123456
reference=013265464564654
request=preauthorization
wallettype=CTP
RESPONSE

status=REDIRECT
txid=123456789
userid=987654321
POST Request Capture

The capture request is used to finalize a preauthorized transaction.

Account Parameters
request
required
Fixed Value: capture
mid
required
your merchant ID, 5-digit numeric
aid
required
your subaccount ID, 5-digit numeric
portalId
required
your Portal ID, 7-digit numeric
key
required
your key value, alpha-numeric
common Parameters
txid
required
Format: NUMERIC(9..12)

The txid specifies the payment process within the PAYONE platform

clearingtype
optional
Fixed Value: wlt
wallettype
optional
Fixed Value: CTP

CTP: Click to Pay

capturemode
required
Format: LIST
Value Comment
completed

Set with last capture; i.e.: Delivery completed.
No further capture is allowed.

notcompleted

Set with partial deliveries (last delivery with "completed")
Another capture is expected to complete the transaction.

Specifies whether this capture is the last one or whether there will be another one in future.

sequencenumber
optional
Format: NUMERIC(1..3)
Permitted values: 0..127

Sequence number for this transaction within the payment process (1..n), e.g. PreAuthorization: 0, 1. Capture: 1, 2. Capture: 2

Required for multi partial capture (starting with the 2nd capture)

amount
required
Format: NUMERIC(1..10)
Permitted values: max. +/- 19 999 999 99

Specifies the total gross amount of a payment transaction.

Value is given in smallest currency unit, e.g. Cent of Euro

The amount must be less than or equal to the amount of the corresponding booking.

currency
required
Fixed Value: EUR
narrative_text
optional
Format: CHAR(1..81)

Dynamic text element on account statements
(3 lines with 27 characters each) and credit card statements.

Response Parameters
Permitted Values
APPROVED
ERROR
Response Parameter (approved)
Format: NUMERIC(9..12)

The txid specifies the payment process within the PAYONE platform

settleaccount
Format: LIST
Value Comment
yes

Settlement of outstanding balances is carried out.

no

Do not carry out settlement of outstanding balances, book request only.

auto

The system decides - depending on type of payment and balance - if a settlement of balances can be carried out or not. (default)

Carry out settlement of outstanding balances. The request is booked and the resulting balance is settled by means of a collection, e.g. a refund.

Response parameters (error)
Format: NUMERIC(1..6)

In case of error the PAYONE Platform returns an error code for your internal usage.

Format: CHAR(1..1024)

In case of error the PAYONE Platform returns an error message for your internal usage.

customermessage
Format: CHAR(1..1024)

The customer message is returned to your system in order to be displayed to the customer.

(Language selection is based on the end customer's language, parameter "language")

Host: api.pay1.de
Content-Type: application/x-www-form-urlencoded


POST Request Debit
Account Parameters
request
required
Fixed Value: debit
mid
required
your merchant ID, 5-digit numeric
aid
required
your subaccount ID, 5-digit numeric
portalId
required
your Portal ID, 7-digit numeric
key
required
your key value, alpha-numeric
common Parameters
txid
required
Format: NUMERIC(9..12)

The txid specifies the payment process within the PAYONE platform

sequencenumber
required
Format: NUMERIC(1..3)

Permitted values 0..127

Sequence number for this transaction within the payment process (1..n), e.g. PreAuthorization: 0, 1. Capture: 1, 2. Capture: 2

Required for multi partial capture (starting with the 2nd capture)

amount
required
Format: NUMERIC(1..10)

Permitted values max. +/- 19 999 999 99

Specifies the total gross amount of a payment transaction.

Value is given in smallest currency unit, e.g. Cent of Euro; Pence of Pound sterling; Öre of Swedish krona.

The amount must be less than or equal to the amount of the corresponding booking.

currency
required
Fixed Value: EUR
settleaccount
optional
Format: LIST
Value Comment
yes

Settlement of outstanding balances is carried out.

no

Do not carry out settlement of outstanding balances, book request only.

auto

The system decides - depending on type of payment and balance - if a settlement of balances can be carried out or not. (default)

Carry out settlement of outstanding balances. The request is booked and the resulting balance is settled by means of a collection, e.g. a refund.

Response Parameters
Permitted Values
APPROVED
ERROR
Response Parameter (approved)
txid
Format: NUMERIC(9..12)

The txid specifies the payment process within the PAYONE platform

settleaccount
Format: LIST 
Value Comment
yes

Settlement of outstanding balances is carried out.

no

Do not carry out settlement of outstanding balances, book request only.

Provides information about whether a settlement of balances has been carried out.

Response Parameter (error)
errorcode
Format: NUMERIC(1..6)

In case of error the PAYONE Platform returns an error code for your internal usage.

errormessage
Format: CHAR(1..1024)

In case of error the PAYONE Platform returns an error message for your internal usage.

customermessage
Format: CHAR(1..1024)

The customermessage is returned to your system in order to be displayed to the customer.

(Language selection is based on the end customer's language, parameter "language")

Host: api.pay1.de
Content-Type: application/x-www-form-urlencoded

Sequence Diagram

Payment flow for Click to Pay relies heavily on the standard Credit Card payment flow once the Click to Pay checkout session is complete and you received the encrypted payment information to be passed in a pre/authorization request to PAYONE.