SDK UI & Core for Android

Overview

Introduction

Mobile SDK UI & Core for Android is an software development kit with open-source code that can be used to integrate Android applications with the ecommpay payment platform.

SDK UI & Core for Android provides the functionality for interaction of customers with the user interface and for interaction of a mobile application with the payment platform which allows sending and receiving necessary information during payment processing. Additionally, the open-source code available with SDK UI & Core for Android provides flexibility for configuring the user interface in accordance with the aspects of the application.

SDK UI & Core for Android can be embedded in mobile applications developed for Android version 5.0 or later. The libraries and code examples are available on GitHub. To access, use the following URLs:

Capabilities

The following functional capabilities are supported by SDK UI & Core for Android:

  • Processing different types of payments made with cards and Google Pay as well as other payment methods available for the merchant's project. Supported payment types include:
    • One-time one-step purchases.
    • One-time two-step purchases (an authorisation hold can be placed via the SDK and subsequent debiting of the authorised amount is carried out via Gate or Dashboard).
    • COF purchases (they can be registered via the SDK and then managed via Gate or Dashboard).
    Note: In case of card and Google Pay payments, the payment interface described in this article is used. With other payment methods, Payment Page is used during payment processing.
  • Performing payment card verification (it involves debiting a zero amount from the customer's card).
  • Checking current payment information.
  • Auxiliary procedures and additional capabilities to boost payment acceptance rates:
    • Submission of additional payment information.
    • Payment retries.
    • Cascade payment processing.
    • Collecting customer data.
  • Additional capabilities to improve user experience:
    • Saving customer payment data.
    • Payment interface language support.
    • Sending email notifications with the list of purchased items to customers.
  • Customising the appearance of the payment interface including the colour scheme settings and the option to add the logo.

Workflow

Generally, the following workflow is relevant when one-step purchases are processed with the use of SDK UI & Core for Android.

  1. In the user interface of a mobile application, the customer initiates a purchase by clicking the payment button or in a different fashion set up on the merchant side.
  2. In the mobile application, a set of parameters for creating a payment session is generated. Then, with the help of SDK UI & Core for Android, this set is converted into a string for signing, and the string is sent to the server side of the merchant web service.
  3. On the server side of the merchant web service, the parameters can be checked and supplemented if necessary, and the signature to the final parameter set is generated, following which the prepared data is sent back to SDK UI & Core for Android.
  4. With the help of SDK UI & Core for Android, a payment session is initiated in the payment platform.
  5. On the payment platform side, the payment interface is prepared in accordance with the invocation parameters, and the data for opening the interface is passed to the customer's device.
  6. In the mobile application, the payment form is displayed to the customer.
  7. The customer selects a payment method (if no method was selected when the payment session was initiated), specifies the necessary information, and confirms the purchase.
  8. SDK UI & Core for Android sends a purchase request to the payment platform.
  9. On the payment platform side, the payment is registered and all necessary technical actions are performed; these actions include sending the required data to the payment environment—to the providers and payment systems.
  10. The payment is processed in the payment environment. Then the payment result information is received in the payment platform.
  11. In the payment platform, the information about the payment result is processed and a callback is sent to the server side of the web service.
  12. The information about the purchase result is sent from the payment platform to SDK UI & Core for Android.
  13. The notification with the result information is displayed to the customer in the user interface.

Interface

When card and Google Pay payments are processed, the customer interacts with the user interface designed by the ecommpay specialists. This user interface can be customised: you can change its colour and add your company's logo.

Setup

Integration steps

To integrate the web service with the ecommpay payment platform by using SDK UI & Core for Android:

  1. Address the following organisational issues of interaction with ecommpay:
    1. If your company has not obtained a project identifier and a secret key for interacting with ecommpay, submit the application for connecting to the ecommpay payment platform.
    2. If your company has obtained a project identifier and a secret key for interacting with ecommpay, inform the technical support specialists about the company's intention to integrate by using SDK UI & Core for Android and coordinate the procedure of testing and launching the functionality.
  2. Complete the following preliminary technical steps:
    1. Download and link the SDK UI & Core for Android libraries.
    2. Ensure the collection of data necessary for opening the payment form. The minimum data set needed in order to open the payment form consists of the project, payment, and customer identifiers as well as of the payment amount and currency.
    3. Ensure signature generation for the data on the server side of the mobile application.
    4. Ensure the receipt of and the response to the notifications from SDK UI & Core for Android as well as the receipt of and the response to the callbacks from the payment platform on the web service side.
  3. With the technical support specialists, coordinate the timeline and the main steps of integrating, testing (including testing available payment methods), and launching the solution.
    1. For testing, use the test project identifier and the details of test cards.
    2. For switching to the production mode, change the value of the test project identifier to the value of the production project identifier received from ecommpay.

If you have any questions about working with SDK UI & Core for Android, contact the ecommpay technical support specialists (support@ecommpay.com).

Libraries installation

For the mobile applications developed for Android version 5.0 or later, linking the SDK UI & Core for Android libraries via MavenCentral is supported. To link the libraries:

  1. Open the build.gradle.kts module in the application.
  2. Specify the mavenCentral repository in the repositories section:
    allprojects {
        repositories {
            google()
            mavenCentral()
        }
    }
  3. Add the following code in the dependencies section:
    implementation "com.ecommpay:msdk-ui:LATEST_VERSION"

Signature generation

Make sure that the data is signed on the server side of the web service with the use of the secret key received from ecommpay. To work with the signature, you can use ready-to-use components, such as language-specific SDKs for web services (details), or your own in-house solutions. The procedure of working with the signature is described in Signature generation and verification.

Testing

Before you start processing real payments via SDK UI & Core for Android, it is recommended that you test payment processing in the test project. You can obtain the identifier and the secret key of the test project when accessing the ecommpay test environment (this can be done via the company's website). Along with that, upon the coordination with the ecommpay specialists, it is possible to test the use of the Google Pay method and additional capabilities, such as cascade payment processing and collection of customer data.

To test payment processing:

  1. Open the build.gradle.kts module in the application.
  2. Specify the test project identifier (projectId) and the secret key of the given project (projectSecretKey).
  3. Run the gradle synchronisation process.

To switch to the production mode, change the test values (the identifier and the secret key of the test project) to the production ones.

Use

Opening payment form

SDK UI & Core for Android supports such actions as performing one-time purchases and placing authorisation holds as part of executing two-step purchases, registering COF purchases and performing payment card verification. To initiate these actions, you need a certain parameter set. The required minimum of parameters is passed in the EcmpPaymentInfo object while other parameters can be passed in the EcmpPaymentOptions object, requested from the customer, or received from the payment platform.

Warning: Starting August 12, 2024, Visa Rules will be updated to expand the set of parameters mandatory for processing Visa card payments with the 3‑D Secure authentication. In such cases it will be required to specify the customer's phone number or email. At least one of these parameters must be specified in the EcmpPaymentOptions object when the payment form is opened for payment processing. The example can be found below.

However, it is also recommended that these and a number of other parameters (with the billing address information) are specified for payments made with cards of other card schemes. According to Visa, rigorous use of these parameters can significantly increase payment acceptance rates (up to 6 %) and drastically decrease the number of operations flagged as fraudulent after they have been processed (up to 65 %).

To open the payment form:

  1. Create the EcmpPaymentInfo object.
    • This object must contain the following required parameters:
      • projectId (integer)—a project identifier assigned by ecommpay
      • paymentId (string)—a payment identifier unique within the project
      • paymentCurrency (string)—the payment currency code in the ISO 4217 alpha-3 format
      • paymentAmount (integer)—the payment amount in the smallest currency unit
      • customerId (string)—a customer's identifier within the project
      • signature (string)—a request signature generated after all required parameters have been specified
    • You can also add any other parameters listed in the following table.
    val ecmpPaymentInfo = EcmpPaymentInfo(
            projectId = 77655,
            paymentId = payment_322,
            paymentAmount = 100,
            paymentCurrency = "USD",
            paymentDescription = "Cosmoshop payment", 
            customerId = "customer_003",
            regionCode = "DE",           //Code of the customer's country
            token = "o8i7u65y4t3rkjhgfdw3456789oikjhgfdfghjkl...", //Token associated with certain payment data
            languageCode = "de",         //Payment interface language code
            receiptData = "eyAKICAicG9zaXRpb25zIjpbIAogICAgIIjoxLAogICAgICAgICJhbW91bnQiOjU5OTAsCiAgQ==",
            //Data to be included in the notification with the list of the purchased items
            hideSavedWallets = false,    //Parameter to enable hiding or displaying saved payment instruments
            forcePaymentMethod = card    //Identifier of the preselected payment method
       )
  2. Sign the parameters contained in the EcmpPaymentInfo object.
    ecmpPaymentInfo.signature = SignatureGenerator.generateSignature(
            paramsToSign = ecmpPaymentInfo.getParamsForSignature(),
            secret = SECRET_KEY
       )
  3. Create the EcmpPaymentOptions object that contains the required parameter actionType (string) with the value specifying the required operation type: Sale, Auth, or Verify. In addition, for 3‑D Secure you may be required to specify the customer's email (CUSTOMER_EMAIL) or phone number (CUSTOMER_PHONE), while it is also recommended that you pass the customer's billing address information:
    • BILLING_COUNTRY—the country of the customer's billing address in the ISO 3166-1 alpha-2 format (details)
    • BILLING_POSTAL—the postcode of the customer's billing address
    • BILLING_CITY—the city of the customer's billing address
    • BILLING_ADDRESS—the street of the customer's billing address

    You can also add any other objects and parameters listed in the following table.

    In addition to the required EcmpPaymentInfo object and the actionType parameter, the following example contains several additional parameters including the additionalFields object with data specified in the fields that are used for collecting customer information. These additional fields include the parameters that can be required for 3‑D Secure.

    val paymentOptions = paymentOptions {
            paymentInfo = ecmpPaymentInfo
            actionType = EcmpActionType.Sale
            brandColor = "#800008"
            isDarkTheme = false
            logoImage = BitmapFactory.decodeResource(resources, R.drawable.example_logo)
            hideScanningCards = false 
            isTestEnvironment = true
            merchantId = BuildConfig.GPAY_MERCHANT_ID
            merchantName = "Example Merchant Name"
            screenDisplayModes {
              mode(EcmpScreenDisplayMode.HIDE_DECLINE_FINAL_SCREEN)
              mode(EcmpScreenDisplayMode.HIDE_SUCCESS_FINAL_SCREEN)
            }
            additionalFields {
              field {
                type = EcmpAdditionalFieldType.CUSTOMER_EMAIL
                value = "mail@mail.com"
              }
              field {
                type = EcmpAdditionalFieldType.CUSTOMER_PHONE
                value = "customerPhone"
              }
              field {
                type = EcmpAdditionalFieldType.CUSTOMER_FIRST_NAME
                value = "firstName"
              }
            }
    }
  4. Create the EcmpPaymentSDK object.
    val sdk = EcmpPaymentSDK(
            context = applicationContext,
            paymentOptions = paymentOptions,
            )

    If necessary, you can open the payment form in the test mode in order to get information about errors if there were any when payment parameters were specified or to test processing payments with a certain payment result. In the EcmpPaymentSDK object, specify the EcmpPaymentSDK.EcmpMockModeType.SUCCESS value for the mockModeType parameter (if you need to receive Success payment result). You can also pass values EcmpPaymentSDK.EcmpMockModeType.DECLINE (if you need to receive Decline payment result) and EcmpPaymentSDK.EcmpMockModeType.DISABLED (if you need to switch to the production mode).

  5. Open the payment form.
    sdk.openPaymentScreen(this, 1234)

Processing payments

By default, SDK UI and Core for Android allows processing one-step purchases (action type Sale). This type of checkout works right out-of-the-box and requires no additional setup.

In addition, SDK UI and Core for Android supports processing two-step purchases (which involves placing an authorisation hold via the SDK and subsequent debiting of the authorised amount). To perform a two-step purchase:

  1. Open the payment form with EcmpActionType.Auth specified as a value for the action type parameter in the paymentOptions object:
    (EcmpPaymentOptions.EcmpActionType.Auth);
  2. When needed, initiate debiting of the authorised amount via Dashboard (details) or Gate (by sending the request to the /v2/payment/card/capture endpoint).

Payment card verification

Payment instrument verification can be used when you need to validate a card without withdrawing funds instantly (for example, before performing a payout) or when you need to save card details for subsequent use. It is essentially a payment that involves debiting a dummy (zero) amount from the customer's card.

To perform verification, open the payment form with EcmpActionType.Verify specified as a value for the action type parameter in the paymentOptions object:

(EcmpPaymentOptions.EcmpActionType.Verify);

Payment status information

To receive payment result notifications, use the onActivityResult method.

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
 
        when (resultCode) {
            EcmpPaymentSDK.RESULT_SUCCESS -> {
                Toast.makeText(this, "Payment was finished successfully", Toast.LENGTH_SHORT).show()
                Log.d("PaymentSDK", "Payment was finished successfully")
            }
            EcmpPaymentSDK.RESULT_CANCELLED -> {
                Toast.makeText(this, "Payment was cancelled", Toast.LENGTH_SHORT).show()
                Log.d("PaymentSDK", "Payment was cancelled")
            }
            EcmpPaymentSDK.RESULT_DECLINE -> {
                Toast.makeText(this, "Payment was declined", Toast.LENGTH_SHORT).show()
                Log.d("PaymentSDK", "Payment was declined")
            }
            EcmpPaymentSDK.RESULT_ERROR -> {
                val errorCode = data?.getStringExtra(EcmpPaymentSDK.EXTRA_ERROR_CODE)
                val message = data?.getStringExtra(EcmpPaymentSDK.EXTRA_ERROR_MESSAGE)
                Toast.makeText(this, "Payment was interrupted. See logs", Toast.LENGTH_SHORT).show()
                Log.d(
                    "PaymentSDK",
                    "Payment was interrupted. Error code: $errorCode. Message: $message"
                )
            }
        }
    }

Possible payment result codes:

  • RESULT_SUCCESS—payment has been completed.
  • RESULT_CANCELLED—payment has been cancelled.
  • RESULT_DECLINE—payment has been denied.
  • RESULT_ERROR—error occurred when the payment was being processed.

Additional capabilities

Submitting additional payment information

Generally, for processing a payment, it is enough to send a set of parameters that are mandatory for its initiation. However, in some cases, a payment system or a provider can require additional data necessary for processing a particular payment. This can be due to region-specific requirements, the need for an additional anti-fraud check, or other factors. The information about submitting additional payment data is provided in the following article.

The final set of required parameters can vary depending on a specific provider or a payment system. The list of parameters relevant for a particular payment is displayed to the customer on the payment form. The customer fills in the required data, confirms the payment, and receives the payment result information.

Cascade payment processing

In case of a payment attempt failure, the capability of cascade payment processing can be used (details). This capability implies executing a sequence of payment attempts via alternative providers without the payment method change and can be set up upon coordination with the ecommpay specialists.

If this capability is set up for the project in use, then after the first unsuccessful attempt, a notification is received from SDK UI & Core for Android. This notification contains the cascading_with_redirect = true attribute-value pair. Along with that, the error page with the button to retry making the payment is shown to the customer. If the 3‑D Secure authentication is not required as part of the additional attempt, then the attempt is executed without any further interaction with the customer. Otherwise, a separate page opens for repeating the authentication process.

Collecting customer data

In some cases, alongside the mandatory parameters, it can be relevant to require the additional ones (such as phone numbers and email addresses) from the customers. To have this capability set up, the merchant should decide which data has to be mandatory to be specified by the customers and communicate data collection preferences to the technical support specialists. For more information about using the capability, see the separate article.

Payment interface language support

By default, during the work with SDK UI & Core, the payment interface is localised according either to the language of the customer's device—if this language is supported for the project in use—or to a language set as default for other cases (generally, English). Along with that, if relevant, you can localise the payment interface for particular sessions. For this, every request for opening the payment form must contain a corresponding language code in the languageCode (details).

Warning: If the language is not supported for the project, the payment form is not opened and the error information is displayed to the customer.

The following languages are supported for the SDK interface and can be promptly set up in the projects of the payment platform.

Language Code
English en
German de
Hungarian hu
Italian it
Spanish es
French fr

Saving payment data

SDK UI & Core for Android allows saving payment data of the customer for subsequent processing of payments without the need for the said customer to re-enter such data. This capability is set up individually for each project. The merchant has to let the technical support know which of the two options is preferable: always save payment data or ask the customer to select the option. For more information about this capability, refer to article Saving customer payment data.

As a result of saving payment data, a separate identifier is generated for each payment instrument. This identifier is associated with the identifier of a certain customer (customerId). To display saved payment data to the customer, pass false in the hideSavedWallets parameter of the EcmpPaymentOptions object.

Payment form opening parameters

When working with SDK UI & Core for Android, you can pass the following optional parameters in the EcmpPaymentInfo object.

Parameter Description

paymentDescription
string

Description of the payment. A string that contains between 1 and 255 characters.

Example: Cosmoshop purchase

receiptData
string

Data to be included in the notification with the list of the purchased items, passed as a JSON object encoded using the Base64 scheme.

Example: eyAgCiAgICAgICJwb3NpdGlvbnMiOlsgIAogICAgICAgICB7ICAKICAgICAgI CAgICAgInF1YW50aXR5IjozLAogICAgICAgICAgICAiYW1vdW50IjoxMDAwMC wKICAgICAgICAgICAgInRheCI6MTgsCiAgICAg

token
string

Token associated with certain payment data. A string that contains between 1 and 255 characters.

Example: 6bbd9255e484f00cc778246c5b7489aa4c498b8bb5231e85942437c

hideSavedWallets
boolean

Parameter to enable hiding or displaying saved payment instruments in the payment form.

Possible values:

  • true—saved payment data is hidden
  • false—saved payment data is displayed.

forcePaymentMethod
string

The identifier of the preselected payment method according to the table.

Example: card

ecmpThreeDSecureInfo
object

Object that contains additional objects and parameters necessary for the 3‑D Secure 2 authentication.

languageCode
string

Payment interface language code in the ISO 639-1 alpha-2 format. Must match one of the languages supported for the given project.

Example: EN

regionCode
string

Code of the customer's country in the ISO 3166-1 alpha-2 format.

Example: GB

You can pass the following optional parameters in the EcmpPaymentOptions object.

Parameter Description

merchantID
string

The Google Pay identifier of the merchant.

merchantName
string

The Google Pay name of the merchant.

logoImage
bitmap

A bitmap file that contains the logo of the merchant.

brandColor
string

Payment interface colour in hexadecimal format.

Example: #800080

isTestEnvironment
boolean

Parameter to indicate a test payment.

Possible values:

  • true
  • false

additionalFields
list

Additional fields that contain information about the customer.

Example: EcmpAdditionalField(EcmpAdditionalFieldType.CUSTOMER_EMAIL,"mail@mail.com")

recipientInfo
object—object with information about the recipient of the payment.

pan
string

Card number.

Example: 5413330000000019

card_holder
string

First and last name (as specified on the card).

Example: Arthur Eddington

wallet_id
string

Number of the wallet.

Example: WID2812188222111944

wallet_owner
string

First and last name of the recipient.

Example: Arthur Eddington

country
string

Code of the recipient's country in the ISO 3166-1 alpha-2 format.

Example: GB

address
string

Recipient's address.

Example: 42 Walliscote Road

city
string

Recipient's city of residence.

Example: Weston-super-Mare

state
string

Recipient's state.

Example: GB

To work with COF purchases, you should pass relevant parameters in the recurrentData object of the EcmpPaymentOptions object.

Parameter Description

type
string

COF purchase type:

  • COneClick
  • U—autopurchase
  • R—regular purchase

period
string

Debiting period for a regular purchase.

Possible values:

  • D—daily
  • W—weekly
  • M—monthly
  • Q—quarterly
  • Y—yearly

expiry_day
string

Expiration day of the COF purchase.

expiry_month
string

Expiration month of the COF purchase.

expiry_year
integer

Expiration year of the COF purchase.

scheduled_payment_id
string

Identifier to assign to the COF purchase (for automatic debiting).

Parameter must be passed together with the start_date parameter.

start_date
string

Date to perform the first debit in the dd-mm-yyyy format. Parameter must be passed together with the scheduled_payment_id parameter.

time
string

Time when to perform a scheduled debit (for regular purchases) in the hh:mm:ss format, passed if the period parameter is specified as well.

schedule
object—schedule of debits performed as part of the COF purchase (can be specified by the merchant). Should contain parameters amount and date.

amount
integer

The amount to debit in the smallest currency unit.

date
string

Date to perform the debit in the dd-mm-yyyy format.

You can pass the following optional parameters in the ecmpThreeDSecureInfo object. Including these parameters increases the possibility of frictionless flow selection.

Parameter Description
threeDSecureInfo—object of the ECMPThreeDSecureInfo class containing additional objects and parameters used during the 3‑D Secure 2 authentication
threeDSecurePaymentInfo—object of the ECMPThreeDSecurePaymentInfo class with information about the purchase details and indication of the preferable authentication flow

challengeIndicator
string

This parameter indicates whether challenge flow is requested for this payment.

Possible values:
  • 01—no preferences
  • 02—it is preferable not to use challenge flow
  • 03—challenge flow preferred
  • 04—always use challenge flow

challengeWindow
string

The dimensions of a window in which authentication page opens.

Possible values:
  • 01—250 x 400 px
  • 02—390 x 400 px
  • 03—500 x 600 px
  • 04—600 x 400 px
  • 05—full screen

preorderDate
string

The date the preordered merchandise will be available.

Format: dd-mm-yyyy.

preorderPurchase
string

This parameter indicates whether cardholder is placing an order for merchandise with a future availability or release date.

Possible values:
  • 01—merchandise available in stock
  • 02—future merchandise availability

reorder
string

This parameter indicates whether the cardholder is reordering previously purchased merchandise.

Possible values:
  • 01—first time order
  • 02—reorder
threeDSecureGiftCardInfo—object of the ECMPThreeDSecureGiftCardInfo class with information about payment with prepaid card or gift card.

amount
integer

Amount of the payment with prepaid or gift card denominated in the smallest currency unit.

currency
string

Currency code of the payment with prepaid or gift card in the ISO 4217 alpha-3 format, for example GBP.

count
integer

Total number of individual prepaid or gift cards/codes used in purchase.
threeDSecureCustomerInfo—object of the ECMPThreeDSecureCustomerInfo class with information about the customer.

addressMatch
string

The parameter indicates whether the customer billing address matches the address specified in the threeDSecureShippingInfo object.

Possible values:
  • Y—Shipping Address matches Billing Address
  • N—Shipping Address does not match Billing Address

billingRegionCode
string

State, province, or region code in the ISO 3166-2 format. Example: DOR for Dorset.

homePhone
string

Customer home phone number.

Numeric, from 4 to 24 characters. Example: 44991234567.

workPhone
string

Customer work phone number.

Numeric, from 4 to 24 characters. Example 44997654321.

threeDSecureAccountInfo—object of the ECMPThreeDSecureAccountInfo class with information about customer account details on record with the web service

additional
string

Additional customer account information, for instance arbitrary customer ID.

Maximum 64 characters.

activityDay
integer

Number of card payment attempts in the last 24 hours.

Maximum 3 characters (999).

activityYear
integer

Number of card payment attempts in the last 365 days.

Maximum 3 characters (999).

ageIndicator
string

Number of days since the customer account was created.

Possible values:
  • 01—guest check-out
  • 02—customer account was created in this transaction
  • 03—customer account was created less than 30 days ago
  • 04—customer account was created 30 to 60 days ago
  • 05—customer account was created over 60 days ago

authData
string

Any additional log in information in free text.

Maximum 255 characters.

authMethod
string

Authentication type the customer used to log on to the account when placing the order.

Possible values:
  • 01—no authentication
  • 02—log on by using authentication data on file with merchant
  • 03—log on by using federated ID (for example, Google Account or Facebook)
  • 04—log on by using a FIDO authenticator (Fast IDentity Online)

authTime
string

Account log on date and time.

Format: dd-mm-yyyyhh:mm.

date
string

Account creation date.

Format: dd-mm-yyyy.

changeDate
string

Last account change date except for password change or password reset.

Format: dd-mm-yyyy.

changeIndicator
string

Number of days since last customer account update, not including password change or reset.

Possible values:
  • 01—updated in this transaction
  • 02—updated less than 30 days ago
  • 03—updated 30−60 days ago
  • 04—updated over 60 days ago

passChangeDate
string

Last password change or password reset date.

Format: dd-mm-yyyy.

passChangeIndicator
string

Number of days since the last password change or reset.

Possible values:
  • 01—password never changed
  • 02—changed in this transaction
  • 03—changed less than 30 days ago
  • 04—changed 30−60 days ago
  • 05—changed over 60 days ago

paymentAge
string

Card record creation date.

Format: dd-mm-yyyy.

paymentAgeIndicator
string

Number of days since the payment card details were saved in a customer account.

Possible values:
  • 01—current payment uses no customer account (guest checkout)
  • 02—card details were saved today
  • 03—card details were saved less than 30 days ago
  • 04—card details were saved 30 to 60 days ago
  • 05—card details were saved more than 60 days ago

provisionAttempts
integer

Number of attempts to add card details in customer account in the last 24 hours.

Maximum 3 characters (999).

purchaseNumber
integer

Number of purchases with this cardholder account in the previous six months.

Maximum 4 characters (9999).

suspiciousActivity
string

Suspicious activity detection result.

Possible values:
  • 01—no suspicious activity detected
  • 02—suspicious activity detected
threeDSecureShippingInfo—object of the ECMPThreeDSecureShippingInfo class with shipping details.

address
string

Shipping address.

Maximum 150 characters.

addressUsage
string

First shipping address usage date.

Format: dd-mm-yyyy.

addressUsageIndicator
string

Number of days since the first time usage of the shipping address.

Possible values:
  • 01—this transaction
  • 02—less than 30 days ago
  • 03—30−60 days ago
  • 04—more than 60 days ago

city
string

Shipping city.

Maximum 50 characters.

country
string

Shipping country in the ISO 3166-1 alpha-2 format, for example GB.

deliveryEmail
string

The email for the digital content delivery.

Maximum 255 characters.

deliveryTime
string

Shipment terms.

Possible values:
  • 01—digital delivery
  • 02—same-day delivery
  • 03—overnight delivery
  • 04—longer than overnight delivery

nameIndicator
string

Shipment recipient flag.

Possible values:
  • 01—customer and shipment recipient are the same person
  • 02—customer and shipment recipient are different persons

postal
string

Shipping postbox number.

Maximum 16 characters.

regionCode
string

State, province, or region code in the ISO 3166-2 format. Example: DOR for Dorset.

If you specify this parameter, you need also to specify and populate the country parameter in the threeDSecureShippingInfo object.

type
string

Shipment indicator.

Possible values:
  • 01—ship to cardholder billing address
  • 02—ship to another verified address on file with merchant
  • 03—ship to address that is different from the cardholder billing address or any verified address on file with merchant
  • 04—ship to local store
  • 05—digital goods shipment
  • 06—no shipment, for instance for travel or event tickets
  • 07—other, for example gaming or subscriptions
threeDSecureMpiResultInfo—object of the ECMPThreeDSecureMpiResultInfo class with information about previous customer authentication

acsOperationId
string

The ID the issuer assigned to the previous customer operation. Maximum 36 characters.

authenticationFlow
string

The flow the issuer used to authenticate the cardholder in the previous operation.

Possible values:
  • 01—frictionless flow
  • 02—challenge flow

authenticationTimestamp
string

Date and time of the previous successful customer authentication