Payer Authentication SO API
Payer Authentication SO API
October 2019
CyberSource Corporation HQ | P.O. Box 8999 | San Francisco, CA 94128-8999 | Phone: 800-530-9095
CyberSource Contact Information
For general information about our company, products, and services, go to
http://www.cybersource.com.
For support information about any CyberSource Service, visit the Support Center at
http://www.cybersource.com/support.
Copyright
© 2019 CyberSource Corporation. All rights reserved. CyberSource Corporation ("CyberSource") furnishes this
document and the software described in this document under the applicable agreement between the reader of
this document ("You") and CyberSource ("Agreement"). You may use this document and/or software only in
accordance with the terms of the Agreement. Except as expressly set forth in the Agreement, the information
contained in this document is subject to change without notice and therefore should not be interpreted in any way
as a guarantee or warranty by CyberSource. CyberSource assumes no responsibility or liability for any errors
that may appear in this document. The copyrighted software that accompanies this document is licensed to You
for use only in strict accordance with the Agreement. You should read the Agreement carefully before using the
software. Except as permitted by the Agreement, You may not reproduce any part of this document, store this
document in a retrieval system, or transmit this document, in any form or by any means, electronic, mechanical,
recording, or otherwise, without the prior written consent of CyberSource.
Trademarks
Authorize.Net, eCheck.Net, and The Power of Payment are registered trademarks of CyberSource Corporation.
CyberSource, CyberSource Payment Manager, CyberSource Risk Manager, CyberSource Decision Manager,
and CyberSource Connect are trademarks and/or service marks of CyberSource Corporation.
All other brands and product names are trademarks or registered trademarks of their respective owners.
2
CONTENTS
Contents
Glossary 227
Index 234
Release Changes
October 2019 Added 3D Secure 2.x fields. See Appendix A, "API Fields," on page 149.
Note: The 3D Secure 2.x. fields are in beta release. The field descriptions, values, and lengths
are subject to change.
Request fields:
billTo_httpBrowserColorDepth
billTo_httpBrowserJavaEnabled
billTo_httpBrowserJavaScriptEnabled
billTo_httpBrowserLanguage
billTo_httpBrowserScreenHeight
billTo_httpBrowserScreenWidth
billTo_httpBrowserTimeDifference
item_#_shippingDestinationTypes
payerAuthEnrollService_acquirerCountry
payerAuthEnrollService_acsWindowSize
payerAuthEnrollService_authenticationIndicator
payerAuthEnrollService_deviceChannel
payerAuthEnrollService_merchantFraudRate
payerAuthEnrollService_merchantScore
payerAuthEnrollService_priorAuthenticationData
payerAuthEnrollService_priorAuthenticationMethod
payerAuthEnrollService_priorAuthenticationReferenceID
payerAuthEnrollService_priorAuthenticationTime
payerAuthEnrollService_requestorInitiatedAuthenticationIndicator
payerAuthEnrollService_sdkMaxTimeout
payerAuthEnrollService_secureCorporatePaymentIndicator
payerAuthEnrollService_totalOffersCount
payerAuthEnrollService_whiteListStatus
shipTo_destinationTypes
Release Changes
October 2019 Reply fields:
(continued)
card_bin
card_cardTypeName
payerAuthEnrollReply_acsRenderingType
payerAuthEnrollReply_acsTransactionID
payerAuthEnrollReply_authenticationStatusReason
payerAuthEnrollReply_authenticationType
payerAuthEnrollReply_authorizationPayload
payerAuthEnrollReply_cardholderMessage
payerAuthEnrollReply_challengeCancelCode
payerAuthEnrollReply_challengeRequired
payerAuthEnrollReply_directoryServerErrorCode
payerAuthEnrollReply_directoryServerErrorDescription
payerAuthEnrollReply_effectiveAuthenticationType
payerAuthEnrollReply_ivrEnabledMessage00
payerAuthEnrollReply_ivrEncryptionKey
payerAuthEnrollReply_ivrEncryptionMandatory
payerAuthEnrollReply_ivrEncryptionType
payerAuthEnrollReply_ivrLabel
payerAuthEnrollReply_ivrPrompt
payerAuthEnrollReply_ivrStatusMessage
payerAuthEnrollReply_networkScore
payerAuthEnrollReply_sdkTransactionID
payerAuthEnrollReply_stepUpUrl
payerAuthEnrollReply_threeDSServerTransactionID
payerAuthEnrollReply_whiteListStatus
payerAuthEnrollReply_whiteListStatusSource
payerAuthValidateReply_acsRenderingType
payerAuthValidateReply_acsTransactionID
payerAuthValidateReply_authenticationStatusReason
payerAuthValidateReply_authenticationType
payerAuthValidateReply_authorizationPayload
payerAuthValidateReply_challengeCancelCode
payerAuthValidateReply_directoryServerErrorCode
payerAuthValidateReply_directoryServerErrorDescription
Release Changes
October 2019 Reply fields: (continued)
(continued)
payerAuthValidateReply_effectiveAuthenticationType
payerAuthValidateReply_interactionCounter
payerAuthValidateReply_sdkTransactionID
payerAuthValidateReply_threeDSServerTransactionID
payerAuthValidateReply_whiteListStatus
payerAuthValidateReply_whiteListStatusSource
September 2019 Added a new chapter for SDK integration. See Chapter 4, "Implementing SDK Payer
Authentication," on page 40.
Removed the Action Codes section from Chapter 3, "Implementing Standard Payer
Authentication," on page 33.
Updated the "Test Cases for 3D Secure 2.x" for the following:
Added the e-commerce indicator or ECI to several test cases where it was missing.
Release Changes
April 2019 Updated the introduction chapter to include PSD2 information, implementation steps for
various scenarios, and details about using Secure Acceptance with Payer Authentication.
See Chapter 1, "Introducing Payer Authentication," on page 15.
Added a list of required fields for 3D Secure 2.x. See "Requesting the Check Enrollment
Service (Hybrid)," page 27 and "Requesting the Check Enrollment Service (Standard),"
page 37.
Updated the "Test Cases for 3D Secure 2.x," page 119.
Updated required and optional API fields for 3D Secure 2.x. See Appendix A, "API Fields,"
on page 149.
Updated the following request fields:
payerAuthEnrollService_challengeCode
payerAuthEnrollService_fraudActivity
payerAuthEnrollService_messageCategory
payerAuthEnrollService_preorder
payerAuthEnrollService_reorder
Added the following reply fields:
payerAuthEnrollReply_challengeRequired
payerAuthEnrollReply_directoryServer TransactionID
payerAuthValidateReply_directoryServer TransactionID
Scope
This guide describes how to use the Simple Order API to integrate payer authentication
services with your order management system. It does not describe how to get started
using the Simple Order API nor does it explain how to use CyberSource services other
than payer authentication. For that information, see "Related Documents," page 14.
Conventions
Related Documents
Getting Started with CyberSource Advanced for the Simple Order API describes how
to get started using the Simple Order API. (PDF | HTML)
Decision Manager Developer Guide Using the Simple Order API describes how to
integrate Decision Manager, a fraud detection service, with your order management
system. (PDF | HTML)
Credit Card Services Using the Simple Order API describes how to integrate
CyberSource payment processing services into your business. (PDF | HTML)
Secure Acceptance Checkout API Integration Guide describes how to create Secure
Acceptance profiles, which enable you to integrate your order management system
with a web site to process transactions. (PDF | HTML)
Reporting Developer Guide describes how to view and configure Business Center
reports. (PDF | HTML)
The CyberSource API Versions page provides information about the CyberSource API
versions.
Customer Support
For support information about any CyberSource service, visit the Support Center:
http://www.cybersource.com/support
CyberSource Payer Authentication services use JavaScript and the ICS services to
provide authentication.
Payer Authentication services enable you to add support to your web store for card
authentication services, including Visa SecureSM, Mastercard Identity Check®, Maestro®
(UK Domestic and international), American Express SafeKeySM, JCB J/Secure™, Diners
Club ProtectBuy, and Discover ProtectBuy.
These card authentication services deter unauthorized card use and protect you from
fraudulent chargeback activity referred to as liability shift. However, CyberSource Payer
Authentication is not a fraud management service, such as Decision Manager with
Advanced Fraud Screen. CyberSource recommends that you implement a comprehensive
fraud management program in addition to payer authentication services.
You can use payer authentication services with specific payment processors. To find out if
your payment processor supports this feature, see the “Payer Authentication” section in
Credit Card Services Using the Simple Order API (PDF | HTML).
Chargebacks occur after a transaction is processed, and how they are handled varies
according to the region that issued the card. Payment card company rules might vary over
time and across geographical regions. CyberSource recommends that you contact your
merchant account provider to find out exactly how to interpret chargeback requirements
and which chargeback protections are offered.
PSD2
PSD2 (Payment Service Directive 2) is the new European regulatory framework that
governs payment processing and customer security and authentication. PSD2 establishes
a European Economic Area (EEA) single market for payments (including the UK even if
departed from the EEA) to encourage safer and more innovative payment services. PSD2
mandates Strong Customer Authentication (SCA) for all electronic payments. This
requirement affects the way merchants receive payments from customers and how
customers are authenticated. PSD2 stipulates that two-factor authentication be applied for
all electronic payments.
3D Secure 2.x
3D Secure 2.x is the authentication protocol provided by the card networks to support
SCA. To comply with SCA, merchants must deploy 3D Secure 2.x to their checkout page
or use a compliant hosted checkout.
Additional data can be passed in now and will be automatically sent to issuers as they
upgrade to 3D Secure 2.x. CyberSource Payer Authentication service is also backward-
compatible with 3D Secure 1.0.
Hybrid integration
Standard integration
SDK integration for your mobile application
Cardinal Cruise Direct Connection API
For information on the Cardinal Cruise Direct Connection API, see the JavaScript
Documentation. For any questions, contact CardinalCommerce Customer Support
directly.
If you are using tokenization, you must use the Hybrid integration method.
The SDK integration is designed for 3D Secure 2.x transactions only.
Note
You can also use Secure Acceptance to enable 3D Secure 2.x for payer authentication
services. For more information, see "Using Secure Acceptance with Payer
Authentication."
The beginning chapters of this book provide an overview of the payer authentication
process for Standard, Hybrid, and SDK integrations. For further details, see:
Step 1 Contact your CyberSource account manager or sales manager to learn more about 3D
Secure 2.x and PSD2.
Step 1 Contact your CyberSource account manager, sales manager, or technical account
manager to learn more about 3D Secure 2.x and PSD2.
Step 5 Configure your account for production. Repeat Steps 2-4 for the production environment.
Step 1 Contact your CyberSource account manager, sales manager, or technical account
manager to learn more about 3D Secure 2.x and PSD2.
Step 5 Configure your account for production. Repeat Steps 2-4 for the production environment.
For more information on implementing Secure Acceptance with payer authentication, see
the Secure Acceptance Hosted Checkout Integration Guide or Secure Acceptance
Checkout API Integration Guide.
3 Call Cardinal.setup().
4 Run BIN detection. If the BIN is eligible for 3D Secure 2.x, it gathers the proper Method
URL JavaScript required by the issuer to collect additional device data.
5 You request the Enrollment Check service, passing in transaction details and the
payerAuthEnrollService_referenceID request field.
6 If the issuing bank does not require authentication, you receive the following information in
the Enrollment Check reply:
E-commerce indicator
CAVV (all card types except Mastercard)
AAV (Mastercard only)
Transaction ID (XID)
3D Secure version
Directory server transaction ID
7 If the issuing bank requires authentication, you receive a response with the ACS URL of
the issuing bank, the payload, and the transaction ID that you include in the
Cardinal.continue JavaScript call.
8 The JavaScript displays the authentication window, and the customer enters the
authentication information.
9 The bank validates the customer credentials, and a JWT is returned that the merchant is
required to validate server-side for security reasons.
10 You request the Validate Authentication service, extracting the processor transaction ID
value from the JWT and sending it in the payerAuthValidateService_
authenticationTransactionID request field. You receive the e-commerce indicator, CAVV
or AAV, transaction ID (XID), 3D Secure version, and directory server transaction ID.
Verify that the authentication was successful and continue processing your order.
You must pass all pertinent data for the card type and processor in your authorization
request. For more information, see "Requesting the Validation Service," page 30.
3 Call Cardinal.setup().
4 Run BIN detection. If the BIN is eligible for 3D Secure 2.x, it gathers the proper Method
URL JavaScript required by the issuer to collect additional device data.
5 When the customer places an order on your web site, you call the cardinal.start function to
pass in the transaction level data including the full PAN and order details.
6 The JavaScript verifies with the bank that the card is enrolled in a 3D Secure card
authentication program by using a server-to-server call.
7 If the issuing bank requires authentication, the JavaScript displays the authentication
window.
9 The bank validates the customer credentials, and a JWT is returned that the merchant is
required to validate server-side for security reasons.
10 You request the ICS Enrollment Check service, extracting the processor transaction ID
value from the JWT and sending it in the payerAuthEnrollService_
authenticationTransactionID request field. You receive this information:
E-commerce indicator
CAVV (all card types except Mastercard)
AAV (Mastercard only)
Transaction ID (XID)
3D Secure version
Directory server transaction ID
Verify that the authentication was successful and continue processing your order.
You must pass all pertinent data for the card type and processor in your authorization
request. For more information, see "Requesting the Check Enrollment Service
(Standard)," page 37.
2 Contact CardinalCommerce Customer Support for instructions to register for an API key.
3 Download and import the Cardinal Mobile SDK for either iOS or Android.
7 Create an API call to your merchant server to request the Enrollment Check service,
passing in transaction details and the payerAuthEnrollService_referenceID request
field.
8 If the issuing bank does not require authentication, you receive the following information in
the Enrollment Check reply:
E-commerce indicator
CAVV (all card types except Mastercard)
AAV (Mastercard only)
Transaction ID (XID)
3D Secure version
Directory server transaction ID
9 If the issuing bank requires authentication, you receive a response with the payload, and
the transaction ID that you include in the Cardinal.continue call from your SDK.
10 The Cardinal Mobile SDK displays the authentication window, and the customer enters the
authentication information.
11 The bank validates the customer credentials and a JWT is returned by the SDK in the
onValidated callback that the merchant is required to validate server-side for security
reasons.
12 Create an API call to your merchant server to request the Validate Authentication service,
extracting the processor transaction ID value from the JWT and sending it in the
payerAuthValidateService_authenticationTransactionID request field. You receive the
e-commerce indicator, CAVV or AAV, transaction ID (XID), 3D Secure version, and
directory server transaction ID.
Verify that the authentication was successful and continue processing your order.
You must pass all pertinent data for the card type and processor in your authorization
request. For more information, see "Requesting the Validation Service," page 57.
You must provide the information listed in Table 1 to CyberSource before payer
authentication services can be enabled:
Information Description
About your company Your CyberSource merchant ID.
URL of your company’s web site, for example:
http://www.example.com
Two-character ISO code for your country.
3D Secure requestor ID
3D Secure requestor name
Merchant category code
Bank information Name of your bank acquirer.
Complete name and address of your bank contact,
including email address.
Visa, Mastercard, Maestro, Information provided by your bank acquirer about each
American Express, JCB, Diners payment card company for which you are configured:
Club, and Discover information
6-digit BIN numbers.
Acquirer merchant ID
Acquirer merchant ID: merchant ID assigned by your
acquirer.
All currencies that you are set up to process.
This chapter summarizes the process of integrating Hybrid Payer Authentication services
into your existing business processes. CyberSource Payer Authentication services use
CardinalCommerce JavaScript to leverage the authentication. The JavaScript
Documentation links in this chapter navigate to the Cardinal site.
Process Overview
Notify your CyberSource account representative that you want to implement payer
authentication (3D Secure). Give them the CyberSource merchant ID that you will use for
testing. For more information, see "Required Merchant Information," page 24.
Use the test cases in Chapter 6, "Testing Payer Authentication Services," on page 70
to test your preliminary code and make the appropriate changes. You can change to
the test environment by changing the URL in your JavaScript code.
Credentials/API Keys
For implementation you need API keys to create the JSON Web Token (JWT). For further
information, contact CyberSource Customer Support.
2 Listen for Events: subscribe to events with Cardinal.on() and set up callback functions
for:
payments.setupComplete: this optional event will trigger when the JavaScript has
successfully initialized, after calling Cardinal.setup().
payments.validated: this event will trigger when the transaction has completed.
3 Initialize it: call Cardinal.setup() to trigger and pass your JWT to the JavaScript for each
transaction.
BIN Detection
BIN Detection is required and allows the card-issuing bank’s ACS provider to collect
additional device data; it can help speed up the authentication process by collecting this
data before the checkout page launches. This step occurs prior to authentication and must
occur before the Cardinal.start event (Standard integration) or Check Enrollment service
request (Hybrid integration). For further information, see the JavaScript Documentation.
billTo_city
billTo_country
billTo_email
billTo_firstName
billTo_lastName
billTo_postalCode
billTo_state
billTo_street1
card_accountNumber
card_cardType
card_expirationMonth
card_expirationYear
merchantID
merchantReference Code
payerAuthEnrollService_mobilePhone
payerAuthEnrollService_referenceID
payerAuthEnrollService_run
payerAuthEnrollService_transactionMode
purchaseTotals_currency
purchaseTotals_grandTotalAmount
You can send additional request data in order to reduce your issuer step-up
authentication rates. It is best to send all available fields.
Note
For further details on required and optional fields, see "Request Fields," page 151.
You can use the enrollment check and card authorization services in the same request or
in separate requests:
Same request: CyberSource attempts to authorize the card if your customer is not
enrolled in a payer authentication program. In this case, the field values that are
required in order to prove that you attempted to check enrollment are passed
automatically to the authorization service. If authentication is required, processing
automatically stops.
Separate requests: you must manually include the enrollment check result values
(Enrollment Check Reply Fields) in the authorization service request (Card
Authorization Request Fields).
Enrolled Cards
You receive reason code 475 if the customer’s card is enrolled in a payer
authentication program. When you receive this reply, you can proceed to validate
authentication.
When the account number is not enrolled in a payer authentication program. The
other services in your request are processed normally.
When payer authentication is not supported by the card type.
When you receive this reply, you can proceed to card authorization.
Example 1 Cardinal.continue
Cardinal.continue('cca',
"AcsUrl":"https://testcustomer34.cardinalcommerce.com/
merchantacsfrontend/pareq.jsp?vaa=b&gold=AAAAAAAA...AAAAAAA",
"Payload":"eNpVUk1zgjAQvedXME7PJEFBVdKt1CECeDkVCk2PcfcnNjv8Kr+7tx4nlbGO
cz/se6G1uMENPTPeeIz1G37WGEUth7YnpO21TfTvF3wDCBqspQ=="
},
"OrderDetails":{
"TransactionId" :"123456abc"
);
{
"iss": "5a4504be6fe3d1127cdfd94e",
"iat": 1555075930,
"exp": 1555083130,
"jti": "cc532159-636d-4fa8-931d-d4b0f4c83b99",
"ConsumerSessionId": "0_9a16b7f5-8b94-480d-bf92-09cd302c9230",
"aud": "d0cf3392-62c5-4107-bf6a-8fc3bb49922b",
"Payload": {
"Payment": {
"Type": "CCA",
"ProcessorTransactionId": "YGSaOBivyG0dzCFs2Zv0"
},
"ErrorNumber": 0,
"ErrorDescription": "Success"
}
}
Send the credit card information including the PAN, currency, and expiration date
(month and year).
CyberSource recommends that you request both payer authentication and card
authorization services at the same time. When you do so, CyberSource automatically
sends the correct information to your payment processor; CyberSource converts the
values of these fields to the proper format required by your payment processor:
If you request the services separately, you must manually include the validation result
values (Validation Check Reply Fields) in the authorization service request (Card
Authorization Request Fields). To receive liability shift protection, you must ensure that
you pass all pertinent data for the card type and processor in your request. Failure to do
so may invalidate your liability shift for that transaction. Include the electronic commerce
indicator (ECI), the transaction ID (XID), the 3D Secure version, the directory server
transaction ID, and the following card-specific information in your authorization request:
For Visa, American Express, JCB, Diners Club, and Discover include the CAVV
(cardholder authentication verification value).
For Mastercard, include the UCAF (universal cardholder authentication field) and the
collection indicator.
Proceed with the order according to the validation response that you receive. The replies
are similar for all card types:
Success:
You receive the reason code 100, and other service requests, including authorization,
are processed normally.
Failure:
You receive reason code 476 indicating that the authentication failed, so the other
services in your request are not processed.
Error:
If you receive an error from the payment card company, process the order according
to your business rules. If the error occurs frequently, report it to Customer Support. If
you receive a CyberSource system error, determine the cause, and proceed with card
authorization only if appropriate.
To verify that the enrollment and validation checks are for the same transaction, ensure
that the XID in the enrollment check and validation replies are identical.
Authentication Failed
Your card issuer cannot authenticate this card. Please select another card
or form of payment to complete your purchase.
Process Overview
Notify your CyberSource account representative that you want to implement payer
authentication (3D Secure). Give them the CyberSource merchant ID that you will use for
testing. For more information, see "Required Merchant Information," page 24.
Use the test cases in Chapter 6, "Testing Payer Authentication Services," on page 70
to test your preliminary code and make the appropriate changes. You can change to
the test environment by changing the URL in your JavaScript code.
Credentials/API Keys
For implementation you need API keys to create the JSON Web Token (JWT). For further
information, contact CyberSource Customer Support.
2 Listen for Events: subscribe to events with Cardinal.on() and set up callback functions
for:
payments.setupComplete: this optional event will trigger when the JavaScript has
successfully initialized, after calling Cardinal.setup().
payments.validated: this event will trigger when the transaction has completed.
3 Initialize it: call Cardinal.setup() to trigger and pass your JWT to the JavaScript for each
transaction.
BIN Detection
BIN Detection is required and allows the card-issuing bank’s ACS provider to collect
additional device data; it can help speed up the authentication process by collecting this
data before the checkout page launches. This step occurs prior to authentication and must
occur before the Cardinal.start event (Standard integration) or Check Enrollment service
request (Hybrid integration). For further information, see the JavaScript Documentation.
Starting Authentication
The JavaScript handles the device data collection, initiates the transaction for
authentication, displays the authentication window if required, and returns the
authentication results.
You initiate this authentication process, usually when the customer clicks the Place Order
or Submit Order button, by triggering Cardinal.start(). Cardinal.start() invokes the
authentication and authenticates the customer.
Create an order object to pass to the Cardinal.start() event. The more fields you include,
the less likely the cardholder will be challenged to provide credentials. See the JavaScript
Documentation for a list of 3D Secure 2.x fields.
Cardinal.start("cca", {
OrderDetails: {
OrderNumber: "1234567890"
},
Consumer: {
Account: {
AccountNumber: "4000000000001000",
ExpirationMonth: "01",
ExpirationYear: "2099"
...
<Other 2.x required/optional fields>
}
}
...
});
Payments.validated returns the authentication results and response JWT along with the
processor transaction ID as shown in Example 4.
{
"iss": "5a4504be6fe3d1127cdfd94e",
"iat": 1555075930,
"exp": 1555083130,
"jti": "cc532159-636d-4fa8-931d-d4b0f4c83b99",
"ConsumerSessionId": "0_9a16b7f5-8b94-480d-bf92-09cd302c9230",
"aud": "d0cf3392-62c5-4107-bf6a-8fc3bb49922b",
"Payload": {
"Payment": {
"Type": "CCA",
"ProcessorTransactionId": "YGSaOBivyG0dzCFs2Zv0"
},
"ErrorNumber": 0,
"ErrorDescription": "Success"
}
}
Authentication Failed
Your card issuer cannot authenticate this card. Please select another card
or form of payment to complete your purchase.
To request the Check Enrollment service, extract the processor transaction ID value
from the JWT and send it in the payerAuthEnrollService_authenticationTransactionID
request field. The following fields are also required:
billTo_city
billTo_country
billTo_email
billTo_firstName
billTo_lastName
billTo_postalCode
billTo_state
billTo_street1
card_accountNumber
card_cardType
card_expirationMonth
card_expirationYear
merchantID
merchantReference Code
payerAuthEnrollService_mobilePhone
payerAuthEnrollService_referenceID
payerAuthEnrollService_run
payerAuthEnrollService_transactionMode
purchaseTotals_currency
purchaseTotals_grandTotalAmount
You can send additional request data in order to reduce your issuer step-up
authentication rates. It is best to send all available fields.
Note
For further details on required and optional fields, see "Request Fields," page 151.
CyberSource recommends that you request both payer authentication and card
authorization services at the same time. When you do so, CyberSource automatically
sends the correct information to your payment processor; CyberSource converts the
values of these fields to the proper format required by your payment processor:
If you request the services separately, you must manually include the enrollment check
result values (Enrollment Check Reply Fields) in the authorization service request (Card
Authorization Request Fields). To receive liability shift protection, you must ensure that
you pass all pertinent data for the card type and processor in your request. Failure to do
so may invalidate your liability shift for that transaction. Include the electronic commerce
indicator (ECI), the transaction ID (XID), the 3D Secure version, the directory server
transaction ID, and the following card-specific information in your authorization request:
For Visa, American Express, JCB, Diners Club, and Discover include the CAVV
(cardholder authentication verification value).
For Mastercard, include the UCAF (universal cardholder authentication field) and the
collection indicator.
In most cases, you request card authorization only once for each purchase. However, you
must send multiple authorization requests if the original authorization expires before it is
captured, which can occur when order fulfillment is split or delayed. In these cases, you
must include in subsequent authorization requests the same payer authentication data
contained in the original request so that your acquiring bank can track all related requests
if a dispute occurs. Authentication data can only be used for one authorization and cannot
be used multiple times or on subsequent authorizations.
This chapter summarizes the process of integrating SDK Payer Authentication services
into your mobile application. CyberSource Payer Authentication services use the Cardinal
Mobile SDK for iOS or Android to facilitate the authentication. The JavaScript
Documentation links in this chapter navigate to the Cardinal site.
The SDK is only designed to handle 2.0 transactions. If a 1.0 transaction occurs, you must
include functionality to open up a WebView.
Process Overview
Notify your CyberSource account representative that you want to implement payer
authentication (3D Secure). Give them the CyberSource merchant ID that you will use for
testing. For more information, see "Required Merchant Information," page 24.
Download, import, and configure the Cardinal Mobile SDK for either iOS or Android
Use the test cases in Chapter 6, "Testing Payer Authentication Services," on page 70
to test your preliminary code and make the appropriate changes.
Implementing the SDK in your mobile application requires either Android or iOS platform
application programming skills. Android API 19 or iOS 8 and XCode 8 are required.
Credentials/API Keys
For implementation you need API keys to create the JSON Web Token (JWT). For
instructions to register for your Bintray user name and API keys, contact CyberSource
Customer Support.
You will receive an email invitation from [email protected] to join JFrog Bintray. When
you receive the email, click to join the organization and complete your registration.
To create your registration user name, include your merchant name and Cybersource in
the following format:
When you are fully registered, @cardinalcommerce is added to the end of your user
name. The final format of your user name will be:
Once you complete your registration, you will be able to access your API keys.
repositories {
...
maven {
url "https://cardinalcommerce.bintray.com/android"
credentials {
username ''//Bintray username
password ''//Bintray user API Key
}
}
}
dependencies {
...
//Cardinal Mobile SDK
implementation
'org.jfrog.cardinalcommerce.gradle:cardinalmobilesdk:2.1.4-1'
// Required libraries
implementation group: 'com.nimbusds', name: 'nimbus-jose-jwt',
version: '7.0.1'
implementation group: 'org.bouncycastle', name: 'bcprov-jdk15on',
version: '1.61'
}
Example 6 Cardinal.configure
cardinalConfigurationParameters.setEnvironment(CardinalEnvironment.STAG
ING);
cardinalConfigurationParameters.setTimeout(8000);
JSONArray rType = new JSONArray();
rType.put(CardinalRenderType.OTP);
rType.put(CardinalRenderType.SINGLE_SELECT);
rType.put(CardinalRenderType.MULTI_SELECT);
rType.put(CardinalRenderType.OOB);
rType.put(CardinalRenderType.HTML);
cardinalConfigurationParameters.setRenderType(rType);
cardinalConfigurationParameters.setUiType(CardinalUiType.BOTH);
cardinalConfigurationParameters.setUICustomization(yourUICustomizationO
bject);
cardinal.configure(this,cardinalConfigurationParameters);
}
cardinal = Cardinal.getInstance();
String serverJwt = "INSERT_YOUR_JWT_HERE";
cardinal.init(serverJwt ,
new CardinalInitService() {
/**
* You may have your Submit button disabled on page load. Once you are
* set up for CCA, you may then enable it. This will prevent users
* from submitting their order before CCA is ready.
*/
@Override
public void onSetupCompleted(String consumerSessionId) {
}
/**
* If there was an error with set up, Cardinal will call this function
* with validate response and empty serverJWT
* @param validateResponse
* @param serverJwt will be an empty
*/
@Override
public void onValidated(ValidateResponse validateResponse, String
serverJwt) {
}
});
See the "Implementing SDK Payer Authentication" section for next steps.
curl -L -u<USER_NAME>
:<API_KEY> https://cardinalcommerce.bintray.com/ios/<VERSION>-
<BUILD_NUMBER>/cardinalmobilesdk.zip
-o <LOCAL_FILE_NAME.EXT>
#Example:
curl -L -uUserName:ApiKey "https://cardinalcommerce.bintray.com/ios/
2.1.4-2/cardinalmobilesdk.zip" -o cardinalmobile2.1.4-2.zip
In your XCode project, drag the CardinalMobile.framework file into the Frameworks group
in your Xcode Project. (Create the group if it doesn't already exist.) In the import dialog
box, check the box to Copy items into the destinations group folder (or Destination: Copy
items if needed). The iOS SDK files are now available for linking in your project.
Step 1 Open Xcode and click on your project in the source list to the left of the main editor area.
Step 2 Select your application under the Targets section and go to the General tab.
Step 3 Expand the Embedded Binaries section and click the small plus (+) at the bottom of the
list.
Objective-C Example
Example 9 CardinalSession new (iOS SDK - Objective-C)
#import <CardinalMobile/CardinalMobile.h>
CardinalSession *session;
CardinalSessionRenderTypeArray *renderType =
[[CardinalSessionRenderTypeArray alloc] initWithObjects:
CardinalSessionRenderTypeOTP,
CardinalSessionRenderTypeHTML,
nil];
config.renderType = renderType;
config.enableQuickAuth = false;
[session configure:config];
}
Swift Example
Example 10 CardinalSession new (iOS SDK - Swift)
import CardinalMobile
config.renderType = [CardinalSessionRenderTypeOTP,
CardinalSessionRenderTypeHTML]
config.enableQuickAuth = true
session.configure(config)
}
Objective-C Example
Example 11 Cardinal session setup (iOS SDK - Objective-C)
[session setupWithJWT:jwtString
didComplete:^(NSString * _Nonnull consumerSessionId){
//
// You may have your Submit button disabled on page load. Once you are
// setup for CCA, you may then enable it. This will prevent users
// from submitting their order before CCA is ready.
//
} didValidate:^(CardinalResponse * _Nonnull validateResponse) {
// Handle failed setup
// If there was an error with setup, cardinal will call this
// function with validate response and empty serverJWT
}];
Swift Example
Example 12 Cardinal session setup (iOS SDK - Swift)
The Check Enrollment service verifies that the card is enrolled in a card authentication
program. When you request the ICS Enrollment Check service for the SDK integration, the
payerAuthEnrollService_referenceID request field is required. The following fields are
also required:
billTo_city
billTo_country
billTo_email
billTo_firstName
billTo_lastName
billTo_postalCode
billTo_state
billTo_street1
card_accountNumber
card_cardType
card_expirationMonth
card_expirationYear
merchantID
merchantReference Code
payerAuthEnrollService_mobilePhone
payerAuthEnrollService_referenceID
payerAuthEnrollService_run
payerAuthEnrollService_transactionMode
purchaseTotals_currency
purchaseTotals_grandTotalAmount
You can send additional request data in order to reduce your issuer step-up
authentication rates. It is best to send all available fields.
Note
For further details on required and optional fields, see "Request Fields," page 151.
You can use the enrollment check and card authorization services in the same request or
in separate requests:
Same request: CyberSource attempts to authorize the card if your customer is not
enrolled in a payer authentication program. In this case, the field values that are
required in order to prove that you attempted to check enrollment are passed
automatically to the authorization service. If authentication is required, processing
automatically stops.
Separate requests: you must manually include the enrollment check result values
(Enrollment Check Reply Fields) in the authorization service request (Card
Authorization Request Fields).
Enrolled Cards
You receive reason code 475 if the customer’s card is enrolled in a payer
authentication program. When you receive this reply, you can proceed to validate
authentication.
When the account number is not enrolled in a payer authentication program. The
other services in your request are processed normally.
When payer authentication is not supported by the card type.
When you receive this reply, you can proceed to card authorization.
These values identify whether it is a 2.x transaction and that a challenge is required. If the
3D Secure version is 1.0, then the SDK is no longer applicable and you must open up a
WebView.
Once you validate these fields, you call Cardinal.cca_continue (Android SDK) or Cardinal
session continue (iOS SDK) in order for the SDK to perform the challenge between the
customer and the issuing bank.
/**
* Cca continue.
*
* @param transactionId the transaction id
* @param payload the payload
* @param currentActivity the current activity
* @throws InvalidInputException the invalid input exception
* @throws JSONException the json exception
* @throws UnsupportedEncodingException the unsupported encoding
exception
*/
try {
cardinal.cca_continue("[TRANSACTION ID ]", "[PAYLOAD]", this, new
CardinalValidateReceiver() {
/**
* This method is triggered when the transaction
* has been terminated. This is how SDK hands back
* control to the merchant's application. This method will
* include data on how the transaction attempt ended and
* you should have your logic for reviewing the results of
* the transaction and making decisions regarding next steps.
* JWT will be empty if validate was not successful.
*
* @param validateResponse
* @param serverJWT
*/
@Override
public void onValidated(Context currentContext,
ValidateResponse validateResponse, String serverJWT) {
}
});
}
catch (Exception e) {
// Handle exception
}
Objective-C Examples
Example 14 Cardinal session continue (iOS SDK - Objective-C)
}
@end
@implementation YourViewController
/**
* This method is triggered when the transaction has
* been terminated.This is how SDK hands back
* control to the merchant's application. This method will
* include data on how the transaction attempt ended and
* you should have your logic for reviewing the results of
* the transaction and making decisions regarding next steps.
* JWT will be empty if validate was not successful
*
* @param session
* @param validateResponse
* @param serverJWT
*/
-(void)cardinalSession:(CardinalSession *)session
stepUpDidValidateWithResponse:(CardinalResponse *)validateResponse
serverJWT:(NSString *)serverJWT{
@end
If Continue is called in the same class, call the method shown in Example 15 to start
StepUpFlow.
Swift Examples
Example 16 Cardinal session continue (iOS SDK - Swift)
class YourViewController:CardinalValidationDelegate {
/**
* This method is triggered when the transaction has been
* terminated.This is how SDK hands back
* control to the merchant's application. This method will
* include data on how the transaction attempt ended and
* you should have your logic for reviewing the results of
* the transaction and making decisions regarding next steps.
* JWT will be empty if validate was not successful
*
* @param session
* @param validateResponse
* @param serverJWT
*/
func cardinalSession(cardinalSession session: CardinalSession!,
stepUpValidated validateResponse: CardinalResponse!, serverJWT: String!)
{
If Continue is called in the same class, call the method shown in Example 17 to start
StepUpFlow.
The SDK displays the authentication window if necessary and the customer enters their
authentication information.
{
"iss": "5a4504be6fe3d1127cdfd94e",
"iat": 1555075930,
"exp": 1555083130,
"jti": "cc532159-636d-4fa8-931d-d4b0f4c83b99",
"ConsumerSessionId": "0_9a16b7f5-8b94-480d-bf92-09cd302c9230",
"aud": "d0cf3392-62c5-4107-bf6a-8fc3bb49922b",
"Payload": {
"Payment": {
"Type": "CCA",
"ProcessorTransactionId": "YGSaOBivyG0dzCFs2Zv0"
},
"ErrorNumber": 0,
"ErrorDescription": "Success"
}
}
Send the credit card information including the PAN, currency, and expiration date
(month and year).
CyberSource recommends that you request both payer authentication and card
authorization services at the same time. When you do so, CyberSource automatically
sends the correct information to your payment processor; CyberSource converts the
values of these fields to the proper format required by your payment processor:
If you request the services separately, you must manually include the validation result
values (Validation Check Reply Fields) in the authorization service request (Card
Authorization Request Fields). To receive liability shift protection, you must ensure that
you pass all pertinent data for the card type and processor in your request. Failure to do
so may invalidate your liability shift for that transaction. Include the electronic commerce
indicator (ECI), the transaction ID (XID), the 3D Secure version, the directory server
transaction ID, and the following card-specific information in your authorization request:
For Visa, American Express, JCB, Diners Club, and Discover include the CAVV
(cardholder authentication verification value).
For Mastercard, include the UCAF (universal cardholder authentication field) and the
collection indicator.
Proceed with the order according to the validation response that you receive. The replies
are similar for all card types:
Success:
You receive the reason code 100, and other service requests, including authorization,
are processed normally.
Failure:
You receive reason code 476 indicating that the authentication failed, so the other
services in your request are not processed.
Error:
If you receive an error from the payment card company, process the order according
to your business rules. If the error occurs frequently, report it to Customer Support. If
you receive a CyberSource system error, determine the cause, and proceed with card
authorization only if appropriate.
To verify that the enrollment and validation checks are for the same transaction, ensure
that the XID in the enrollment check and validation replies are identical.
Authentication Failed
Your card issuer cannot authenticate this card. Please select another card
or form of payment to complete your purchase.
Benefits
3D Secure 2.x provides the following benefits:
Easier to upgrade to 3D Secure 2.2 when it becomes available. Version 2.2 includes
support for exemptions for PSD2 which might allow frictionless authentication,
including acquirer/issuer transactional risk assessment; white listing; low value, one
leg out, and merchant-initiated transactions. These exemptions will be defined as they
become available.
PSD2 Impact
Upgrading to 3D Secure 2.x is necessary if you are affected by PSD2.
PSD2 became applicable in January 2018 with additional security measures outlined in
the Regulatory Technical Standards (RTS) due to become applicable in September 2019.
PSD2 will require stronger identity checks for online payments, particularly for high-value
transactions.
PSD2 means changes for all companies in Europe that deal with payments. It has
implications for merchants including:
Two-factor authentication will be required for all electronic payments, although there
are exemptions to allow a frictionless flow.
If you are impacted by PSD2 changes, it is very important that you upgrade to 3D Secure
2.x.
Mandates
PSD2 includes mandates around strong customer authentication (SCA) and exemptions
and challenges. See the following page for more information on the mandates:
https://demos.cardinalcommerce.com/3DS_Info/Country_Mandates/index.html
Timelines
See the following page for PSD2 compliance timelines:
https://demos.cardinalcommerce.com/3DS_Info/Cardinal_Timelines/index.html
Recommended Integration
Two types of integration are available for 3D Secure 2.x:
Hybrid integration
Standard integration
If you are currently using Payer Authentication services in your existing business
processes and need to upgrade to 3D Secure 2.x, CyberSource recommends using the
Hybrid integration.
The Hybrid integration most closely resembles the current process in which you request
the Enrollment Check service to verify that the customer is enrolled in one of the card
authentication programs and receive a response. With 3D Secure 2.x, the response
includes a new value, the processor transaction ID.
For enrolled cards, you include the ACS URL, payload, and processor transaction ID in
the Cardinal.continue function to proceed with the authentication session.
You then request the validation service, sending the processor transaction ID with your
request, and receive a response with the e-commerce indicator and CAVV or AAV.
If you are using tokenization, you must use the Hybrid integration method.
Important
The Standard integration uses JavaScript to perform more of the steps in the Payer
Authentication process.
The JavaScript collects the device data, interacts with the issuer, and verifies with the
bank that the card is enrolled in a 3D Secure card authentication program by using a
server-to-server call. If the issuing bank requires authentication, the JavaScript displays
the authentication window.
The bank validates the customer credentials and returns a JWT that you validate on the
server side. You must also extract the processor transaction ID value from the JWT.
At this point, you request the Enrollment Check service, sending the processor transaction
ID with your request. In the reply, you receive the e-commerce indicator and CAVV or AAV.
For more information about the Standard integration, see Chapter 3, "Implementing
Standard Payer Authentication," on page 33.
Configuration Requirements
For implementation you need API keys to create the JWT (JSON Web Token). For further
assistance, contact CyberSource Customer Support.
billTo_customerAccountChangeDate
billTo_customerAccountCreateDate
billTo_customerAccountPasswordChangeDate
billTo_passportCountry
billTo_passportNumber
item_#_productDescription
payerAuthEnrollService_accountPurchases
payerAuthEnrollService_addCardAttempts
payerAuthEnrollService_alternateAuthentication Data
payerAuthEnrollService_alternateAuthentication Date
payerAuthEnrollService_alternateAuthentication Method
payerAuthEnrollService_authentication TransactionID
payerAuthEnrollService_challengeCode
payerAuthEnrollService_customerCCAlias
payerAuthEnrollService_defaultCard
payerAuthEnrollService_fraudActivity
payerAuthEnrollService_giftCardAmount
payerAuthEnrollService_giftCardCount
payerAuthEnrollService_giftCardCurrency
payerAuthEnrollService_httpUserAccept
payerAuthEnrollService_installmentTotalCount
payerAuthEnrollService_marketingOptIn
payerAuthEnrollService_marketingSource
payerAuthEnrollService_merchantNewCustomer
payerAuthEnrollService_merchantURL
payerAuthEnrollService_messageCategory
payerAuthEnrollService_npaCode
payerAuthEnrollService_paymentAccountDate
payerAuthEnrollService_preorder
payerAuthEnrollService_preorderDate
payerAuthEnrollService_recurringEndDate
payerAuthEnrollService_recurringFrequency
payerAuthEnrollService_recurringOriginalPurchaseDate
payerAuthEnrollService_reorder
payerAuthEnrollService_shipAddressUsageDate
payerAuthEnrollService_transactionCountDay
payerAuthEnrollService_transactionCountYear
payerAuthEnrollService_transactionMode
shipTo_destinationCode
You must also send the payerAuthEnrollService_referenceID request field with your
Check Enrollment service request.
When you have verified that a customer’s card is enrolled in a card authentication
program, you must take the URL of the card-issuing bank’s Access Control Server (ACS
URL), the payload, and the payerAuthEnrollReply_authenticationTransactionID reply
field and include them in the Cardinal.continue function in order to proceed with the
authentication session.
Payments.validated launches and returns the authentication results and response JWT
along with the processor transaction ID.
For enrolled cards, the next step is to call the payerAuthValidateService validation
service. When you make the validation request, you send the transaction details as you
currently do but also include the processor transaction ID value in the
payerAuthEnrollService_authenticationTransactionID request field. The reply that you
receive contains the validation result.
3D Secure 2.x has the following differences from the 3D Secure 1.0 Payer Authentication
integration:
The additional fields for 3D Secure 2.x do not appear in the Payer Authentication
reports. These will be added in a future release.
The processor transaction ID value is new; this field is passed to link the check
enrollment and validate authentication messages.
To implement, you add the JavaScript tag to your checkout page, configure the
Cardinal.configure() component, and call Cardinal.setup() to trigger and pass your JWT to
the JavaScript for each transaction.
You can use any third-party JWT library to generate your JWT. For more information, see
https://jwt.io.
You should generate a new JWT for each new transaction. You pass the JWT via the
Cardinal.setup (Init) call.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiMDc5ZTU5OC0zNWJiLTRiZW
MtYmNmOC1lYWJmNTZmZDg0YzYiLCJpYXQiOjE1Mjk1OTU0NzIsImV4cCI6MTUyOTYwMjY3M
iwiaXNzIjoiZGV2Y2VudGVybWVyY2hhbnQiLCJPcmdVbml0SWQiOiI1ODJiZTlkZWRhNTI5
MzJhOTQ2YzQ1YzQiLCJSZWZlcmVuY2VJZCI6IkNydWlzZVRlc3Rlci0zZmI4NWZiIiwiUGF
5bG9hZCI6eyJPcmRlckRldGFpbHMiOnsiT3JkZXJOdW1iZXIiOiJDcnVpc2VUZXN0ZXItM2
Zi ODVmYiJ9fSwiT2JqZWN0aWZ5UGF5bG9hZCI6dHJ1ZX0.JW00jFi1ppIMI1Cwd1_
J1v1gGwN5V82H6BxtligdzF0
{
"jti": "b079e598-35bb-4bec-bcf8-eabf56fd84c6",
"iat": 1529595472,
"exp": 1529602672,
"iss": "devcentermerchant",
"OrgUnitId": "582be9deda52932a946c45c4",
"ReferenceId": "CruiseTester-3fb85fb",
"Payload": {
"OrderDetails": {
"OrderNumber": "CruiseTester-3fb85fb",
{
{,
"ObjectifyPayload": true
}
}
Songbird.js Calls
Both the Hybrid and Standard integration use the following components except where
noted:
Cardinal.configure allows you to view additional logging during testing (when it is set
to verbose). You can also configure whether your bank session opens as an inline or
modal window.
Use Cardinal.setup (Init) to pass your JWT to the JavaScript. When the JavaScript
receives the Init, it verifies your identify as the merchant and begins device collection.
BIN Detection allows you to pass the BIN at minimum and the full card number if
possible. See "BIN Detection" for further details.
Cardinal.start (Standard integration only) is the JavaScript function that passes the
transaction-level details such as the PAN, currency, and expiration date (month and
year).
Cardinal.continue (Hybrid integration only) is the JavaScript function that allows the
bank redirect to occur.
BIN Detection
BIN detection is a required step for the Standard or Hybrid integration. Send the BIN
before you send the transaction-level details. You are sending the BIN before
Cardinal.start for the Standard integration and before you request the Check Enrollment
service.
BIN detection allows the BIN (full card number if available) to be gathered and shared with
Cardinal before the customer initiates the transaction. Cardinal determines if the BIN is
eligible for 3D Secure 1.0 or 3D Secure 2.x, and initiates proper protocol routing.
If the BIN is eligible for 3D Secure 2.x, it gathers the proper Method URL JavaScript
required by the issuer for device fingerprint collection and risk assessment.
Handlers/Event Listeners
Both the Hybrid and Standard integration use the following components except where
noted:
Payments.setupComplete notifies you when the Init has completed and confirms that
the device data has been collected. You must subscribe to this event.
This event also provides a Session ID which you can use as the
payerAuthEnrollService_referenceID request field for the Check Enrollment
service. (This field is required for the Hybrid integration.)
Cardinal.start (Standard integration only) is the JavaScript function that passes the
transaction-level details such as the PAN, currency, and expiration date (month and
year).
Cardinal.continue (Hybrid integration only) is the JavaScript function that allows the
bank redirect to occur.
Testing
See "Test Cases for 3D Secure 2.x," when you are ready to test your new implementation.
You can change to the test environment by changing the URL in your JavaScript code.
Migration FAQ
Q: Do I need to send in a new JWT for each transaction?
A: Yes, even though the JWT does not expire for two hours, you should send a new JWT
with each new transaction.
A: No, the Init collects the needed device information and this must happen before you
request the Check Enrollment service and send the transaction-level details.
A: Decode your JWT, verify that your credentials are correct, that the timestamp is in Unix
time, and that you have included the required information. For further assistance, contact
CyberSource Customer Support.
You can create a reference ID in the original JWT and then pass that same value for
the payerAuthEnrollService_referenceID request field for the Check Enrollment
service.
Payments.setupComplete returns a session ID and you can use that value for the
payerAuthEnrollService_referenceID request field for the Check Enrollment
service.
Q: When will the Payer Authentication reports include the new fields for 3D Secure 2.x?
Q: Why should I implement 3D Secure 2.1 when version 2.2 will be available soon?
A: The 3D Secure 2.2 specification has not been finalized and this version may not be
ready by the PSD2 deadline of September 2019. 3D Secure 2.1 meets PSD2
requirements, with version 2.2 adding the possibility of using exemptions to reduce SCA.
Q: What is the difference between the Hybrid integration and the Standard integration?
A: The main difference is that the Standard integration does not include a Payer
Authentication validation service request. For more information, refer to Chapter 2,
"Implementing Hybrid Payer Authentication," on page 25 and Chapter 5, "Upgrading Your
Payer Authentication Implementation," on page 60.
A: Use the test cases ("Test Cases for 3D Secure 2.x," page 119) to test your preliminary
code and make the appropriate changes. You can change to the test environment by
changing the URL in your JavaScript code.
Q: How does 3D Secure 2.x authentication improve the experience for a customer who
uses a mobile or tablet device?
A: 3D Secure 2.x is agnostic to the device and you have control over the formatting of the
authentication form. 3D Secure 2.x also supports newer, more secure authentication
delivery tools, such as a one-time password (OTP) sent to a customer’s mobile device or
email.
After you have completed the necessary changes to your Web and API integration, verify
that all components are working correctly by performing all the tests for the cards that you
support. Each test contains the specific input data and the most important results fields
that you receive in the API reply.
Testing Process
Use the card number specified in the test with the card’s expiration date set to the month
of December and the current year plus three. For example, for 2019, use 2022. You also
need the minimum required fields for an order.
Enrollment Check
For some of the enrolled cards, an authentication window appears after the enrollment
check completes.
To view the authentication window, you must enable your browser to display
popup windows.
Note The test password is always 1234.
If the user submits the password for the enrolled card, you receive the URL of the
Access Control Server (ACS) where the customer can be authenticated.
If the user clicks the Exit link and clicks OK in the verification window, authentication
does not occur.
Authentication Validation
Table 10 lists only the reply fields used in the test cases.
Expected Results
These flowcharts summarize the payer authentication process based on the enrollment
status of the card and the subsequent customer experience with the authentication path.
Use this information with the test cases to determine how to process orders.
Figure 1 Authentication Path for Visa, American Express, JCB, Diners Club, and Discover
Visa Secure
You can use Payer Authentication services with 16- and 19-digit Visa cards if they are
supported by your processor.
Test Case 2: Visa Secure Card Enrolled: Successful Authentication but Invalid PARes
Test Case 6: Visa Secure Card Enrolled: Unsuccessful Authentication (Customer Exited)
Test Case 16: Mastercard Identity Check Card Enrolled: Successful Authentication
Test Case 17: Mastercard Identity Check Card Enrolled: Successful Authentication but Invalid
PARes
Test Case 18: Mastercard Identity Check Card Enrolled: Attempts Processing
Test Case 19: Mastercard Identity Check Card Enrolled: Incomplete Authentication
Test Case 20: Mastercard Identity Check Card Enrolled: Unsuccessful Authentication
Test Case 21: Mastercard Identity Check Card Enrolled: Unsuccessful Authentication
(Customer Exited)
Test Case 22: Mastercard Identity Check Card Enrolled: Unavailable Authentication
Test Case 23: Mastercard Identity Check Card Enrolled: Authentication Error
Maestro
Test Case 30: Maestro Card Enrolled: Successful Authentication
Test Case 31: Maestro Card Enrolled: Successful Authentication but Invalid PARes
Test Case 38: American Express SafeKey Card Enrolled: Successful Authentication
Test Case 39: American Express SafeKey Card Enrolled: Successful Authentication but Invalid
PARes
Test Case 40: American Express SafeKey Card Enrolled: Attempts Processing
Test Case 41: American Express SafeKey Card Enrolled: Incomplete Authentication
Test Case 42: American Express SafeKey Card Enrolled: Unsuccessful Authentication
Test Case 43: American Express SafeKey Card Enrolled: Unavailable Authentication
Test Case 44: American Express SafeKey Card Enrolled: Authentication Error
Payer Authentication Using the Simple Order API | October 2019 100
Chapter 6 Testing Payer Authentication Services
JCB J/Secure
Table 14 Possible Values for JCB J/Secure Reply Fields
Payer Authentication Using the Simple Order API | October 2019 101
Chapter 6 Testing Payer Authentication Services
Test Case 49: JCB J/Secure Card Enrolled: Successful Authentication but Invalid PARes
(Signature Failure)
Payer Authentication Using the Simple Order API | October 2019 102
Chapter 6 Testing Payer Authentication Services
Test Case 51: JCB J/Secure Card Enrolled: Incomplete Authentication (Unavailable)
Payer Authentication Using the Simple Order API | October 2019 103
Chapter 6 Testing Payer Authentication Services
Payer Authentication Using the Simple Order API | October 2019 104
Chapter 6 Testing Payer Authentication Services
Test Case 54: JCB J/Secure Card Enrolled: Authentication Error Processing PARes
Payer Authentication Using the Simple Order API | October 2019 105
Chapter 6 Testing Payer Authentication Services
Test Case 57: JCB J/Secure Enrollment Check: Lookup Error Processing Message Request
Payer Authentication Using the Simple Order API | October 2019 106
Chapter 6 Testing Payer Authentication Services
Payer Authentication Using the Simple Order API | October 2019 107
Chapter 6 Testing Payer Authentication Services
Test Case 58: Diners Club ProtectBuy Card Enrolled: Successful Authentication
Test Case 59: Diners Club ProtectBuy Card Enrolled: Successful Authentication but Invalid PARes
Payer Authentication Using the Simple Order API | October 2019 108
Chapter 6 Testing Payer Authentication Services
Test Case 60: Diners Club ProtectBuy Card Enrolled: Attempts Processing
Test Case 61: Diners Club ProtectBuy Card Enrolled: Incomplete Authentication
Payer Authentication Using the Simple Order API | October 2019 109
Chapter 6 Testing Payer Authentication Services
Test Case 62: Diners Club ProtectBuy Card Enrolled: Unsuccessful Authentication
Test Case 63: Diners Club ProtectBuy Card Enrolled: Unavailable Authentication
Payer Authentication Using the Simple Order API | October 2019 110
Chapter 6 Testing Payer Authentication Services
Test Case 64: Diners Club ProtectBuy Card Enrolled: Authentication Error
Payer Authentication Using the Simple Order API | October 2019 111
Chapter 6 Testing Payer Authentication Services
Payer Authentication Using the Simple Order API | October 2019 112
Chapter 6 Testing Payer Authentication Services
Discover ProtectBuy
Table 16 Possible Values for Discover ProtectBuy Reply Fields
Payer Authentication Using the Simple Order API | October 2019 113
Chapter 6 Testing Payer Authentication Services
Test Case 69: Discover ProtectBuy Card Enrolled: Successful Authentication but Invalid PARes
Payer Authentication Using the Simple Order API | October 2019 114
Chapter 6 Testing Payer Authentication Services
Payer Authentication Using the Simple Order API | October 2019 115
Chapter 6 Testing Payer Authentication Services
Payer Authentication Using the Simple Order API | October 2019 116
Chapter 6 Testing Payer Authentication Services
Payer Authentication Using the Simple Order API | October 2019 117
Chapter 6 Testing Payer Authentication Services
Payer Authentication Using the Simple Order API | October 2019 118
Chapter 6 Testing Payer Authentication Services
Use the card number specified in the test with the card’s expiration date set to the month
of January and the current year plus three. For example, for 2019, use 2022. You also
need the minimum required fields for an order.
XID values are included in 3D Secure 2.x test cases for legacy reasons.
The 3D Secure version and directory server transaction ID fields are returned
Note for the Check Enrollment and Validate Authentication services but are not
included in the 3D Secure 2.x test cases.
Visa Secure
Test Case 2.1: Visa Secure Card Enrolled: Successful Frictionless Authentication (Hybrid and
Standard)
Payer Authentication Using the Simple Order API | October 2019 119
Chapter 6 Testing Payer Authentication Services
Test Case 2.2: Visa Secure Card Enrolled: Unsuccessful Frictionless Authentication (Hybrid and
Standard)
Test Case 2.3: Visa Secure Card Enrolled: Attempts Processing Frictionless Authentication (Hybrid
and Standard)
Payer Authentication Using the Simple Order API | October 2019 120
Chapter 6 Testing Payer Authentication Services
Test Case 2.4: Visa Secure Card Enrolled: Unavailable Frictionless Authentication (Hybrid and
Standard)
Test Case 2.5: Visa Secure Card Enrolled: Rejected Frictionless Authentication (Hybrid and
Standard)
Test Case 2.6: Visa Secure Card Enrolled: Authentication not Available on Lookup (Hybrid and
Standard)
Payer Authentication Using the Simple Order API | October 2019 121
Chapter 6 Testing Payer Authentication Services
Test Case 2.7: Visa Secure Enrollment Check Error (Hybrid and Standard)
Test Case 2.8: Visa Secure Enrollment Check: Time-Out (Hybrid only)
Card Number 4000000000001075
Results Check Enrollment Validate Authentication
Summary Reason code 100 NA
ics_pa_enroll service was successful.
Details PARes status U
E-commerce indicator internet or vbv_failure
ECI 07
Action After 10-12 seconds, proceed with the authorization request. No liability shift.
Test Case 2.9: Visa Secure Bypassed Authentication (Hybrid and Standard)
Card Number 4000000000001083
Results Check Enrollment Validate Authentication
Summary Reason code 100 NA
ics_pa_enroll service was successful.
Details VERes enrolled B
E-commerce indicator internet
Action Submit your authorization request. No liability shift.
Payer Authentication Using the Simple Order API | October 2019 122
Chapter 6 Testing Payer Authentication Services
Test Case 2.10a: Visa Secure Card Enrolled: Successful Step Up Authentication (Hybrid)
Test Case 2.10b: Visa Secure Card Enrolled: Successful Step Up Authentication (Standard)
Payer Authentication Using the Simple Order API | October 2019 123
Chapter 6 Testing Payer Authentication Services
Test Case 2.11a: Visa Secure Card Enrolled: Unsuccessful Step Up Authentication (Hybrid)
Test Case 2.11b: Visa Secure Card Enrolled: Unsuccessful Step Up Authentication (Standard)
Test Case 2.12a: Visa Secure Card Enrolled: Unavailable Step Up Authentication (Hybrid)
Payer Authentication Using the Simple Order API | October 2019 124
Chapter 6 Testing Payer Authentication Services
Test Case 2.12b: Visa Secure Card Enrolled: Unavailable Step Up Authentication (Standard)
Payer Authentication Using the Simple Order API | October 2019 125
Chapter 6 Testing Payer Authentication Services
Test Case 2.13: Mastercard Identity Check Card Enrolled: Successful Frictionless Authentication
(Hybrid and Standard)
Test Case 2.14: Mastercard Identity Check Card Enrolled: Unsuccessful Frictionless
Authentication (Hybrid and Standard)
Payer Authentication Using the Simple Order API | October 2019 126
Chapter 6 Testing Payer Authentication Services
Test Case 2.15: Mastercard Identity Check Card Enrolled: Attempts Processing Frictionless
Authentication (Hybrid and Standard)
Test Case 2.16: Mastercard Identity Check Card Enrolled: Unavailable Frictionless Authentication
(Hybrid and Standard)
Payer Authentication Using the Simple Order API | October 2019 127
Chapter 6 Testing Payer Authentication Services
Test Case 2.17: Mastercard Identity Check Card Enrolled: Rejected Frictionless Authentication
(Hybrid and Standard)
Test Case 2.18: Mastercard Identity Check Card Enrolled: Authentication not Available on Lookup
(Hybrid and Standard)
Payer Authentication Using the Simple Order API | October 2019 128
Chapter 6 Testing Payer Authentication Services
Test Case 2.19: Mastercard Identity Check Enrollment Check Error (Hybrid and Standard)
Test Case 2.20: Mastercard Identity Check Enrollment Check: Time-Out (Hybrid only)
Card Number 5200000000001070
Results Check Enrollment Validate Authentication
Summary Reason code 100 NA
ics_pa_enroll service was successful.
Details PARes status U
E-commerce indicator internet
Collection indicator 0
Action After 10-12 seconds, proceed with the authorization request. No liability shift.
Payer Authentication Using the Simple Order API | October 2019 129
Chapter 6 Testing Payer Authentication Services
Test Case 2.21: Mastercard Identity Check Bypassed Authentication (Hybrid and Standard)
Card Number 5200000000001088
Results Check Enrollment Validate Authentication
Summary Reason code 100 NA
ics_pa_enroll service was successful.
Details VERes enrolled B
E-commerce indicator internet
Collection indicator 0
Action Submit your authorization request. No liability shift.
Test Case 2.22a: Mastercard Identity Check Card Enrolled: Successful Step Up Authentication
(Hybrid)
Payer Authentication Using the Simple Order API | October 2019 130
Chapter 6 Testing Payer Authentication Services
Test Case 2.22b: Mastercard Identity Check Card Enrolled: Successful Step Up Authentication
(Standard)
Test Case 2.23a: Mastercard Identity Check Card Enrolled: Unsuccessful Step Up Authentication
(Hybrid)
Payer Authentication Using the Simple Order API | October 2019 131
Chapter 6 Testing Payer Authentication Services
Test Case 2.23b: Mastercard Identity Check Card Enrolled: Unsuccessful Step Up Authentication
(Standard)
Test Case 2.24a: Mastercard Identity Check Card Enrolled: Unavailable Step Up Authentication
(Hybrid)
Payer Authentication Using the Simple Order API | October 2019 132
Chapter 6 Testing Payer Authentication Services
Test Case 2.24b: Mastercard Identity Check Card Enrolled: Unavailable Step Up Authentication
(Standard)
Payer Authentication Using the Simple Order API | October 2019 133
Chapter 6 Testing Payer Authentication Services
Test Case 2.26: American Express SafeKey Card Enrolled: Unsuccessful Frictionless
Authentication (Hybrid and Standard)
Payer Authentication Using the Simple Order API | October 2019 134
Chapter 6 Testing Payer Authentication Services
Test Case 2.27: American Express SafeKey Card Enrolled: Attempts Processing
Frictionless Authentication (Hybrid and Standard)
Test Case 2.28: American Express SafeKey Card Enrolled: Unavailable Frictionless Authentication
(Hybrid and Standard)
Payer Authentication Using the Simple Order API | October 2019 135
Chapter 6 Testing Payer Authentication Services
Test Case 2.29: American Express SafeKey Card Enrolled: Rejected Frictionless Authentication
(Hybrid and Standard)
Test Case 2.30: American Express SafeKey Card Enrolled: Authentication not Available on Lookup
(Hybrid and Standard)
Payer Authentication Using the Simple Order API | October 2019 136
Chapter 6 Testing Payer Authentication Services
Test Case 2.31: American Express SafeKey Enrollment Check Error (Hybrid and Standard)
Test Case 2.32: American Express SafeKey Enrollment Check: Time-Out (Hybrid only)
Card Number 340000000001072
Results Check Enrollment Validate Authentication
Summary Reason code 100 NA
ics_pa_enroll service was successful.
Details VERes enrolled U
E-commerce indicator internet
ECI 07
Action After 10-12 seconds, proceed with the authorization request. No liability shift.
Payer Authentication Using the Simple Order API | October 2019 137
Chapter 6 Testing Payer Authentication Services
Test Case 2.33: American Express SafeKey Bypassed Authentication (Hybrid and Standard)
Card Number 340000000001080
Results Check Enrollment Validate Authentication
Summary Reason code 100 NA
ics_pa_enroll service was successful.
Details VERes enrolled B
E-commerce indicator internet
ECI 07
Action Submit your authorization request. No liability shift.
Test Case 2.34a: American Express SafeKey Card Enrolled: Successful Step Up Authentication
(Hybrid)
Payer Authentication Using the Simple Order API | October 2019 138
Chapter 6 Testing Payer Authentication Services
Test Case 2.34b: American Express SafeKey Card Enrolled: Successful Step Up Authentication
(Standard)
Test Case 2.35a: American Express SafeKey Card Enrolled: Unsuccessful Step Up Authentication
(Hybrid)
Payer Authentication Using the Simple Order API | October 2019 139
Chapter 6 Testing Payer Authentication Services
Test Case 2.35b: American Express SafeKey Card Enrolled: Unsuccessful Step Up Authentication
(Standard)
Test Case 2.36a: American Express SafeKey Card Enrolled: Unavailable Step Up Authentication
(Hybrid)
Payer Authentication Using the Simple Order API | October 2019 140
Chapter 6 Testing Payer Authentication Services
Test Case 2.36b: American Express SafeKey Card Enrolled: Unavailable Step Up Authentication
(Standard)
Payer Authentication Using the Simple Order API | October 2019 141
Chapter 6 Testing Payer Authentication Services
Test Case 2.37: Discover/Diner ProtectBuy Card Enrolled: Successful Frictionless Authentication
(Hybrid and Standard)
Payer Authentication Using the Simple Order API | October 2019 142
Chapter 6 Testing Payer Authentication Services
Test Case 2.39: Discover/Diner ProtectBuy Card Enrolled: Attempts Processing Frictionless
Authentication (Hybrid and Standard)
Test Case 2.40: Discover/Diner ProtectBuy Card Enrolled: Unavailable Frictionless Authentication
(Hybrid and Standard)
Payer Authentication Using the Simple Order API | October 2019 143
Chapter 6 Testing Payer Authentication Services
Test Case 2.41: Discover/Diner ProtectBuy Card Enrolled: Rejected Frictionless Authentication
(Hybrid and Standard)
Test Case 2.42: Discover/Diner ProtectBuy Card Enrolled: Authentication not Available on Lookup
(Hybrid and Standard)
Test Case 2.43: Discover/Diner ProtectBuy Enrollment Check Error (Hybrid and Standard)
Payer Authentication Using the Simple Order API | October 2019 144
Chapter 6 Testing Payer Authentication Services
Test Case 2.44: Discover/Diner ProtectBuy Enrollment Check: Time-Out (Hybrid only)
Card Number 6011000000001077
Results Check Enrollment Validate Authentication
Summary Reason code 100 NA
ics_pa_enroll service was successful.
Details VERes enrolled U
E-commerce indicator internet
ECI 07
Action After 10-12 seconds, proceed with the authorization request. No liability shift.
Test Case 2.45: Discover/Diner ProtectBuy Bypassed Authentication (Hybrid and Standard)
Card Number 6011000000001085
Results Check Enrollment Validate Authentication
Summary Reason code 100 NA
ics_pa_enroll service was successful.
Details VERes enrolled B
E-commerce indicator internet
ECI 07
Action Submit your authorization request. No liability shift.
Payer Authentication Using the Simple Order API | October 2019 145
Chapter 6 Testing Payer Authentication Services
Test Case 2.46a: Discover/Diner ProtectBuy Card Enrolled: Successful Step Up Authentication
(Hybrid)
Test Case 2.46b: Discover/Diner ProtectBuy Card Enrolled: Successful Step Up Authentication
(Standard)
Payer Authentication Using the Simple Order API | October 2019 146
Chapter 6 Testing Payer Authentication Services
Test Case 2.47a: Discover/Diner ProtectBuy Card Enrolled: Unsuccessful Step Up Authentication
(Hybrid)
Test Case 2.47b: Discover/Diner ProtectBuy Card Enrolled: Unsuccessful Step Up Authentication
(Standard)
Payer Authentication Using the Simple Order API | October 2019 147
Chapter 6 Testing Payer Authentication Services
Test Case 2.48a: Discover/Diner ProtectBuy Card Enrolled: Unavailable Step Up Authentication
(Hybrid)
Test Case 2.48b: Discover/Diner ProtectBuy Card Enrolled: Unavailable Step Up Authentication
(Standard)
Payer Authentication Using the Simple Order API | October 2019 148
APPENDIX
API Fields
A
This appendix describes the Simple Order API fields that you can use to access
CyberSource Payer Authentication services. The API and client toolkits can be
downloaded from the CyberSource web site at the following URL:
http://www.cybersource.com/developers/develop/integration_methods/simple_order_
and_soap_toolkit_api/
The 3D Secure 2.x. fields are in beta release. The field descriptions, values,
and lengths are subject to change.
Note
Formatting Restrictions
Unless otherwise noted, all field names are case sensitive and all fields accept special
characters such as @, #, and %.
The values of the item_#_ fields must not contain carets (^) or colons (:)
because these characters are reserved for use by the CyberSource services.
Note For Atos, the billTo_ fields must not contain colons (:).
The values of all request fields must not contain new lines or carriage returns.
However, they can contain embedded spaces and any other printable
characters. All leading and trailing spaces will be removed.
Payer Authentication Using the Simple Order API | October 2019 149
Appendix A API Fields
http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/
Numbered Elements
The CyberSource XML schema includes several numbered elements. You can include
these complex elements more than once in a request. For example, when a customer
order includes more than one item, you must include multiple <item> elements in your
request. Each item is numbered, starting with 0. The XML schema uses an id attribute in
the item’s opening tag to indicate the number. For example:
<item id="0">
As a name-value pair field name, this tag is represented as item_0. In this portion of the
field name, the underscore before the number does not indicate hierarchy in the XML
schema. The item fields are generically referred to as item_#_<element name> in the
documentation.
Below is an example of the numbered <item> element and the corresponding name-
value pair field names. If you are using the Simple Object Access Protocol (SOAP), the
client contains a corresponding Item class.
Example 21 Numbered XML Schema Element Names and
Name-Value Pair Field Names
Payer Authentication Using the Simple Order API | October 2019 150
Appendix A API Fields
Request Fields
See Credit Card Services Using the Simple Order API (PDF | HTML) and Getting Started
with CyberSource Advanced (PDF | HTML) for more information about using the Simple
Order API to access CyberSource services using either name-value pairs or XML.
The fields in the following table refer to the enroll and validate services only.
Please review Credit Card Services Using the Simple Order API (PDF | HTML)
Note for more information about the fields specific to the authorization.
Payer Authentication Using the Simple Order API | October 2019 151
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 152
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 153
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 154
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 155
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 156
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 157
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 158
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 159
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 160
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 161
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 162
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 163
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 164
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 165
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 166
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 167
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 168
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 169
Appendix A API Fields
shipTo_phoneNumber Phone number for the shipping address. Enroll (O) String (15)
For information on formatting, see billTo_
phoneNumber.
shipTo_postalCode Postal code for the shipping address. The Enroll (O) String (10)
postal code must consist of 5 to 9 digits.
When the shipping country is the U.S., the 9-
digit postal code must follow this format:
[5 digits][dash][4 digits]
Example 12345-6789
When the shipping country is Canada, the 6-
digit postal code must follow this format:
[alpha][numeric][alpha][space]
[numeric][alpha][numeric]
Example A1B 2C3
Required if the shipTo_country field value is
US or CA.
Required for American Express SafeKey (U.S.).
shipTo_shippingMethod Shipping method for the product. Possible Enroll (O) String (10)
values:
lowcost: Lowest-cost service
sameday: Courier or same-day service
oneday: Next-day or overnight service
twoday: Two-day service
threeday: Three-day service
pickup: Store pick-up
other: Other shipping method
none: No shipping method because
product is a service or subscription
Required for American Express SafeKey (U.S.).
shipTo_state State or province of the shipping address. Use Enroll (O) String (2)
the State, Province, and Territory Codes for the
United States and Canada.
Required if shipTo_country value is CA or US.
Required for American Express SafeKey (U.S.).
Payer Authentication Using the Simple Order API | October 2019 170
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 171
Appendix A API Fields
Reply Fields
Table 18 Reply Fields
Payer Authentication Using the Simple Order API | October 2019 172
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 173
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 174
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 175
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 176
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 177
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 178
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 179
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 180
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 181
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 182
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 183
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 184
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 185
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 186
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 187
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 188
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 189
Appendix A API Fields
Payer Authentication Using the Simple Order API | October 2019 190
APPENDIX
Reason Codes
B
The following table lists the reason codes that are returned with the reply. CyberSource
reserves the right to add new reason codes at any time. If your error handler receives a
reason code that it does not recognize, it should use the decision field to determine the
result.
Payer Authentication Using the Simple Order API | October 2019 191
APPENDIX
Request and Reply
Examples
C
This appendix contains examples for the check enrollment service and the validate
authentication service. All examples are in name-value pair format.
These examples contain only the fields essential to the demonstration. Do not
prepare your implementation according to the fields shown in these examples.
Warning They are provided for your information only.
Payer Authentication Using the Simple Order API | October 2019 192
Appendix C Request and Reply Examples
requestID=0340290070000167905080
merchantReferenceCode=23AEE8CB6B62EE2AF07
purchaseTotals_currency=USD
decision=ACCEPT
reasonCode=100
payerAuthEnrollReply_reasonCode=100
payerAuthEnrollReply_authenticationResult=0
payerAuthEnrollReply_authenticationStatusMessage=Success
payerAuthEnrollReply_authenticationTransactionID=Fl8d1UW9VwTyawKTdex0
payerAuthEnrollReply_cavv=Y2FyZGluYWxjb21tZXJjZWF1dGg=
payerAuthEnrollReply_commerceIndicator=vbv
payerAuthEnrollReply_eci=5
payerAuthEnrollReply_eciRaw=05
payerAuthEnrollReply_paresStatus=Y
payerAuthEnrollReply_reasonCode=100
payerAuthEnrollReply_specificationVersion=2.0.1
payerAuthEnrollReply_veresEnrolled=Y
Payer Authentication Using the Simple Order API | October 2019 193
Appendix C Request and Reply Examples
payerAuthEnrollService_run=true
merchantID=patest
merchantReferenceCode=23AEE8CB6B62EE2AF07
item_0_unitPrice=19.99
purchaseTotals_currency=USD
card_expirationMonth=01
card_expirationYear=2020
card_accountNumber=xxxxxxxxxxxxxxxx
card_cardType=001
...
<Other 2.0 optional fields>
referenceID=CybsTester-778d0f67
Payer Authentication Using the Simple Order API | October 2019 194
Appendix C Request and Reply Examples
requestID=0340290070000167905080
merchantReferenceCode=23AEE8CB6B62EE2AF07
purchaseTotals_currency=USD
decision=REJECT
reasonCode=475
payerAuthEnrollReply_reasonCode=475
payerAuthEnrollReply_acsURL=https://www.example.com
payerAuthEnrollReply_authenticationTransactionID=x0Jpbq2uIT7o0tQqwd60
payerAuthEnrollReply_paReq=value in base64:
eJxVUuFygjAMfhXPw9Tkv9g6...
payerAuthEnrollReply_specificationVersion=2.0.1
payerAuthEnrollReply_veresEnrolled=Y
request_
token=AhjzbwSTHCfKtXsaE6elEQJP+BFNcZtIHTiD9au3tjijj5Uar+AuAAAAkAY5
Payer Authentication Using the Simple Order API | October 2019 195
Appendix C Request and Reply Examples
payerAuthValidateService_run=true
merchantID=patest
merchantReferenceCode=23AEE8CB6B62EE2AF07
item_0_unitPrice=19.99
purchaseTotals_currency=USD
card_expirationMonth=01
card_expirationYear=2020
card_accountNumber=xxxxxxxxxxxxxxxx
card_cardType=001
payerAuthValidateService_authenticationTransactionID=
UhGFMeW6IPZbgt9diHK0
referenceID=CybsTester-cc719e84
Payer Authentication Using the Simple Order API | October 2019 196
Appendix C Request and Reply Examples
requestID=0340290070000167905080
merchantReferenceCode=23AEE8CB6B62EE2AF07
purchaseTotals_currency=USD
decision=ACCEPT
reasonCode=100
payerAuthValidateReply_reasonCode=100
payerAuthValidateReply_authenticationResult=0
payerAuthValidateReply_authenticationStatusMessage=Success
payerAuthValidateReply_cavv=Y2FyZGluYWxjb21tZXJjZWF1dGg=
payerAuthValidateReply_commerceIndicator=vbv
payerAuthValidateReply_eci=5
payerAuthValidateReply_eciRaw=05
payerAuthValidateReply_paresStatus=Y
payerAuthValidateReply_reasonCode=100
payerAuthValidateReply_specificationVersion=2.0.1
request_
token=AhjzbwSTHCfKtXsaE6elEQJP+BFNcZtIHTiD9au3tjijj5Uar+AuAAAAkAY5
Payer Authentication Using the Simple Order API | October 2019 197
APPENDIX
Web Site Modification
Reference
D
This appendix contains information about modifying your web site to integrate
CyberSource Payer Authentication services into your checkout process. It also provides
links to payment card company web sites where you can download the appropriate logos.
Order submission button: disable the final “buy” button until the customer completes
all payment and authentication requirements.
Browser back button: account for unexpected customer behavior. Use session checks
throughout the authentication process to prevent authenticating transactions twice.
Avoid confusing messages, such as warnings about expired pages.
Make sure you have downloaded the appropriate logos of the cards that you support
and place these logos next to the card information entry fields on your checkout
pages. For more information about obtaining logos and using them, see "3D Secure
Services Logos," page 199.
Add a message next to the final “buy” button and the card logo to inform your
customers that they may be prompted to provide their authentication password or to
sign up for the authentication program specific to their card. For examples of
messages you can use, see "Informational Message Examples," page 200.
Payer Authentication Using the Simple Order API | October 2019 198
Appendix D Web Site Modification Reference
Payer Authentication Using the Simple Order API | October 2019 199
Appendix D Web Site Modification Reference
The following examples may be used, but consult your specific card authentication
program to make sure you conform to their messaging requirements.
Example 28
Example 29
Your card may be eligible for enrollment or is enrolled in the Visa Secure, Mastercard,
Maestro, American Express SafeKey, JCB J/Secure, Diners Club ProtectBuy, or Discover
ProtectBuy programs. After you submit your order, your card issuer may prompt you for
your password before you complete your purchase.
Payer Authentication Using the Simple Order API | October 2019 200
APPENDIX
Payer Authentication
Transaction Details in the
E
Business Center
This appendix describes how to search the Business Center for details of transactions that
are screened by CyberSource Payer Authentication. Transaction data is stored for 12
months so that you can send it to payment card companies if necessary.
With other services, green means that the service request was successful, red means that
it failed, and black means that the service request was not run. However, you need to
interpret the result of the enrollment check differently:
If the card is enrolled, the application result is shown in red, which indicates that you
need to authenticate the user before you can request card authorization.
If the card is not enrolled, the application result is shown in green because you do not
need to authenticate the user. You can authorize the card immediately.
Enrolled Card
When a card is enrolled, the process consists of two steps: after you check for enrollment,
you need to authenticate the customer.
Enrollment Check
For the enrollment check for an enrolled card, payer authentication data is located in the
Transaction Search Details window in the following sections:
Request Information section: The enrollment check service is shown in red because
the card is enrolled. You receive the corresponding reply information. If the card
authorization service had been requested at the same time, it would not have been
run and would appear in black.
You can obtain additional information about related orders by clicking the links on the
right (Event Search and Details).
Payer Authentication Using the Simple Order API | October 2019 201
Appendix E Payer Authentication Transaction Details in the Business Center
Order Information section: When authentication is required, save the XID for use later.
You do not receive an ECI or AAV_CAVV because the authentication is not complete.
You can use the link to find the details page that shows the associated card validation and
authorization results. On the results page:
The most recent event is the successful authentication. If you click the request ID, the
authentication details page opens. If the event also returned an XID value, the By
Payer Authentication History link is present. If you click it, you return to the results
page.
If the card authorization service had been requested at the same time as payer
authentication, authorization would not have run with the enrollment check but with the
validate authentication request. On the results page:
The most recent event is the combined successful customer authentication and card
authorization. If you click the request ID, the details page opens.
The older event is the enrollment check in red because the card is enrolled.
Payer Authentication Using the Simple Order API | October 2019 202
Appendix E Payer Authentication Transaction Details in the Business Center
Payer Authentication Using the Simple Order API | October 2019 203
Appendix E Payer Authentication Transaction Details in the Business Center
Authentication Validation
For a transaction in which the validation and the card authorization services were
processed successfully, payer authentication data is located in the Transaction Search
Details window in the following sections:
Request Information section: The validation service succeeded. You receive the
reason code 100, and the corresponding reply message. The necessary payer
authentication information was passed to the card authorization service, which was
processed successfully. Both services are shown in green.
Order Information section: You received a value for all three parameters because the
validation was successful. You may not receive an ECI value when a system error
prevents the card issuer from performing the validation or when the cardholder does
not complete the process.
Payer Authentication Using the Simple Order API | October 2019 204
Appendix E Payer Authentication Transaction Details in the Business Center
Payer Authentication Using the Simple Order API | October 2019 205
Appendix E Payer Authentication Transaction Details in the Business Center
Transaction Details
For a transaction in which the card is not enrolled, payer authentication data is located in
the Transaction Search Details window in the following sections:
Request Information section: the service is shown in green. You can obtain additional
information about related orders by clicking the link on the right.
Order Information section: the detailed information for the authorization service:
The AAV/CAVV area is empty because you receive a value only if the customer is
authenticated.
Search options:
Use the XID as search parameter to find both parts of a transaction processed
with an enrolled card. When using the XID as search option, make sure to keep
the = sign at the end of the string.
The list of applications is simplified to facilitate searching for the relevant service
requests.
Search results: the results options include the XID and the customer’s account
number (PAN). Use the XID to find all parts of the transaction.
Payer authentication details: all transaction details are discussed under "Searching for
Payer Authentication Details," page 201.
Payer Authentication Using the Simple Order API | October 2019 206
Appendix E Payer Authentication Transaction Details in the Business Center
You may be required to show the values that you receive in the PARes, the proof XML,
and the PAReq fields as proof of enrollment checking for any payer authentication
transaction that you present again because of a chargeback. Your account provider may
require that you provide all data in human-readable format, so make sure that you can
decode the PAReq and PARes. For enrollment reply examples, see Appendix C, "Request
and Reply Examples," on page 192. The replies are similar for all card types.
Payment card companies have implemented the 3D Secure protocol in different ways
throughout the world. CyberSource recommends that you contact your merchant account
provider to find out what is required. For more information on decrypting and providing the
PARes contact your account manager.
Payer Authentication Using the Simple Order API | October 2019 207
APPENDIX
Payer Authentication
Reports
F
This chapter describes the reports that you can download from the Business Center. All
reports on the production servers are retained for 16 months but the transaction history is
only kept in the database for six months. All reports on the test servers are deleted after
two weeks. Only transactions that were processed are reported. Those that resulted in
system error or time-out are not. For more information about API replies and their
meanings, see Appendix A, "API Fields," on page 149.
To obtain the reports, you must file a support ticket in the Support Center.
Note
Payer Authentication Using the Simple Order API | October 2019 208
Appendix F Payer Authentication Reports
Step 2 Under Transaction Reports, click Payer Auth Summary. The Payer Auth Summary
Report page appears.
Step 3 In the search toolbar, select Date Range you want to include in the report. Account level
users must select a merchant as well.
Step 4 Based on the Date Range selected, choose the specific day, week, or month you want to
review.
Only months which have already occurred in the current year display in the Month list – to
view all months of a previous year, select the year first, then choose the desired month.
To view results from the period prior to or following the selected period, click Previous or
Next below the search toolbar.
Payer Authentication Using the Simple Order API | October 2019 209
Appendix F Payer Authentication Reports
Transactions are divided into two groups: those for which you are protected and those for
which you are not:
For Visa, American Express, JCB, Diners Club, and Discover: liability shift for VbV
and VbV attempted
Payer Authentication Using the Simple Order API | October 2019 210
Appendix F Payer Authentication Reports
The values (amounts and counts) in the Payer Authentication report may not match
exactly your other sources of reconciliation because this report shows the transactions
that were validated by payer authentication, not necessarily the transactions that were
authorized. There are more likely to be reconciliation discrepancies if you process your
authorizations outside of CyberSource.
The amounts and numbers can be higher in the Payer Authentication report than in the
payment reports. In this example, it shows the results of the first two numbers in the Payer
Authentication report and the last one in the payment reports.
To reconcile your reports more easily when using payer authentication, we recommend
that you attempt to authenticate the same amount that you want to authorize.
Payer Authentication Using the Simple Order API | October 2019 211
Appendix F Payer Authentication Reports
File Name
The file that you download is named according to this format:
<MerchantID>-<RequestID>-<TransactionType>.xml
Example 33
example_merchant-1884340770000167904548-ics_pa_enroll.xml
THH:MM:SS is the time (hours, minutes, and seconds). The T separates the date and
the time.
[+ | -]HH:MM is the time zone’s offset from Greenwich Mean Time (GMT), with HH
representing hours and MM representing minutes. The number is prefixed by either a
plus (+) or minus (-) to indicate whether the offset adds to or subtracts from GMT. For
example, the offset for Pacific Daylight Time (PDT) is -07:00.
Example 34
Payer Authentication Using the Simple Order API | October 2019 212
Appendix F Payer Authentication Reports
Report
<Result>
The <Result> element is the root element of the report.
<Result>
(PayerAuthDetail+)
</Result>
<PayerAuthDetail>
The <PayerAuthDetail> element contains information about a single transaction.
<PayerAuthDetail>
(RequestID)
(MerchantID)
(TransactionDate)
(TransactionType)
(ProofXML)?
(VEReq)?
(VERes)?
(PAReq)?
(PARes)?
(AuthInfo)?
</PayerAuthDetail>
Payer Authentication Using the Simple Order API | October 2019 213
Appendix F Payer Authentication Reports
Payer Authentication Using the Simple Order API | October 2019 214
Appendix F Payer Authentication Reports
<PayerAuthDetail>
<RequestID>0004223530000167905139</RequestID>
<MerchantID>example_merchant</MerchantID>
<TransactionDate>2007-07-25T18:23:22-07:00</TransactionDate>
<TransactionType>ics_pa_enroll</TransactionType>
<ProofXML>
...
</ProofXML>
<VEReq>
...
</VEReq>
<VERes>
...
</VERes>
<PAReq>
...
</PAReq>
<PARes>
...
</PARes>
</PayerAuthDetail>
<ProofXML>
The <ProofXML> element contains data that includes the date and time of the enrollment
check and the VEReq and VERes elements. This element corresponds to the
payerAuthEnrollReply_proofXML API field.
<ProofXML>
(Date)
(DSURL)
(PAN)
(AcqBIN)
(MerID)
(Password)
(Enrolled)
</ProofXML>
Payer Authentication Using the Simple Order API | October 2019 215
Appendix F Payer Authentication Reports
<MerID> Identifier provided by your acquirer; used to log into the ACS URL. String (24)
<Password> Merchant's masked authentication password to the ACS; provided by String (8)
your acquirer. Applies only to cards issued outside the U.S.
<Enrolled> Result of the enrollment check. This field can contain one of these String (1)
values:
Y: Authentication available.
N: Cardholder not participating.
U: Unable to authenticate regardless of the reason.
<ProofXML>
<Date>20070725 11:18:51</Date>
<DSURL>https:123.456.789.01:234/DSMsgServlet</DSURL>
<PAN>XXXXXXXXXXXX0771</PAN>
<AcqBIN>123456</AcqBIN>
<MerID>4444444</MerID>
<Password />
<Enrolled>Y</Enrolled>>
</ProofXML>
<VEReq>
The <VEReq> element contains the enrollment check request data.
<VEReq>
(PAN)
(AcqBIN)
(MerID)
</VEReq>
<MerID> Identifier provided by your acquirer; used to log in to the ACS URL. String (24)
Payer Authentication Using the Simple Order API | October 2019 216
Appendix F Payer Authentication Reports
<VEReq>
<PAN>XXXXXXXXXXXX0771</PAN>
<AcqBIN>123456</AcqBIN>
<MerID>example</MerID>
</VEReq>
<VERes>
The <VERes> element contains the enrollment check reply data.
<VERes>
(Enrolled)
(AcctID)
(URL)
</VERes>
<URL> URL of Access Control Server where to send the PAReq. This element String (1000)
corresponds to the payerAuthEnrollReply_acsURL API field.
<VERes>
<Enrolled>Y</Enrolled>
<AcctID>NDAxMjAwMTAxMTAwMDc3MQ==</AcctID>
<URL>https://www.example_url.com</URL>
</VERes>
Payer Authentication Using the Simple Order API | October 2019 217
Appendix F Payer Authentication Reports
<PAReq>
The <PAReq> element contains the payer authentication request message. This element
corresponds to the payerAuthEnrollReply_paReq API field.
<PAReq>
(AcqBIN)
(MerID)
(Name)
(Country)
(URL)
(XID)
(Date)
(PurchaseAmount)
(AcctID)
(Expiry)
</PAReq>
<MerID> Identifier provided by your acquirer; used to log in to the ACS URL. String (24)
<Country> Two-character code for the merchant’s country of operation. String (2)
<XID> Unique transaction identifier generated by CyberSource for each String (28)
Payment Authentication Request (PAReq) message. The PARes sent
back by the issuing bank contains the XID of the PAReq. To ensure that
both XIDs are the same, compare it to the XID in the reply. To find all
requests related to a transaction, you can also search transactions for a
specific XID.
<Date> Date and time of request. DateTime (25)
Note Although the date and time should appear sequentially during all
stages of the processing of an order, they may not because of differing
time zones and synchronization between servers.
<Purchase Authorization amount and currency for the transaction. This element Amount (15)
Amount> corresponds to the totals of the offer lines or from the following fields:
ccAuthReply_amount (see Credit Card Services Using the Simple
Order API [PDF | HTML]) or purchaseTotals_grandTotalAmount
from external data.
<AcctID> Masked string used by the ACS. String (28)
<Expiry> Expiration month and year of the customer’s card. Number (4)
Payer Authentication Using the Simple Order API | October 2019 218
Appendix F Payer Authentication Reports
<PAReq>
<AcqBIN>123456</AcqBIN>
<MerID>444444</MerID>
<Name>example</Name>
<Country>US</Country>
<URL>http://www.example.com</URL>
<XID>fr2VCDrbEdyC37MOPfIzMwAHBwE=</XID>
<Date>2007-07-25T18:18:51-07:00</Date>
<PurchaseAmount>1.00 USD</PurchaseAmount>
<AcctID>NDAxMjAwMTAxMTAwMDc3MQ==</AcctID>
<Expiry>0811</Expiry>
</PAReq>
<PARes>
The <PARes> element contains the payer authentication reply message.
<PARes>
(AcqBIN)
(MerID)
(XID)
(Date)
(PurchaseAmount)
(PAN)
(AuthDate)
(Status)
(CAVV)
(ECI)
</PARes>
<MerID> Identifier provided by your acquirer; used to log in to the ACS String (24)
URL.
<XID> XID value returned in the customer authentication reply. This String (28)
element corresponds to the payerAuthEnrollReply_xid and
payerAuthValidateReply_xid API fields.
<Date> Date and time of request. DateTime (25)
Note Although the date and time should appear sequentially
during all stages of the processing of an order, they may not
because of differing time zones and synchronization between
servers.
Payer Authentication Using the Simple Order API | October 2019 219
Appendix F Payer Authentication Reports
Payer Authentication Using the Simple Order API | October 2019 220
Appendix F Payer Authentication Reports
<PARes>
<AcqBIN>123456</AcqBIN>
<MerID>4444444</MerID>
<XID>Xe5DcjrqEdyC37MOPfIzMwAHBwE=</XID>
<Date>2007-07-25T20:05:18-07:00</Date>
<PurchaseAmount>1002.00 USD</PurchaseAmount>
<PAN>0000000000000771</PAN>
<AuthDate>2007-07-25T20:05:18-07:00</AuthDate>
<Status>Y</Status>
<CAVV>AAAAAAAAAAAAAAAAAAAAAAAAAAA=</CAVV>
<ECI>5</ECI>
</PARes>
<AuthInfo>
The <AuthInfo> element contains address and card verification information.
<AuthInfo>
(AVSResult)
(CVVResult)
</AuthInfo>
<AuthInfo>
<AVSResult>Y</AVSResult>
<CVVResult/>
</AuthInfo>
Payer Authentication Using the Simple Order API | October 2019 221
Appendix F Payer Authentication Reports
Examples
These examples show a complete transaction: the failed enrollment check (enrolled card)
and the subsequent successful authentication.
Payer Authentication Using the Simple Order API | October 2019 222
Appendix F Payer Authentication Reports
Successful Authentication
Payer Authentication Using the Simple Order API | October 2019 223
APPENDIX
Rules-Based Payer
Authentication
G
Rules-based payer authentication enables you to specify rules that define how
transactions are authenticated by a 3D Secure card authentication program. For example,
you can decide to turn off active authentication for transactions that would otherwise
require customer interaction to avoid degrading the customer experience. However, you
may decide to authenticate customers from card-issuing banks that use risk-based
authentication because the authentication is performed without customer interaction.
To enable your account for rules-based payer authentication, contact your CyberSource
sales representative.
Available Rules
By default, when payer authentication is enabled on your account, authentication is
attempted on all transactions.
For transaction types that are not bypassed, you may be required to complete
authentication.
You can enable one or more of the following authentication transaction types. Any
transaction types that are set to bypass authentication return the reason code 100. If you
receive reason code 475 from the enrollment check, you must complete validation even if
no customer participation is needed.
Payer Authentication Using the Simple Order API | October 2019 224
Appendix G Rules-Based Payer Authentication
API Replies
By default, API replies that are specifically associated with rules-based payer
authentication are turned off. Contact CyberSource Customer Support to
Note enable these API replies when rules are triggered.
Payer Authentication Using the Simple Order API | October 2019 225
Appendix G Rules-Based Payer Authentication
payerAuthEnrollReply_authenticationPath
= RIBA
The card-issuing bank supports risk-based authentication, but whether the
cardholder is likely to be challenged cannot be determined.
= RIBA_PASS
The card-issuing bank supports risk-based authentication, and it is likely that the
cardholder will not be challenged to provide credentials; also known as silent
authentication.
Payer Authentication Using the Simple Order API | October 2019 226
GLOSSARY
Glossary
AB C D E F G H I J K L M N O P Q R S T U V W X Y Z
Numerics
3D Secure Security protocol for online credit card and debit card transactions used by Visa
Secure, Mastercard Identity Check, American Express SafeKey, JCB J⁄Secure,
Diners Club ProtectBuy, and Discover ProtectBuy.
acquirer The financial institution that accepts payments for products or services on behalf
of a merchant. Also referred to as “acquiring bank.” This bank accepts or acquires
transactions that involve a credit card issued by a bank other than itself.
acquirer BIN A 6-digit number that uniquely identifies the acquiring bank. There is a different
acquirer BIN for Mastercard (starts with 5) and Visa (starts with 4) for every
participating acquirer.
acquiring Processor that provides credit card processing, settlement, and services to
processor merchant banks.
ACS Access Control Server. The card-issuing bank’s host for the payer authentication
data.
ACS URL The URL of the Access Control Server of the card-issuing bank that is returned in
the reply to the request to check enrollment. This is where you must send the
PAReq so that the customer can be authenticated.
ADS Activation During Shopping. The card issuer’s ability to ask the cardholder to
enroll in the card authentication service when the merchant posts to the ACS URL
Payer Authentication Using the Simple Order API | October 2019 227
Glossary
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
A (Continued)
American Express A globally issued card type that starts with 3 and which is identified as card type
003 by CyberSource. These cards participate in a card authentication service
(SafeKey) provided by 3D Secure.
authentication Raw data sent by the card issuer that indicates the status of authentication. It is
result not required to pass this data into the authorization.
authorization A request sent to the card issuing bank that ensures a cardholder has the funds
available on their credit card for a specific purchase. A positive authorization
causes an authorization code to be generated and the funds to be held. Following
a payer authentication request, the authorization must contain payer
authentication-specific fields containing card enrollment details. If these fields are
not passed correctly to the bank, it can invalidate the liability shift provided by card
authentication. Systemic failure can result in payment card company fines.
Base64 Standard encoding method for data transfer over the Internet.
BIN Bank Identification Number. The 6-digit number at the beginning of the card that
identifies the card issuer.
CAVV algorithm A one-digit reply passed back when the PARes status is a Y or an A. If your
processor is ATOS, this must be passed in the authorization, if available.
CVV Card Verification Value. Security feature for credit cards and debit cards. This
feature consists of two values or codes: one that is encoded in the magnetic strip
and one that is printed on the card. Usually the CVV is a three-digit number on the
back of the card. The CVV for American Express cards is a 4-digit number on the
front of the card. CVVs are used as an extra level of validation by issuing banks.
Payer Authentication Using the Simple Order API | October 2019 228
Glossary
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Diners Club A globally issued card type that starts with a 3 or a 5. CyberSource identifies
Diners Club cards with a card type of 005. These cards participate in a card
authentication service (ProtectBuy) provided by 3D Secure.
Directory Servers The Visa and Mastercard servers that are used to verify enrollment in a card
authentication service.
Discover Primarily, a U.S. card type that starts with a 6. CyberSource identifies Discover
cards with a card type of 004. These cards participate in a card authentication
service (ProtectBuy) provided by 3D Secure.
ECI (ECI Raw) The numeric commerce indicator that indicates to the bank the degree of liability
shift achieved during payer authentication processing.
E-Commerce Alpha character value that indicates the transaction type, such as MOTO or
Indicator INTERNET.
Enroll CyberSource transaction type used for verifying whether a card is enrolled in the
Identity Check or Visa Secure service.
HTTP Hypertext Transfer Protocol. An application protocol used for data transfer on the
Internet.
HTTP POST POST is one of the request methods supported by the HTTP protocol. The POST
request request method is used when the client needs to send data to the server as part of
the request, such as when uploading a file or submitting a completed form.
HTTPS Hypertext Transfer Protocol combined with SSL/TLS (Secure Sockets Layer/
Transport Layer Security) to provide secure encryption of data transferred over
the Internet.
Payer Authentication Using the Simple Order API | October 2019 229
Glossary
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
I (Continued)
JCB Japan Credit Bureau. A globally issued card type that starts with a 3. CyberSource
identifies JCB cards with a card type of 007. These cards participate in a card
authentication service (J/Secure) provided by 3D Secure.
Maestro A card brand owned by Mastercard that includes several debit card BINs within
the U.K., where it was formerly known as Switch, and in Europe. Merchants who
accept Maestro cards online are required to use SecureCode, Mastercard’s card
authentication service. CyberSource identifies Maestro cards with the 024 and
042 card types.
Note that many international Maestro cards are not set up for online acceptance
and cannot be used even if they participate in a SecureCode card authentication
program.
Mastercard A globally issued card that includes credit and debit cards. These cards start with
a 5. CyberSource identifies these cards as card type 002 for both credit and debit
cards. These cards participate in a card authentication service (Identity Check)
provided by 3D Secure.
MD Merchant-defined Data that is posted as a hidden field to the ACS URL. You can
use this data to identify the transaction on its return. This data is used to match
the response from the card-issuing bank to a customer’s specific order. Although
payment card companies recommend that you use the XID, you can also use data
such as an order number. This field is required, but including a value is optional.
The value has no meaning for the bank, and is returned to the merchant as is.
Merchant ID Data that must be uploaded for the Mastercard and Visa card authentication
process for each participating merchant. The Merchant ID is usually the bank
account number or it contains the bank account number. The data is stored on the
Directory Servers to identify the merchant during the enrollment check.
MPI Merchant Plug-In. The software used to connect to Directory Servers and to
decrypt the PARes.
Payer Authentication Using the Simple Order API | October 2019 230
Glossary
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
PAN Primary Account Number. Another term for a credit card number.
PARes Status Payer Authentication Response status. One-character length status passed back
by Visa and Mastercard that is required data for Asia, Middle East, and Africa
Gateway authorizations.
processor Financial entity that processes payments. Also see acquiring processor.
ProofXML CyberSource field that contains the VEReq and VERes for merchant storage.
Merchants can use this data for future chargeback repudiation.
ProtectBuy Trademarked name for the Diners Club and Discover card authentication
services.
request ID A 22- or 23-digit number that uniquely identifies each transaction sent to
CyberSource. Merchants should store this number for future reference.
SafeKey Trademarked name for the American Express card authentication service.
Payer Authentication Using the Simple Order API | October 2019 231
Glossary
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
S (Continued)
SCMP API CyberSource’s legacy name-value pair API that has been superseded by the
Simple Order API.
Simple Order API CyberSource’s current API, which provides three ways to access CyberSource
services: name-value pair (NVP), XML, and SOAP.
Solo A debit card type that was owned by Maestro. It was permanently discontinued
March 31, 2011.
TermURL Termination URL on a merchant’s web site where the card-issuing bank posts the
payer authentication response (PARes) message.
UCAF collection Value of 1 or 2 that indicates whether a Mastercard cardholder has authenticated
indicator themselves or not.
validate CyberSource service for decoding and decrypting the PARes to determine
success. The validate service returns the needed values for authorization.
VEReq Verify Enrollment Request. Request sent to the Directory Servers to verify that a
card is enrolled in a card authentication service.
VERes Verify Enrollment Response. Response from the Directory Servers to the VEReq.
VERes enrolled Verify Enrollment Response enrolled. One-character length status passed back by
Visa and Mastercard that is required data for Asia, Middle East, and Africa
Gateway authorizations.
Payer Authentication Using the Simple Order API | October 2019 232
Glossary
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
V (Continued)
Visa A globally issued card that includes credit and debit cards. These cards start with
a 4. CyberSource identifies these cards as card type 001 for both credit and debit
cards. These cards participate in a card authentication service (Visa Secure)
provided by 3D Secure.
Visa Secure (VbV) Trademarked name for Visa’s card authentication service.
XID String used by both Visa and Mastercard which identifies a specific transaction on
the Directory Servers. This string value should remain consistent throughout a
transaction’s history.
Payer Authentication Using the Simple Order API | October 2019 233
INDEX
Index
AB C D E F G H I J K L M N O P Q R S T U V W X Y Z
AIBMS
commerce indicator, enrollment 177 C
commerce indicator, validation 186 card authorization with payer authentication 30,
American Express 38, 58
card tests 95 CAVV 176, 184
SafeKey 15
check enrollment service
validation results 95, 134
description 21
application results in Business Center 201 requesting 22
Asia, Middle East, and Africa Gateway credit card types accepted 155
payerAuthEnrollReply_veresEnrolled
field 181 D
payerAuthValidateReply_paresStatus
field 179, 188 data storage 207
authentication form detail report 212
URL 174 Diners Club
authorizations, expired or multiple 39 ProtectBuy 15
Diners Club card tests 107, 142
B Diners Club ProtectBuy
validation results 107
Barclays
commerce indicator, enrollment 177 dipb_attempted 113
commerce indicator, validation 186 Discover card tests 113, 142
Barclays, enrollment XID 182 Discover ProtectBuy
Barclays, validation XID 190 validation results 113
Payer Authentication Using the Simple Order API | October 2019 234
Index
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
E P
e-commerce indicator (ECI) 187 PAReq and PARes storage 207
enrollment data storage 207 PARes 232
example code password, enrolled card 21, 22, 23
payerAuthEnrollService 193, 194, 195 payer authentication details
enrolled card 202
F storage duration 202
unenrolled card 204
FDC Germany
commerce indicator, enrollment 177 payer authentication report
commerce indicator, validation 186 comparing to payment reports 211
frequency 208
interpreting 209
I
transactions reported 208
Identity Check 15 payer authentication search options 206
issuing bank payerAuthEnrollService
authentication form, URL 174 example code 193, 194, 195
CAVV 176, 184
pb_attempted 107
enrollment check 22, 62
proofXML storage 207
J
R
J/Secure 15
reason codes
J/Secure, validation results 101
validation 188
JCB
reports
J/Secure 15
detail 212
tests 101
detail, XML format 213
downloading summary report 209
M retention time limit 208
Maestro summary 208
(U.K. domestic) tests 83 risk-based authentication 225
tests 91
Maestro cards 15 S
Mastercard SafeKey 15
Identity Check 15
settling transactions, time limit 207
Mastercard Identity Check
storing payer authentication data 202
validation results 83
Streamline
Mastercard tests 83, 126
commerce indicator, enrollment 177
commerce indicator, validation 186
ECI raw 178, 187
summary report 208
Payer Authentication Using the Simple Order API | October 2019 235
Index
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
U
unenrolled card, payer authentication
details 204
V
vbv_attempted 74
Verified by Visa
validation results 95
Visa
Visa Secure 15
Visa card tests 74, 119
Visa Secure
Brazilian transaction requirements, account
type 163
Brazilian transaction requirements, merchant
category code 161
Brazilian transaction requirements, mobile
phone 162
Brazilian transaction requirements, product
code 165
validation results 74
Payer Authentication Using the Simple Order API | October 2019 236