Iveri Client Developers Guide 4
Iveri Client Developers Guide 4
Guide(Version 4.1.4
Contents
Revision History ............................................. 13
Introduction .................................................... 14
iVeri Enterprise ..........................................15
File Transfer ...............................................15
Security ......................................................15
Merchant Requirements............................15
Terminology ...............................................16
iVeri Client Requirements..........................16
1. iVeri Client Configuration ....................... 17
1.1 Make contact with an iVeri Distributor
and obtain a User Group (Billing Details ID)
....................................................................17
1.2 Install the relevant runtime: ................17
1.3 Default Location (iVeriClient_Home) ..17
1.4 Run the iVeri Client Configuration ......18
1.5 Ensure valid internet connection (with
sufficient bandwidth) to the iVeri Gateway
....................................................................20
1.6 Configure Proxy Server (if necessary) 20
1.7 Capture Default CertificateID ..............21
1.8 Set ClientAuthentication .....................21
1.9 Perform an ApplicationID Ping
(Enterprise specific) ..................................24
1.10 Develop and Test the Application.....24
1.11 Perform 1 cent Transaction
(Enterpri
se specific) 25
1.12 Switch to “Active” ..............................25
ii
1.13 Move to Production machine............26
2. Important Security Overview .................. 27
2.1 Security in iVeri Client .NET ................27
2.2 Security in iVeri Client. Java ...............27
3. Payment mechanisms: PAN vs Track2 vs
PIN 28
3.1 PAN (also known as “Card Not Present”
or “Keyed”) .................................................28
3.2 Track2 (also known as “Card Present”
or “Swiped”) ...............................................28
3.3 PIN (also known as “Card Present” with
PIN or “Swiped” with PIN) .........................29
4. Commands and Action ........................... 30
4.1 Commands ..........................................30
4.1.1 Transaction commands (may cause
transfer of funds) ........................................... 30
4.1. 1.1 Authorisation (also known as
“Preauthorisation”) ....................................... 30
4.1.1.2 Authorisation Reversal ...................... 30
4.1.1.3 Debit (also known as “Sale” or
“Purchase”) ................................................... 30
4.1.1.4 Credit (also known as “Refund” or
“Pay”) ............................................................ 30
4.1.1.5 Void ................................................... 30
4.1.2 Enquiry commands (do not cause transfer
of funds) ........................................................ 30
4.1.3 FileTransfer commands........................ 31
4.2 Actions .................................................31
4.2.1 Authorisation with PAN ....................... 32
4.2.2 Authorisation with Track2.................... 33
4.2.3 Authorisation with VisaCheckoutCallID
....................................................................... 33
4.2.4 Additional Authorisation with
TransactionIndex ........................................... 33
4.2.5 uthorisation Reversal with
TransactionIndex ........................................... 33
4.2.6 Debit with PAN .................................... 33
4.2.7 Debit with Track2 ................................ 33
4.2.8 Debit with PIN ..................................... 33
4.2.9 Debit with TransactionIndex ........... 33
4.2.10 Debit with VisaCheckoutCallID ........ 33
4.2.11 Credit with PAN ................................. 33
4.2.12 Credit with Track2 ............................. 34
4.2.13 Credit with TransactionIndex ............. 34
4.2.14 Credit with VisaCheckoutCallID ....... 34
4.2.15 Void .................................................... 34
4.2.16 Balance Enquiry with PIN ................. 34
4.2.17 PAN Enquiry with PAN ..................... 34
4.2.18 PAN Enquiry with Track2 .................. 34
4.2.19 PANToken Enquiry ............................ 34
4.2.20 Ping .................................................... 34
4.2.21 Get Device PIN Key .......................... 35
4.2.22 ThreeDSecureCheckEnrollment ........ 35
4.2.23 ThreeDSecureValidateAuthentication 35
4.2.24 RequestForDebit ................................ 35
4.2.25 MasterPassQuickResponseCode ........ 35
4.2.26 DynamicCurrencyConversion............ 35
4.2.27 MultiCurrencyPricing ........................ 35
4.2.28 MasterPassPaymentNotification ........ 35
4.2.29 UPOPAuthenticationRequestCreation 35
4.2.30 UPOPAuthenticationRequestValidation
....................................................................... 35
5. Enterprise Development ......................... 36
5.1 Overview ..............................................36
5.2 Enterprise class ...................................36
5.3 Enterprise Gateway Parameters .........37
5.4 Parameter Description .......................38
5.5 Parameters per Action ...................50
5.5.1 Input Parameters per Action................. 50
6. Transaction Sequences and Terminology
55
6.1 Overview ..............................................55
6.2 Unique Identifiers ................................55
6.3 TransactionIndex and Follow up
transactions...............................................56
6.4 Reversal transaction (Negative
transaction) ...............................................57
6.5 Sequences ...........................................57
7. Ensuring End to End Transaction Integrity
59
7.1 Overview ..............................................59
7.2 Individual transactions .......................59
7.2.1 Void ...................................................... 59
7.2.2 Retry ..................................................... 61
7.2.2.1 Retry with client recorded Merchant
Trace.............................................................. 61
7.2.2.2 Retry without Merchant Trace .......... 62
7.2.2.3 Retry with irrelevant Merchant Trace
(or irrelevant Merchant Reference) ............... 62
7.2.3 Enquiry ................................................. 63
7.2.4 Conclusion ........................................... 63
7.3 Duplicate transactions ........................63
7.3.1 Specify a unique Merchant Trace for
each step in a Transaction Sequence ............. 64
7.3.2 Merchant Reference validity period..... 64
7.3.3 Recurring transaction checking............ 64
8. Common Parameters ............................. 66
8.1 Result Codes........................................66
8.2 Mode: Test Vs Live ..............................67
8.3 Track2 ..................................................67
8.3.1 Track2 Service Code values ................. 68
8.4 Budget Period ......................................69
9. Specialized Techniques ......................... 70
9.1 Ping ......................................................70
8.2 Mod-10 Checking ................................72
9.3 Card Number Checking .......................73
10. ThreeDSecure (also known as
“VerifiedByVISA” or “MasterCard SecureCode”)
74
10.1 3DSecure implementation directly to a
3DSecure provider .....................................74
10.1.1 3DSecure V_XML tags to be sent to the
iVeri Gateway................................................ 74
10.1.2 (Nothing here?) .................................. 75
10.1.3 3DSecure Process Flow Diagram ...... 76
10.1.4 3DSecure implementation to Bankserv
....................................................................... 77
10.1.5 Test Environment ............................... 77
10.1.6 Live Environment .............................. 77
10.1.7 BankServ 3DSecure Message Flow ... 78
10.2 3DSecure implementation using
V_XML Enquiry commands .......................81
10.2.1 Checking Enrollment ......................... 82
10.2.2 Validate Authentication ...................... 83
11. Visa Check-Out with Enterprise ......... 85
11.1 Process Flow in Visa Check-Out with
enterprise ...................................................85
11.1.1 Illustration of Visa Check Out with
Enterprise ...................................................... 86
12. PayD ......................................................... 87
12.1 PayD Process ....................................87
12.2 Non-Registered Users.......................87
12.3 Registered Users ...............................88
12.4 Voiding payD Transactions ..............88
13. Web Service .............................................. 89
13.1 Message Formats used by the Web
Service .......................................................89
13.1.1Example of SOAP Request ................. 89
13.1.2 Example of SOAP Response.............. 89
13.2 Web Service URL's ............................90
13.3 Web Service implementation ............90
13.4 WebService Methods ........................91
13.4.1 String Execute (bool validateRequest,
string protocol, string protocolVersion, string
request) .......................................................... 91
13.4.2 PinBlock GetPinBlock (string mode,
string pan, string pin) .................................... 94
13.4.3 String GenerateCertificateID (string
billingDetailsID) ........................................... 96
13.4.4 String SubmitCertificateRequest (string
certificateID, string certificateSigningRequest)
....................................................................... 98
13.4.5 String GetCertificate(string
certificateID) ................................................. 99
15.4.6 String RenewCertificateID (string
certificateID) ............................................... 101
13.4.7 Byte [] DownloadFile(string
fileServiceCommand) ................................. 103
14. POS Device Intergration ........................ 106
14.1 PINBlock encryption via Triple DES
DUKPT encryption .................................. 106
14.1.1 Key Injection for DUKPT Mode Test
..................................................................... 107
14.2 PINBlock encryption via
Master/Session encryption.................... 107
14.2.1 Key Injection for Master/Session Mode
Test .............................................................. 107
14.2.2 Get Device PIN Key ........................ 108
14.3 Track2 encryption via Master/Session
encryption ............................................... 108
14.3.1 Track2 Key Injection for
Master/Session Mode Test .......................... 109
14.4 Track2 encryption via Dukpt
encryption ............................................... 109
14.4.1 Track2 IPEK Injection for Dukpt Mode
Test .............................................................. 109
14.5 PAN encryption via Dukpt encryption
................................................................. 110
16.6.1 “Debit with PIN” and “Balance
Enquiry” ................................................... 110
14.6.1 Debit with PIN ..................................110
14.6.2 Balance Enquiry ................................ 111
14.6.3 Test environment for PIN cards ........ 111
14.6.4 Determining if a card is PIN based ...112
14.7 EMV Transactions”......................... 112
14.8 Coding for EMV data ...................... 113
15. Additional Data Transactions................ 114
15.1 Additional Data for Procurement
Transactions........................................... 114
15.1.1Coding for Procurement .....................114
15.1.2 Tax Calculation .................................115
15.1.3 Calculation when TransactionDiscount
is NOT zero ..................................................116
15.2 Advanced Fraud Screening ............ 116
15.3 Fleetcard transactions ................... 117
15.3.1 Coding for Fleetcards ........................117
15.4 Airline addendum data ................... 118
15.4.1 Coding for Airline addendum data ....118
15.5 CyberSource Fraud Management .. 119
15.5.1 Device Fingerprinting .......................119
15.5.1.1 PNG Image.....................................119
15.5.1.2 Flash Code .....................................119
15.5.1.3 JavaScript Code ............................ 120
15.5.2 Coding for CyberSource data........... 120
15.6 Authenticated Collections.............. 120
15.6.1 Coding for Authenticated Collection
data .............................................................. 121
16. MasterPass Quick Response Code ....... 122
16.1 Create Code .................................... 122
16.1.1 Additional Parameters ...................... 122
16.1.2 Example: .......................................... 122
16.2 Query Code ..................................... 123
16.2.1 Additional Parameters ...................... 123
16. 2.2 Example: ......................................... 123
16.3 Delete Code .................................... 124
16.3.1 Additional Parameters ...................... 124
16.3.2 Example: .......................................... 124
16.4 Block Code ...................................... 125
16.4.1 Additional Parameters ...................... 125
16.4.2 Example: .......................................... 125
16.5 Unlock Code ................................... 126
16.5.1 Additional Parameters ...................... 126
16.5.3 Example: .......................................... 126
16.6 Update Code ................................... 127
16.6.1 Additional Parameters ...................... 127
16.6.2 Example: .......................................... 127
16.7 Update Code Amount ..................... 128
16.7.1 Additional Parameters ...................... 128
16.7.2 Example: .......................................... 128
17. Foreign Exchange .................................. 129
17.1 Dynamic Currency Conversion (DCC)
................................................................. 129
17.1.1 DCC Rate Request with Specified BIN
and Base Amount ........................................ 129
17.1.2 Multiple Rate Request with Specified
Base Amount ............................................... 130
17.2 Multi-Currency Pricing (MCP) ....... 131
18. UPOP SecurePlus Authentication ......... 133
18.1.1 Request Creation .............................. 133
18.1.2 Request Validate............................... 134
19. Advanced Settings ................................. 136
19.1 Merchant Reference validity period136
19.2 Recurring transaction checking .... 136
19.3 ReconReference extraction............ 136
19.4 Transaction Type repetition within
transaction sequence............................. 137
20. File Transfer Development .................... 138
20.1 Overview ......................................... 138
20.2 FileTransfer class ........................... 138
20.3 File Transfer Data Types ................ 139
20. File Transfer Parameters ................. 140
20.5 File Transfer Command ................. 141
20.6 File Transfer Parameters per action
................................................................. 142
20.7 Automating the File Transfer process
................................................................. 143
21. Out of Band Transaction Notification ... 145
21.1 Prerequisite..................................... 145
22. Domain Knowledge ................................ 146
22.1 Card Present vs. Card Not Present 146
22.2 Online vs. Offline Transactions ..... 146
22.2.1 Online Transactions ......................... 147
22.2.2 Offline Transactions ......................... 147
23. Frequently Asked Questions (common to
.NET and Java) ............................................. 149
23.1 Problems connecting to the iVeri
Gateway .................................................. 149
23.2 Request timed out when network
pinging the gateway ............................... 150
23.3 Execute () or executeAsync() must be
called before this method is allowed ..... 150
24. Contact Information............................... 152
24.1 Distributors ..................................... 152
24.1.1 Nedbank South Africa ...................... 152
24.1.2 Nedbank Namibia ............................ 152
24.1.3 CBZ Zimbabwe................................ 152
24.1.4 I&M Bank Kenya ............................. 152
24.1.5 CSC/CSC247 Bank .......................... 152
24.1.6 CIM .................................................. 152
24.2 Websites ......................................... 153
24.2.1 Nedbank ........................................... 153
24.2.2 CBZ Bank ........................................ 153
24.2.3 I&M Bank ........................................ 153
24.2.4 CSC/CSC247 Bank .......................... 153
24.2.5 CIM .................................................. 154
24.2.6 DNS configuration ........................... 154
25. Appendix A: V_XML Message Examples155
26. Appendix B: ACS Redirect Example Page
...................................................................... 161
26.1 Authenticating Enrolled Cards ....... 161
26.2 POST Form ..................................... 161
26.3 Authentication Frame .................... 161
26.4 PARes Message ............................. 163
26.5 Response Messages ...................... 164
27. Appendix C: Out of Band - Merchant
Webservice ................................................... 165
28. Appendix D: UPOP Authentication Redirect
Example Page............................................... 166
28.1 Authenticating UnionPay Cards .... 166
28.2 POST Form ..................................... 166
28.3 Use of Authentication Page ........... 166
28.3.1 Timing between Authentication and
Authorization .............................................. 167
28.3.2 Failed Authentication Processing ..... 167
28.3.3 Data Required in Authentication
Messages ..................................................... 167
28.4 Full Transaction Flow ..................... 167
REVISION HISTORY
13
INTRODUCTION
The iVeri range of payment products, developed by iVeri Payment Technologies (Pty) Ltd
(www.iveri.com) provide proven credit card payment solutions for businesses on and off the
internet.
The iVeri Client software facilitates the secure communications between the Merchant and
the iVeri Gateway via client-side software, primarily enabling iVeri Merchants to initiate
transactions on cards from within their systems, be they websites, call centres, etc
iVeri Client comes in the following forms:
Client .NET – Built on Microsoft’s .NET Framework is compatible with all .NET compatible
programming languages. Currently dependant on Microsoft operating systems.
Client Java – Built on Oracle JDK / JRE 8. Platform independant.
iVeri Client has two classes within it that provide two different abilities:
Enterprise: For the sending and receiving messages to / from the iVeri Gateway.
FileTransfer: For uploading/downloading of files to / from the iVeri Gateway.
Whenever the iVeri Gateway is enhanced with changes that effects the Gateway Protocol, this
document should be updated, and the latest version posted on the iVeri website.
See the “Protocol History” section for information on changes within the Gateway protocol,
including its enhancements and depreciated (backward compatible) functionality.
The full functionality of the current protocol requires iVeriClient version 4.0.0 or later.
Merchants that are using an earlier version can either upgrade or refer the earlier version
documentation.
14
Database storage, formatting and integration of iVeriClient into a merchant system is
specified by developer(s) appointed by the merchant.
iVeri Enterprise
Enterprise is aimed at Merchants that have the following characteristics:
Access to development resources.
Medium to large websites.
Call centres and physical store environments.
Own Merchant Number and a relationship with an authorised Acquiring Institution
File Transfer
The File Transfer component of iVeri Client enables merchants to upload/download files
to/from the iVeri Gateway. There may be files available for upload/download within iVeri
Client that are not available via the iVeri BackOffice. Similarly, there may be files available for
upload/download within iVeri BackOffice that are not available via the iVeri Client. The
following other sections within this document relevant to File Transfer are: 3, 10.1 and 22.
Security
iVeri Client utilizes the worldwide-accepted SSL standard for encryption in order to protect
the integrity of transaction information. All communication between the iVeri Client software
and the iVeri Gateway is encrypted with 256-bit SSL. Client certificates are issued by the iVeri
CA. Whereas the Gateway certificate is a public certificate.
Note for iVeri Enterprise Users: It is the merchant’s responsibility to secure the link between
the cardholder and the merchant server on which the iVeri Client software operates.
Merchant Requirements
Merchants are required to enter into a “Agreement” with an authorised Acquiring Institution.
See your iVeri Distributor (see section Error: Reference source not found) for more
information on entering into a Merchant Agreement, and obtaining a Merchant Number.
15
Terminology
This document uses certain iVeri specific terminology (like ApplicationID). See sections 7.4
and Error: Reference source not found for descriptions of many of these terms.
Please contact your iVeri Distributor (see section Error: Reference source not found) for more
information on how to obtain this information.
The following are the technical requirements for installing, configuring and using iVeri Client:
For iVeri Client.NET: The Microsoft .NET Framework 4.6 SDK / runtime must be installed
before using iVeri Client.NET 4.6.x (previous iVeri Client .NET supported the Microsoft
.NET Framework 4.5 or later).
For iVeri Client Java: Java 8 JDK / JRE (previous iVeri Client supported JDK 7 or later) must
be installed before using the iVeri Client.Java software
Network Connection from the Server to the iVeri Gateway. This may be via any network over
which TCP/IP can be run as the protocol e.g. The Internet, Diginet, Leased Line, ISDN etc.
16
1. IVERI CLIENT CONFIGURATION
You will be then be asked to supply certain information. Once the iVeri Distributor has
processed this information, you will be emailed a User Group and Password. Keep these
details readily available, as this will be required for requesting Certificate IDs, and for logging
in to the iVeri BackOffice website. This process will result in an ApplicationID being emailed
to the designated technical contact.
17
1. Environment Variable configure: iVeriClient_Home
2. System Property configured iVeriClient_Home
3. Application / User Working directory
Note: When changing the iVeriClient_Home environment variable and running a website in IIS,
you have to reset IIS after setting the environment variable
1. If you drop the iVeriClient.jar into the ~\jre\lib\ext directory you can just type java
ClientConfig.
2. If you want to run the Configuration Utility from your applications working directory drop
iVeriClient.jar in your application directory. Now type java -jar iVeriClient.jar
Initialising...
18
Menu
Choice [1] :
iVeri Client. NET: Run the Configuration Utility from your applications working directory by
running the “iVeri.ClientConfig.exe” application.
Initialising...
Menu
Choice [1] :
NOTE: The Client Configuration utility uses the convention that a default entry is indicated by
square braces (eg [...]) before the required input. Therefore, above default choice is 1.
PROXY_HOST
This element identifies the proxy server by name or IP address.
PROXY_PORT
Specifies the
Specifiesthe port on the proxy server to connect to.
PROXY_USERNAME
The username to use when proxy authentication is required.
PROXY_PASSWORD
The proxy servers password when proxy authentication is required.
Example:
20
<XML>
<GATEWAYS>
<DEFAULTS>
<VERSION>2.0</VERSION>
<TIMEOUT>60</TIMEOUT>
<ERRORFILE>iVeriClientErrors.txt</ERRORFILE>
<DEFAULTGATEWAY />
<PROXY_HOST>10.0.0.2</PROXY_HOST>
<PROXY_PORT>3128</PROXY_PORT>
<PROXY_USERNAME></PROXY_USERNAME>
<PROXY_PASSWORD></PROXY_PASSWORD>
</DEFAULTS>
<GATEWAY Name="nedbank">
<ADDRESS>portal.nedsecure.co.za</ADDRESS>
<PATH>/iVeriGateway/Gateway.aspx</PATH>
</GATEWAY>
<GATEWAY Name="host">
<ADDRESS>portal.host.iveri.com</ADDRESS>
<PATH>/iVeriGateway/Gateway.aspx</PATH>
</GATEWAY>
</GATEWAYS>
</XML>
In the above example iVeriClient would connect to proxy server 10.0.0.2 listening on port
3128 without a username and password.
21
Enable Client Authentication
1. Yes
2. No
X. Exit
By selecting option 2, No, you will disable Client Authentication and no client certificates will
be used when connecting to the gateway.
By selecting option 1, Yes, you will have to enable Client Authentication by completing the
steps following.
CertificateSource (Java)
When you want to use Client Certificates there are two CertificateSources whereby the
certificate can be stored by.
Certificate Source
1. File
2. KeyStore
X. Exit
22
Selecting option 2 will perform the following functionality:
Set Certificate Path. Validate the path exists.
Set Keystore File Name. Validate that the keystore exists and that it is a JKS keystore
Set Keystore Password. Validate the keystore password.
Set Certificate Password. Validate the certificate password.
Verify information and confirm.
Enable Client Authentication
CertificateSource (Dotnet)
When you want to use Client Certificates there are two CertificateSources whereby the
certificate can be stored by.
Certificate Source
1. File
2. Certicate Store
X. Exit
23
Selecting option 2 will perform the following functionality:
Validate that certificate with DefaultCertificateId as CommonName exists inside Local
Machine Store.
Enable Client Authentication
Develop and Test your application referencing the sections below and samples as
appropriate. Your development should include the logging of transaction information in
database (preferable) or file for future references and queries. Should there be a dispute over
what data was sent between the Merchant and the iVeri Gateway, the Merchant would be
required to produce these logs.
In order to ensure that iVeri Enterprise merchants keep client-side logs, we require that a
sample of these logs (in any format displayable in a text editor) be emailed when
development is completed. See “Contact information” (section Error: Reference source not
found) for an email address to submit logs to.
Logs should include any actions that may be performed by the merchant.
24
The getLoggableRequest()and getLoggableResponse() methods can be used for
logging the input and output from the transaction. These two methods retrieve the xml sent
to or received from the gateway and contain all the necessary transaction information to be
logged. The getLoggableRequest() method is called the line before execution, while the
getLoggableResponse() method is called the line after execution.
These methods allow logging required sensitive data (e.g. Credit Card Numbers) in a secure
manner.
Contact the iVeri Distributor help desk and request that your ApplicationID Status be made
“Active”. Only once your logs have been checked by the iVeri Distributor will your
ApplicationID will switched to “Active”.
25
1.13 Move to Production machine
If your development machine and production machines are two different machines, you will
need to install your developed code to the production machine. To do this, you need to repeat
Steps 3.2 through to Error: Reference source not found for FileTransfer and Steps 3.2 through
to 3.9 for iVeri Enterprise to ensure everything is correctly configured on the Production
machine.
26
2. IMPORTANT SECURITY OVERVIEW
Please ensure that your application has read permissions to the directory where your
keystore / certificate is located.
Please make sure that your iVeriClient has read, write permissions to the iVeriClient_Home
directory.
27
3. PAYMENT MECHANISMS: PAN VS
TRACK2 VS PIN
In order to process a transaction with an account you need to know which payment
mechanism you are going to use.
Note that independent of the payment mechanism is used, the iVeri Gateway returns a dotted
out “PAN” which can be used for display purposes.
28
3.3 PIN (also known as “Card Present” with PIN or
“Swiped” with PIN)
The account is a card that requires a PIN (eg debit card) and a card reader is available to
“swipe” the cardholder’s card and read the Track2 from it.
A PED (PIN entry device) is available to securely capture the cardholders PIN and encrypt it.
See “PIN based transactions” (section Error: Reference source not found) for more details.
29
4. COMMANDS AND ACTION
4.1 Commands
4.1.1 Transaction commands (may cause transfer of funds)
4.1. 1.1 Authorisation (also known as “Preauthorisation”)
Causes a reservation of funds on the cardholders account.
4.1.1.2 Authorisation Reversal
Unreserve the funds previously reserved on the cardholders account.
4.1.1.3 Debit (also known as “Sale” or “Purchase”)
Causes a transfer of funds from the cardholder to the merchant.
4.1.1.4 Credit (also known as “Refund” or “Pay”)
Causes a transfer of funds from the merchant to the cardholder.
4.1.1.5 Void
Cancel one of the above commands within a short time after the command was initiated.
4.1.2 Enquiry commands (do not cause transfer of funds)
See section on “Actions” below for a description of these commands
Balance
PAN
PANToken
Ping
GetDevicePINKey
ThreeDSecureCheckEnrollment
ThreeDSecureValidateAuthentication
AuthenticatedCollection
RequestForDebit
MasterPassQuickResponseCode
DynamicCurrencyConversion
MultiCurrencyPricing
30
MasterPassPaymentNotification
UPOPAuthenticationRequestCreation
UPOPAuthenticationRequestValidation
4.1.3 FileTransfer commands
See section 22 on “FileTransfer” for a description of these commands
Batch Upload
Batch Download
HotCard Download
BINLookup Download
BINManagement Download
BlackCard Download
TransactionHistory Download
Recon Download
AcquirerRecon Download
Inventory Download
DiVert Upload
DiVert Download
4.2 Actions
An Action corresponds to the combination of a Payment Mechanism and a Command. The
concept of an Action is used within the documentation and examples as a means of
describing functionality. Note that the iVeriClient software and the iVeriGateway use the
concepts Payment Mechanism and Command instead of Action.
31
Authorisation Reversal with TransactionIndex
Debit with PAN
Debit with Track2
Debit with PIN
Debit with TransactionIndex
Debit with VisaCheckoutCallID
Credit with PAN
Credit with Track2
Credit with TransactionIndex
Credit with VisaCheckoutCallID
Void
Balance Enquiry with PIN
PAN Enquiry with PAN
PAN Enquiry with Track2
PANToken Enquiry
Ping
Get Device PIN Key
ThreeDSecureCheckEnrollment
ThreeDSecureValidateAuthentication
RequestForDebit
MasterPassQuickResponseCode
DynamicCurrencyConversion
MultiCurrencyPricing
MasterPassPaymentNotification
UPOPAuthenticationRequestCreation
UPOPAuthenticationRequestValidation
4.2.1 Authorisation with PAN
Reserve funds when a card not present.
32
4.2.2 Authorisation with Track2
Reserve funds when a card is present. Funds reservation is not applicable for cards requiring
a PIN.
4.2.3 Authorisation with VisaCheckoutCallID
Reserve funds when a card is present. Funds reservation is not applicable for cards requiring
a PIN.
4.2.4 Additional Authorisation with TransactionIndex
Increase the amount previously reserved via iVeri by an additional amount. The addition of
funds previously reserved outside the iVeri Gateway is not supported.
4.2.5 uthorisation Reversal with TransactionIndex
Release the funds previously reserved on the cardholders account via the iVeri Gateway. The
release of funds reserved outside the iVeri Gateway is not supported.
4.2.6 Debit with PAN
Transfer of funds from cardholder to merchant when a card not present. The use of an
AuthorisationCode previously obtained outside the iVeri Gateway is supported.
4.2.7 Debit with Track2
Transfer of funds from cardholder to merchant when a card is present. The use of an
AuthorisationCode previously obtained outside the iVeri Gateway is supported.
4.2.8 Debit with PIN
Transfer of funds from cardholder to merchant when a card requiring a PIN is present.
4.2.9 Debit with TransactionIndex
Transfer of funds from cardholder to merchant. Follow up of an action previously sent to the
iVeri Gateway. Not supported for cards requiring a PIN.
4.2.10 Debit with VisaCheckoutCallID
Transfer of funds from cardholder to merchant. Follow up of an action previously sent to the
iVeri Gateway. Not supported for cards requiring a PIN.
4.2.11 Credit with PAN
Transfer of funds from merchant to cardholder when a card not present.
33
4.2.12 Credit with Track2
Transfer of funds from merchant to cardholder when a card is present. Credit is not currently
supported for cards requiring a PIN.
4.2.13 Credit with TransactionIndex
Transfer of funds from merchant to cardholder. Follow up of an action previously sent to the
iVeri Gateway. Not supported for cards requiring a PIN.
4.2.14 Credit with VisaCheckoutCallID
Transfer of funds from merchant to cardholder. Follow up of an action previously sent to the
iVeri Gateway. Not supported for cards requiring a PIN.
4.2.15 Void
Cancel a transaction command within a short time after the command was initiated.
4.2.16 Balance Enquiry with PIN
Obtain the balance of the PIN based account in the currency of the account. Note that this
currency may be different to the currency of the merchant.
4.2.17 PAN Enquiry with PAN
Obtain information about a card (which is not present) without performing a transaction, for
example to check if the card is a hot card or blacklisted by the merchant.
4.2.18 PAN Enquiry with Track2
Obtain information about a card (which is present) without performing a transaction, for
example to check if the card is a hot card or blacklisted by the merchant. PAN Enquiry is not
currently supported for cards requiring a PIN.
4.2.19 PANToken Enquiry
Obtain a TransactionIndex for the card number and expiry date without performing a
transaction. The TransactionIndex is to be used in a Tokenized transaction.
4.2.20 Ping
The Ping command is primarily used to determine if the connection status between the
Merchant and the Acquirer. If the connection is down, then the Ping command can also be
used to check when the status is back up.
See section 9.1 for more information.
34
4.2.21 Get Device PIN Key
Get the current Triple DES session key for a device. See PIN based transactions (section Error:
Reference source not found).
4.2.22 ThreeDSecureCheckEnrollment
Check the CardHolders 3DSecure Enrollment. (section 10.2).
4.2.23 ThreeDSecureValidateAuthentication
Validate the CardHolders 3DSecure Authentication process. (section 10.2).
4.2.24 RequestForDebit
A Request for a Debit (Sale) is generated and an Email is sent to a cardholder.
4.2.25 MasterPassQuickResponseCode
Generating / Managing a transactional code that can be paid for by a cardholder. (section 17).
4.2.26 DynamicCurrencyConversion
Generating / Managing a transactional code that can be paid for by a cardholder. (section 18).
4.2.27 MultiCurrencyPricing
Generating / Managing a transactional code that can be paid for by a cardholder. (section 18).
4.2.28 MasterPassPaymentNotification
Inquiring whether a payment notification has been received from MasterPass.
4.2.29 UPOPAuthenticationRequestCreation
The creation of the Authentication Request message to be posted to the UPOP authentication
server (section 17.1).
4.2.30 UPOPAuthenticationRequestValidation
The validation of the Authentication Response message received from the UPOP
authentication server (section 17.2).
35
5. ENTERPRISE DEVELOPMENT
5.1 Overview
The following is available to assist Enterprise development:
iVeri Client Developers Guide (this document)
The iVeri Client API (which includes the Enterprise class)
iVeri Enterprise code samples
Distributor website (see section Error: Reference source not found) for updates to the
documentation mentioned
36
5.3 Enterprise Gateway Parameters
Below we describe the various gateway parameters.
This is followed by a table of what input and output parameters are relevant for each action.
Parameters are shown grouped according to their usage.
The Node Type column corresponds to how the Enterprise class should be used for the
parameter:
Node Type Set input parameter value Get output parameter value
attribute enterprise.setAttribute(..) enterprise.getAttribute(..)
tag enterprise.setTag(..) enterprise.getTag(..)
parameter enterprise.prepare(...) N/A
attribute parameter enterprise.prepare(...) enterprise.getAttribute(..)
property Use method or property of enterprise corresponding to the parameter N/A
subtag call enterprise.setTag(..) within N/A
enterprise.openElement(...)
...
enterprise.closeElement()
37
5.4 Parameter Description
Core Parameters
Parameter Node Data Type Minimu Maximum Description
Type m Length
Length
ApplicationID attribute Guid 38 38 Identification of the merchant’s configuration within the iVeri Gateway
paramet
er
CertificateID property Guid 38 38 The iVeri CertificateID installed on the server communicating with the iVeri Gateway
CertificatePath property A Valid Path to directory where the KeyStoreFile or CertificateFile exists on the filesystem
CertificateFile property A Existing certificate file
CertificatePassword property A Password of the certificate
KeyStoreFile property A Existing keystore file (Only iVeriClient.java)
KeyStorePassword property A Keystore password (Only iVeriClient.java)
Gateway property A 10 The name of the gateway connecting to. If not explicitly set, the default gateway is used.
Command attribute A 50 The command specifying what should be done by the iVeri Gateway
paramet
er
GetDevicePINKey Get DevicePINKey (use Category=Security)
Ping Ping (use Category=Syste m)
Authorisation Authorisation (use Category=Transaction)
AuthorisationReversal Authorisation Reversal (use Category=Transaction)
Credit Credit (use Category=Transaction)
Debit Debit (use Category=Transaction)
Void Void (use Category=Transac tion)
Balance Balance Enquiry (use Category=Enquiry)
PAN PAN Enquiry (use Category=Enquiry)
PANToken PANToken Enquiry (use Category=Enquiry)
ThreeDSecureCheckEnroll ThreeDSecureCheckEnrollment Enquiry (use Category=Enquiry)
ment
ThreeDSecureValidateAut ThreeDSecureValidateAuthentication Enquiry (use Category=Enquiry)
hentication
AuthenticatedCollection AuthenticatedCollection:Enquiry (use Category=Enquiry)
RequestForDebit RequestForDebit Enquiry (use Category = ‘Enquiry’)
MasterPassQuickRespons MasterPass QuickResponseCode Enquiry (use Category = ‘Enquiry’)
eCode
Mode attribute A 4 4 The mode of the corresponding ApplicationID. See section 10.2
paramet
er
Test
Live
RequestID attribute Guid 38 38 A unique identifier generated by the iVeri Gateway for this request
38
Category paramet A 50 A categorisation of the request. Only required in conjunction with a prepare method.
er
Transaction use if Command = Debit or Credit or Authorisation or AuthorisationReversal
or Void
Enquiry use if Command = Balance, PAN or PANToken or
AuthenticatedCollection or ‘ RequestForDebit’
System use if Command = Ping
Security use if Command = GetDevicePINKey
Common Parameters
Parameter Node Data Type Minimu Maximum Description
Type m Length
Length
Acquirer tag A 3 32 The Acquiring system to which this transaction was routed by iVeri
Nedcor
NedbankBICISO
IMNarada
DashenACI
ChamsACI
MSCCTranzWare
CTLNigeria
AcquirerDate tag N 8 8 The date that the Acquirer allocated to this transaction
YYYYMMDD YearMonthDay
AcquirerReference tag N: 64 A reference allocated by the Acquirer to this transaction with format specific to the acqiurer. It is a composite
element consisting of a settlement cycle and a transaction trace. The cycle can be 5 digits (the acquirer batch
number) or 8 digits (cycle end date). The trace is the significant part of the acquirer Retrieval Reference
Number (RRN). The trace can be 8 digits (if the RRN starts with 0000) or 12 digits (the full RRN).
CCCCC: TTTTTTTT CycleNumber:RRN8 (for Nedbank providers)
yyyyMMdd:tttttttt CycleEndDate:RRN8 (for the TMS provider)
yyyyMMdd:ydddhhtttttt CycleEndDate:RRN (for providers in general)
AcquirerTime tag N 6 The time that the Acquirer allocated to this transaction
HHMMSS HourMinuteSecond
Amount tag N 0 12 The total value of the transaction in the smallest unit of the currency specified (eg in cents)
AuthorisationCode tag AN 0 6 The Authorisation Code issued by the Issuer to the Merchant either telephonically or electronically
BudgetPeriod tag N 0 2 The number of months over which the cardholder would like to pay the transaction off. See section 10.4
0 default
3
6
9
12
18
24
36
CardSecurityCode tag N 3 4 The 3 or 4 digits printed on the card which are not contained on the magnetic strip. Usually printed after the
CCNumber on the signature strip. Corresponds to American Express CIV, MasterCard CVC2 and VISA CVV2.
Does not exist within Associations
Currency tag A 3 The ISO 4217 currency code of the value of the transaction. e.g. USD or ZAR or GBP
39
DisplayAmount tag String 30 The Amount returned in a currency aware printable format
ExpiryDate tag N 4 6 The last month of the validity period of the card
MMYY MonthYear
MMYYYY MonthYear
CardholderName tag String 50 The name of the cardholder as embossed on the card.
CardholderEmail tag String 125 The email address of the cardholder
OrderDescription tag String 250 A brief description of the purchase made by the cardholder
AllowBudgetPeriod tag Boolean When this is true a ‘BudgetPeriod’ input field will be present on the CardDetails capture form.
RequestExpiryDate tag N 8 8 The date after which the debit request will expire
YYYYMMDD YearMonthDay
CreateTransactionUrl tag Boolean When this value is ‘true’ a ‘TransactionUrl’ will be returned to the merchant. If ‘false’ a debit request email will
be sent to the ‘CardholderEmail’
TransactionUrl tag String 225 The transaction url that the Cardholder must be redirected to perform a transaction when the command was
‘RequestForDebit’. This will be returned to the merchant in the response if the ‘CreateTransactionUrl’
parameter is set to ‘true’
MerchantName tag String 50 The merchant name associated with the ApplicationID
MerchantAddress tag String 50 The merchant address associated with the ApplicationID
MerchantCity tag String 50 The merchant city associated with the ApplicationID
MerchantCountryCode tag String 2 The merchant country code associated with the ApplicationID
MerchantCountry tag String 50 The merchant country name associated with the ApplicationID
MerchantReference tag String 0 64 A merchant generated identifier that is unique within a specified time period that identifies a transaction
sequence. In the case that the transaction is an Authenticated Collection this field will contain the 14-
character long Contract Reference allocated by the Merchant for this transaction.
OriginalMerchantReference tag String 0 64 A merchant generated identifier of a previous transaction used in a Tokenized PAN transaction
MerchantTrace tag String 0 64 Unique merchant identification for the request
MerchantUSN tag String 0 15 The merchant USN associated with the ApplicationID
OriginalMerchantTrace tag String 64 A reference to the original MerchantTrace previously sent to the iVeri Gateway
OriginalRequestID tag Guid 38 38 The RequestID that was returned as part of the original transaction
PAN tag N. . 20 Primary Account Number (eg Credit card number), may have been extracted from Track2. When this is an
output parameter, then a section of it is dotted out, and safe to display or print
PANMode tag String 0 128 The mechanism by which the PAN was determined from the card. The value is a comma separated list of the
following:
Name Direction Description
Keyed Input/Outp Card number was keyed
ut
Tokenized Output PANFormat TransactionIndex, OriginalMerchantReference or
MSISDN (non -registration) was specified in the request
Swiped Input/Outp Card was swiped. This means that a Track2 must be specified in
ut the request.
Dipped Input/Outp Card was processed while in the card reader slot of the device.
ut This means that a Track2 must be specified in the request.
Tapped Input/Outp Card was processed by a contactless device. This means that a24
ut Track2 must be specified in the request.
ConstructedTrack2 Output For when a partial Track2 is received in the request usually
accompanied by a PINBlock as one of the legs of a PANFormat
“MSISDN” transaction.
CVV Output The CardSecurityCode tag had a value in the request
40
PIN Output The PINBlock tag had a value in the request
PINCapable Input/Outp No online PIN or EMV data sent to the gateway, but the device is
ut capable to process PIN.
EMV Output EMV data were specified in the request18
EMVFallback Output No EMV data specified in the request, but the service code of the
request Track2 indicate a chip card.
EncryptedPAN Output The value of the PAN tag in the request specified encrypted data
EncryptedTrack2 Output The value of the Track2 tag in the request specified encrypted
data
PurchaseDate tag 4 4 The date on which the purchase was made. Defaults to current Date
MMDD MonthDay
PurchaseTime tag 4 4 The time at which the purchase was made. Defaults to current Time
HHMM HourMinute
ReconReference tag N 0 8 Identifier that the Merchant is returned during a transaction and that also appears in the reconciliation
information supplied by the Acquirer. Either assigned by the iVeri Gateway or derived from the specified
MerchantReference.
StartDate tag A 6 The date of the start of the validity period of the card number. The start date is not available on many cards,
and will remain an optional parameter until the start date becomes more common
MMYY MonthYear
MMYYYY MonthYear
Terminal tag N 0 8 Identifier optionally allocated by the merchant which is intended to group transactions together for reporting
purposes in reconciliation statements.
Track2 tag String 39 Track2 after being read by the swipe device from the magnetic stripe on the card (for card present
transactions). It is inclusive of the beginning and end markers being ; and ? respectively. See section 10.3
TransactionIndex tag Guid 38 38 Unique identifier allocated by iVeri for a series of related transactions. If PANFormat is TransactionIndex,
TransactionIndex is used to locate a previous transaction for the PAN to be resolved.
MobileMoneyID tag N 1 6 An additional transaction identifier returned for a PANFormat “MSISDN” transaction. This tag should be
passed to the Gateway along with OriginalRequestID or OriginalMerchantTrace when the transaction needs
to be Voided.
MSISDN tag String A mobile number required by PANFormat “MSISDN” transactions
VisaCheckoutCallID tag String 0 48 Visa Checkout transaction ID associated with a payment request.
MasterPassTransactionID tag N This is the MasterPass system transaction reference
ForeignAmount Tag String 0 11 When doing a transaction in a foreign currency we need to specify the amount here in the foreign
currency
Mandatory when doing transaction in foreign currency
ForeignCurrency Tag String 3 3 When doing a transaction in a foreign currency we need to specify the foreign currency here
Mandatory when doing transaction in foreign currency
ForeignExchangeID Tag Guid 38 38 Unique Identifier returned in the DynamicCurrencyConversion / MultiCurrencyPricing linked
to the BaseAmount /BaseCurrency and the Amount and Currency in the current transaction
request
Mandatory when doing transaction in foreign currency
PANFormat tag String An enumeration specifying how to obtain the PAN details
PAN Required tag: PAN. If PANFormat is not specified, this value is used if the PAN
tag is set and the Track2 tag not set.
Track2 Required tag: Track2. If PANFormat is not specified, this value is used if the
Track2 tag is set.
41
TransactionIndex/ Required tags: PAN and one of TransactionIndex or
OriginalMerchantReferenc OriginalMerchantReference. The PAN is the dotted-out number of the card
e/ used with the original transaction. The full PAN is looked up using the given
identifier for the original transaction.
VisaCheckoutCallID Required tags: VisaCheckoutCallID
The VisaCheckoutCallID is used to retireve the Payment Data from the Visa
Checkout Process.
MSISDN Required tag: MSISDN. If in addition, AccountType, PAN (full) and ExpiryDate
are provided, the transaction also serves as a registration of the MSISDN,
thereby enabling future transactions with MSISDN only.
CardHolderPresence tag String 0 128 Specify how the cardholder is involved when a virtual transaction is performed. This tag supersedes the
ElectronicCommerceIndicator tag. The value is a comma separated list of the following:
CardPresent Gets set in the output when a full Track2 was specified in the request. This
value may also be set in the request when the card number was keyed on a
POS device.
CardNotPresent The physical plastic of the card was not present when the request was sent to
the gateway.
eCommerce Gets set in the output when one of the ElectronicCommerceIndicator values
was specified in the request
ThreeDSecure Encryption (SSL) used between CardHolder and Merchant. ThreeDSecure was
successful
ThreeDSecureAttempted Encryption (SSL) used between CardHolder and Merchant. ThreeDSecure was
attempted unsuccessfuly
SecureChannel Encryption (SSL) used between CardHolder and Merchant. ThreeDSecure not
used
ClearChannel No encryption used between CardHolder and Merchant
MOTO Telephonic or mail order
Recurring Transactions submitted by a merchant automatically
Card Detail Parameters
Parameter Node Data Type Minimu Maximum Description
Type m Length
Length
Association tag String 0 50 The association to which the card number belongs e.g. VISA or Master card or American Express
BIN tag N 1 9 The Bank Identification Number into which PANs are grouped. Generally, this is the first two to eight digits
CardType tag String 0 50 A description of the type of the card used e.g. Credit Card, Maestro, Electron etc
Issuer tag String 0 50 If the card is local this gives a description of the institution that issued this particular card
Jurisdiction tag String 0 50 Description of whether the card is a local or international card
Result Parameters
Parameter Node Data Type Minimu Maximum Description
Type m Length
Length
Code attribute N 3 The numeric Result Code of the completed execution. See section 10.1
Description attribute String 1024 A description of the results of the completed execution. Only relevant where ResultStatus is Unsuccessful [ -
1] or Successful with warning [1]
Source attribute String 128 The source of the result
Previous attribute Boolean In most cases returns false, indicating that the other result values refer to the immediately completed
execution. For advanced usage within a Reprint, to indicate whether the result returned refers to the current
execution, or a previous execution.
42
Status attribute Z 2 The status of the completed execution
-1 Unsuccessful
0 Successful
1 Successful, with warning
3DSecure Parameters (see section 12)
Parameter Node Data Type Minimu Maximum Description
Type m Length
Length
ElectronicCommerceIndicator tag A 0 More commonly known as the ECI, it describes for virtual transactions what steps were taken to secure and
authenticate the transaction. Values are the following subset of CardHolderPresence values: ThreeDSecure,
ThreeDSecureAttempted, SecureChannel and ClearChannel.
CardHolderAuthenticationData tag Base64 28 28 For usage with Verified by Visa / MasterCard SecureCode. The CAVV or UCAF field depending on whether
the card is VISA or Master card. Note: Original binary format length = 20 bytes. Mandatory when
ElectronicCommerceIndicator = ThreeDSecure
CardHolderAuthenticationID tag Base64 28 28 For usage with Verified by Visa / MasterCard SecureCode. The Transaction ID. Note: Original binary format
length = 20 bytes. Mandatory when ElectronicCommerceIndicator = ThreeDSecure
ThreeDSecure_RequestID tag Guid 38 The RequestID that was returned as part of the Enrollment Check that will be used to retrieve data for the
Authentication Validation
ThreeDSecure_ACS_URL tag URL No Limit URL of the Access Control Server of the card-issuing bank where you need to send the
ThreeDSecure_PAReq so that the customer can be authenticated.. The field length can be very large.
ThreeDSecure_PAReq tag Base64 No Limit Digitally signed payer authentication request message that contains a unique transaction ID.The field length
can be very large.
ThreeDSecure_SignedPARes tag Base64 No Limit Digitally signed PARes message that contains the authentication result.The field length can be very large.
ThreeDSecure_VEResEnrolled tag A 1 1 Indicator that shows whether the cardholder is participating in 3DS.
UPOP SecurePlus Parameters
Parameter Node Data Type Minimu Maximum Description
Type m Length
Length
UPOP_TransactionTime tag String The time when the Merchant sends the transaction.
Date and time formatted as an ISO 8601 combined date and time string using the extended format.
- Format: YYYY-MM-DDThh:mm:ssZ
- YYYY = year
- MM = month
- DD = day
- hh = hour
- mm = minutes
- ss = seconds
UPOP_RelatedTransactionType tag String 2 2 Related Transaction Type. One of:
- Purchase
- Pre-authorization
- 01: Purchase
- 02: Pre-authorization
43
UPOP_RequestID tag Guid 38 The RequestID that was returned as part of the Request Creation that will be used to retrieve data for the
Authentication Validation
UPOP_FrontUrl tag URL 256 UPOP send the transaction result notification to the URL via cardholder’s browser
UPOP_BackUrl tag URL 256 UPOP send the transaction result notification to the URL via system
UPOP_ACPReq tag Base64 No Limit The Authentication Request message to be posted to the UPOP authentication server
UPOP_Endpoint tag URL The UPOP authentication server endpoint where the Authentication Request message must be posted via
cardholder’s browser
UPOP_ACPRes tag Base64 No Limit The Authentication Response message received from the UPOP authentication server
POS Parameters (see section Error: Reference source not found)
Parameter Node Data Type Minimu Maximum Description
Type m Length
Length
DeviceFirmware tag String 64 The firmware (software) currently loaded on the device. This may be set as an integer
DeviceFirmwareVersion tag String 64 The version of the firmware (software) currently loaded on the device.
DevicePINKey tag Hex 32 32 Master/Session encryption specific: The device PIN Key encrypted under the device master key i.e.
DMK(DPK)
MACDevicePINKey tag Hex 8 8 Master/Session encryption specific: The MAC of the device PIN Key i.e. MAC(DPK)
AccountType tag A 0 32 The type of account that this transaction relates to (known to the cardholder)
Savings Credit t
Cheque NotSpecified
AvailableBalance tag N 12 The available amount in the cardholders account given in the smallest unit of currency of the cardholder (not
necessarily the currency of the merchant)
DisplayAvailableBalance tag String 25 The AvailableBalance returned in a currency aware printable format
CashAmount tag N 12 The Cash (back) portion of the Amount. Subject to the constraint: 0 <= CashAmount <= Amount
CurrentBalance tag Z 12 The current balance in the cardholders account given in the smallest unit of currency of the cardholder (not
necessarily the currency of the merchant)
DisplayCurrentBalance tag String 25 The CurrentBalance returned in a currency aware printable format
DeviceMake tag String 64 The manufacturer of the device (terminal). e.g. Dione / Sagem
DeviceSerialNumber tag String 64 The serial number of the device (terminal)
DeviceCycle tag String 20 The current batch id of the device (terminal)
PINBlock tag Hex 16 16 The cardholders PIN encrypted using the current device pin key
KeySerialNumber tag Hex 20 20 DUKPT encryption specific: Mandatory input parameter needed in decryption of a DUKPT PINBlock.
Track2KeySerialNumber tag Hex 20 20 DUKPT Track2 encryption specific: Mandatory input parameter needed in decryption of a DUKPT Track2.
PANKeySerialNumber tag Hex 20 20 DUKPT PAN encryption specific: Mandatory input parameter needed in decryption of a DUKPT PAN.
EMV Parameters (see section 15)
EMV_AuthorisationRequestCryptogr tag Hex 16 EMV tag 9F26
am
EMV_ApplicationIdentifier tag Hex 32 EMV tag 9F06
EMV_ApplicationInterchangeProfile tag Hex 4 EMV tag 82
EMV_CardSequenceNumber tag Hex 2 EMV tag 5F34
EMV_ApplicationTransactionCounter tag Hex 4 EMV tag 9F36
EMV_ApplicationVersion tag Hex 4 EMV tag 9F08
EMV_CardHolderVerificationMethod tag Hex 6 EMV tag 9F34
Result
EMV_CryptogramInformationData tag Hex 2 EMV tag 9F27
EMV_IssuerApplicationData tag Hex 64 EMV tag 9F10
EMV_TerminalCapabilities tag Hex 6 or 8 EMV tag 9F33
44
EMV_TerminalType tag N 2 EMV tag 9F35
EMV_TransactionType tag N 2 EMV tag 9C
EMV_TerminalVerificationResult tag Hex 10 EMV tag 95
EMV_UnpredictableNumber tag Hex 8 EMV tag 9F37
EMV_TransactionStatusInformation tag Hex 4 EMV tag 9B
EMV_IssuerAuthenticationData tag Hex 16 or 32 EMV tag 91
EMV_IssuerScriptTemplate1 tag Hex 999 EMV tag 71
EMV_IssuerScriptTemplate2 tag Hex 999 EMV tag 72
EMV_ResponseCode tag AN 2 EMV tag 8A
Procurement Parameters (see section Error: Reference source not found)
Parameter Node Data Type Minimu Maximum Description
Type m Length
Length
CustomerReferenceIdentifier tag AN 17 Description allocated by the merchant to be printed on the Cardholders statement
CustomerVATRegistrationNumber tag AN 13 The VAT registration number of the Customer if available
DestinationCountry tag A 2 2 The ISO code for the country of residence of the Merchant. e.g. ZA, US, GB
DestinationZIPCode tag AN 0 10 The Customers Destination ZIP code
NationalTax tag N 0 12 The VAT amount of the transaction in the currencys smallest denomination. Depending on the
NationalTaxIndicator this may be included or in addition to the Amount field
NationalTaxIndicator tag N 0 1 Indicates whether VAT is applicable to this transaction.
0 NationalTax is NOT included
1 NationalTax is included
OrderDate tag A 0 6 The date that the order was placed. This is not necessarily the same as the PuchaseDate. Defaults to current
Date
YYMMDD YearMonthDay
PurchaseIdentifier tag AN 0 25 Optional description allocated by the Merchant to be displayed on the Merchants statement. Defaults to
MerchantReference.
ShipFromZIPCode tag AN 0 10 The ZIP code of the Merchant (Shipping source ZIP code)
ShippingAmount tag N 0 12 The amount charged to the customer for shipping charges in the currencys smallest denomination.
ShippingTaxRate tag 0 4 The VAT rate that applies to the ShippingAmount. It is a percentage and not the actual value. The value is the
rate multiplied with 10000.
TransactionDiscount tag N 0 12 Discount value for the transaction as a whole, it is the result of individual line item percentage discounts
applied to line items. In the currency’s smallest denomination
UniqueVATInvoiceReferenceNumber tag AN 0 15 The invoice number allocated by the merchant and appears on the merchant’s invoice given to the customer.
This is an optional field is independent of the Merchant Reference.
Procurement LineItem Parameters (see section Error: Reference source not found)
Parameter Node Data Type Minimu Maximum Description
Type m Length
Length
Discount subtag N 0 12 The total discount for the line item in the currencys smallest denomination.
ItemCommodityCode subtag N 0 4 The ISO commodity code for the line item unit.
ItemDescriptor subtag N 0 26 A description for the line item unit.
ProductCode subtag AN 0 12 The merchants code for the line item unit.
Quantity subtag N 0 8 The total number of line item units.
TaxRate subtag N 0 4 The VAT rate applicable to the line item. The value is the rate multiplied with 10000.
Total subtag N 0 12 The total amount for the line item in the currencys smallest denomination. The value equals Quantity x
UnitCost - Discount.
45
UnitCost subtag N 0 10 The cost of a line item unit in the currencys smallest denomination.
UnitOfMeasure subtag AN 0 12 The measurement unit description.
PassengerFirstName subtag AN 0 60 Passengers first name.
PassengerLastName subtag AN 0 60 Passengers last name
PassengerID subtag AN 0 32 ID of the passenger to whom the ticket was issued. For example, you can use this field for
the frequent flyer number
PassengerStatus subtag AN 0 32 Your companys passenger classification, such as with a frequent flyer program. In this case,
you might use values such as standard, gold, or platinum.
PassengerType subtag AN 0 32 Passenger classification associated with the price of the ticket. You can use one of the
following values:
• ADT: Adult
• CNN: Child
• INF: Infant
• YTH: Youth
• STU: Student
• SCR: Senior Citizen
• MIL: Military
Note: The fields in Blue will only be used when doing CyberSource Advanced Fraud Screening.
Fleet Parameters (see section Error: Reference source not found)
Parameter Node Data Type Minimu Maximum Description
Type m Length
Length
CustomerReferenceIdentifier tag AN 8 Contains two subfields, and is in the format: “Type” + “Odometer Reading”
Type Private (P) or Business (B). Max Length = 1. Data Type = A
Odometer reading Odometer reading. Max Length = 7. Data Type = N
Fleet LineItem Parameters (see section Error: Reference source not found)
Parameter Node Data Type Minimu Maximum Description
Type m Length
Length
ProductCode subtag AN 0 64 The iVeri Product Code for the Fleet LineItem. The latest set of iVeri Fleet Product Codes can be obtained via
the Inventory download command (Only use the ProductCodes with Type=Fleet). The set at time of writing is
provided here.
FLEET OIL Oil
FLEET SERVICE Service
FLEET TYRES Tyres
FLEET ACCIDENTS Accidents
FLEET ACCESSORIES Accessories
FLEET BRAKES Brakes
FLEET EXHAUSTS Exhausts
FLEET SHOCK Shock absorbers
ABSORBERS
FLEET BATTERIES Batteries
FLEET GLASS Glass
FLEET TRUCK STOP Truck Stop
FLEET FORECOURT Forecourt Shop
SHOP
46
FLEET HOTEL Hotel Expenses
EXPENSES
FLEET TOLL GATE Toll Gate
FLEET MISCELLANEOUS Miscellaneous
FLEET PREMIUM Premium Fuel
FLEET REGULAR Regular Fuel
FLEET SASOL Sasol Fuel
FLEET DIESEL Diesel Fuel
FLEET UNLEADED Unleaded Super Fuel
SUPER
FLEET UNLEADED Unleaded Premium Fuel
PREMIUM
FLEET AVIATION Aviation Fuel
Quantity subtag N 0 8 The total number of line item units
QuantityDecimalPlaces subtag N 0 4 The number of implied decimals in the Quantity
UnitCost subtag N 0 10 The cost of a line item unit in the currencys smallest d enomination
47
19:55 GMT+0200
11:25 GMT-03:00
11:25 GMT-0300
Note When specifying an offset from GMT,
the format must be exactly as specified in the
example. Insert no spaces between the time
zone and the offset.
JourneyType subtag AN 0 32 Type of travel, for example: one way or round trip.
Note: The fields in Blue will only be used when doing CyberSource Advanced Fraud Screening and will not be recorded on the iVeri system.
48
ForeignExchange Enquiry Request Parameters
Parameter Node Data Type Minimu Maximum Description
Type m Length
Length
Currency subtag A 3 3 The ISO 4217 currency code of the value of the transaction. e.g. USD or ZAR or GBP
Amount subtag N 0 11 The total value of the transaction in the smallest unit of the currency specified (eg in cents)
ForeignExchange Tag AN Contains a collection of ForeignExchangeItems
ForeignExchangeItem Parameters
Parameter Node Data Type Minimu Maximum Description
Type m Length
Length
Version attribute AN 0 20 Reserved for Future use
ForeignExchangeID subtag Guid 38 38 Universally Unique Identifier.
Note: This tag must be set when a transaction is done to the gateway with a foreign currency
ForeignExchangeProvider subtag AN 0 64 Foreign exchange provider the request was done to
BaseCurrency subtag A 3 3 Merchant’s local currency. alphabetic currency code
BaseAmount subtag N 0 11 Amount of transaction in base currency
ForeignCurrency subtag N 3 3 Cardholder’s currency. alphabetic currency code
ForeignAmount subtag AN 0 11 Amount converted to ForeignCurrencyThis is the foreign exchange rate used for DCC or MCP transactions
ExchangeRate subtag N 0 20 This is the foreign exchange rate used for DCC or MCP transactions.
ExpiryDateTime subtag N 0 8 Shows the expiration date and time in the format of UTC (Coordinated Universal Time).
MarginPercentage This value is the markup applied to foreign exchange rate for the transaction.
This markup is also referred to as the rate margin which corresponds to the margin that is applied to the
wholesale foreign exchange rate used in the DCC transaction.
CommissionPercentage Reserved for the purpose of meeting regulatory requirements where applicable.
49
5.5 Parameters per Action
5.5.1 Input Parameters per Action
The following table uses the following key for input parameters per action:
M Mandatory
O Optional
C Conditional
blank not relevant
ThreeDSecureValidateAuthentication
MasterPassQuickResponseCode
MasterPassPaymentNotification
ThreeDSecureCheckEnrollment
Debit with VisaCheckoutCallID
DynamicCurrencyConversion
Credit with TransactionIndex
Debit with TransactionIndex
Authorisation with Track2
MultiCurrencyPricing
Get Device PIN Key
PANToken Enquiry
Credit with Track2
Debit with Track2
RequestForDebit
Credit with PAN
Debit with PAN
Ping
Void
Core ApplicationID M M M M M M M M M M M M M M M M M M M M M M M M M M
Core Category M M M M M M M M M M M M M M M M M M M M M M M M M M M
Core CertificateID M M M M M M M M M M M M M M M M M M M M M M M M M M M
Core Gateway O O O O O O O O O O O O O O O O O O O O O O O O O O O
Core Command M M M M M M M M M M M M M M M M M M M M M M M M M M M
Core Mode M M M M M M M M M M M M M M M M M M M M M M M M M M M
Common Amount M M M M M O M M M O M M O M M M M M
Common AuthorisationCode O O O
Common BudgetPeriod O O O O O O O
Common CardSecurityCode O O O O O O O O O
Common PAN M M M M M M M O
Common Currency O O O O O O O O O O M M M M M
Common VisaCheckoutCallID M
Common ExpiryDate M O O O O O O O M M M
Common CardholderName M
Common MerchantReference M M M M M M M M M M M M M M M M M M
Common OriginalMerchantReference C C C
Common MerchantTrace O O O O O O O O O O O O O
Common OriginalMerchantTrace C
Common OriginalRequestID C
Common PurchaseDate O O O O O O O O O O O O O
Common PurchaseTime O O O O O O O O O O O O O
Common StartDate O O O O O O O
Common Terminal O O O O O O O O O O O O O
Common Track2 M O O M M O M O M M
Common TransactionIndex M M M M
Common MobileMoneyID O
Common MSISDN C
50
Context Parameter
ThreeDSecureValidateAuthentication
MasterPassQuickResponseCode
MasterPassPaymentNotification
ThreeDSecureCheckEnrollment
Debit with VisaCheckoutCallID
DynamicCurrencyConversion
Credit with TransactionIndex
Debit with TransactionIndex
Authorisation with Track2
MultiCurrencyPricing
Get Device PIN Key
PANToken Enquiry
Credit with Track2
Debit with Track2
RequestForDebit
Credit with PAN
Debit with PAN
Ping
Void
Common PANFormat O M O M O
Common PANMode O O O O O O O O O O O O O O O O
Common CardHolderPresence O O O O O O
Common CardholderEmail M
Common OrderDescription O
Common AllowBudgetPeriod O
Common RequestExpiryDate O
Common CreateTransactionUrl O
3DSecure ElectronicCommerceIndicator O O O O O
3DSecure CardHolderAuthenticationData O O O O O
3DSecure CardHolderAuthenticationID O O O O O
3DSecure ThreeDSecure_RequestID M
3DSecure ThreeDSecure_SignedPARes M
MasterPass MasterPassAction M
MasterPass MasterPassMerchantID M
MasterPass MasterPassShortDescription
MasterPass MasterPassCodeExpiryDate
MasterPass MasterPassMerchantName
MasterPass MasterPassCode
MasterPass MasterPassTransactionID
POS AccountType O O
POS CashAmount O
POS DeviceFirmware O O O
POS DeviceFirmwareVersion O O O
POS DeviceMake M M M
POS DeviceSerialNumber M M M
POS DeviceCycle O O O O O O O
POS KeySerialNumber C C
POS Track2KeySerialNumber C C C C C C
POS PANKeySerialNumber C C C C C
Procurement CustomerReferenceIdentifier O O O O O O
Procurement CustomerVATRegistrationNumber O O O O O O
Procurement DestinationCountry O O O O O O
Procurement DestinationZIPCode O O O O O O
Procurement NationalTax O O O O O O
Procurement NationalTaxIndicator O O O O O O
Procurement OrderDate O O O O O O
Procurement PurchaseIdentifier O O O O O O
Procurement ShipFromZIPCode O O O O O O
Procurement ShippingAmount O O O O O O
Procurement ShippingTaxRate O O O O O O
Procurement TransactionDiscount O O O O O O
Procurement UniqueVATInvoiceReference O O O O O O
Number
Procurement Discount O O O O O O
: LineItem
Procurement ItemCommodityCode O O O O O O
51
C
Y
Fleet
Fleet:
Fleet:
Fleet:
blank
LineItem
LineItem
LineItem
: LineItem
: LineItem
: LineItem
: LineItem
: LineItem
: LineItem
: LineItem
: LineItem
Context
Procurement
Procurement
Procurement
Procurement
Procurement
Procurement
Procurement
Total
not relevant
TaxRate
Quantity
Quantity
UnitCost
UnitCost
Parameter
ProductCode
ProductCode
ItemDescriptor
UnitOfMeasure
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O O O
O O O O
O O O O
O O O O
O O O O
O O O O
O O O O
O O O O
O O O O
O O O O
O O O O
52
MasterPassPaymentNotification
DynamicCurrencyConversion
MultiCurrencyPricing
Y relevant (may be populated)
C returned if supported by Acquirer
blank not relevant
Context Parameter
ThreeDSecureValidateAuthentication
MasterPassQuickResponseCode
MasterPassPaymentNotification
ThreeDSecureCheckEnrollment
DynamicCurrencyConversion
Credit with TransactionIndex
Debit with TransactionIndex
Authorisation with Track2
MultiCurrencyPricing
Get Device PIN Key
PANToken Enquiry
Credit with Track2
Debit with Track2
RequestForDebit
Credit with PAN
Debit with PAN
Ping
Void
Core ApplicationID Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
Core Command Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
Core Mode Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
Core RequestID Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
Common Acquirer Y Y Y Y Y Y Y Y Y Y Y Y Y
Common AcquirerDate Y Y Y Y Y Y Y Y Y Y Y Y Y
Common AcquirerReference Y Y Y Y Y Y Y Y Y Y Y Y Y
Common AcquirerTime Y Y Y Y Y Y Y Y Y Y Y Y Y
Common Amount Y Y Y Y Y Y Y Y Y Y Y Y
Common DisplayAmount Y Y Y Y Y Y Y Y Y Y Y Y
Common AuthorisationCode Y Y Y Y Y Y Y Y Y Y Y
Common Currency Y Y Y Y Y Y Y Y Y Y Y C Y
Common MerchantName Y Y Y Y Y Y Y Y Y Y Y
Y
Common MerchantAddress Y Y Y Y Y Y Y Y Y Y Y
Y
Common MerchantCity Y Y Y Y Y Y Y Y Y Y Y
Y
Common MerchantCountryCode Y Y Y Y Y Y Y Y Y Y Y
Y
Common MerchantCountry Y Y Y Y Y Y Y Y Y Y Y
Y
Common MerchantReference Y Y Y Y Y Y Y Y Y Y Y Y Y
Common MerchantTrace Y Y Y Y Y Y Y Y Y Y Y Y
Common MerchantUSN Y Y Y Y Y Y Y Y Y Y Y Y Y
Common PAN Y Y Y Y Y Y Y Y Y Y Y Y Y Y
Common ReconReference Y Y Y Y Y Y Y Y Y Y Y Y
Common Terminal Y Y Y Y Y Y Y Y Y Y Y Y
Common TransactionIndex Y Y Y Y Y Y Y Y Y Y Y Y Y
Common MobileMoneyID C
Common PANMode Y Y Y Y Y Y Y Y Y Y Y Y Y Y
Y
Common CardHolderPresence Y Y Y Y Y Y Y Y Y Y Y Y Y
Y
Common TransactionUrl C
3DSecure ElectronicCommerceIndicator C C C C C C C C C C C Y Y
53
Context Parameter
ThreeDSecureValidateAuthentication
MasterPassQuickResponseCode
MasterPassPaymentNotification
ThreeDSecureCheckEnrollment
DynamicCurrencyConversion
Credit with TransactionIndex
Debit with TransactionIndex
Authorisation with Track2
MultiCurrencyPricing
Get Device PIN Key
PANToken Enquiry
Credit with Track2
Debit with Track2
RequestForDebit
Credit with PAN
Debit with PAN
Ping
Void
3DSecure CardHolderAuthenticationData Y Y
3DSecure CardHolderAuthenticationID Y Y
3DSecure ThreeDSecure_RequestID Y Y
3DSecure ThreeDSecure_ACS_URL Y
3DSecure ThreeDSecure_PAReq Y
Card Detail Association Y Y Y Y Y Y Y Y Y Y Y Y
Y
Card Detail BIN Y Y Y Y Y Y Y Y Y Y Y Y Y
Y
Card Detail CardType Y Y Y Y Y Y Y Y Y Y Y Y
Y
Card Detail Issuer Y Y Y Y Y Y Y Y Y Y Y Y
Y
Card Detail Jurisdiction Y Y Y Y Y Y Y Y Y Y Y Y
Y
Result Code Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
Result Description Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
Result Source Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
Result Status Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
POS AccountType C C
POS AvailableBalance C Y
POS CurrentBalance C Y
POS DisplayAvailableBalance C C
POS DisplayCashAmount Y Y
POS DisplayCurrentBalance C C
POS DevicePINKey Y
POS MACDevicePINKey Y
MasterPass MasterPassCode O
MasterPass MasterPassCodeExpiryDate O
MasterPass MasterPassMerchantName O
MasterPass MasterPassShortDescription O
MasterPass MasterPassMerchantId Y
Forex ForeignExchangeID Y Y
Forex ForeignExchangeProvider Y Y
Forex BaseCurrency Y Y
Forex BaseAmount Y
Forex ForeignCurrency Y Y
Forex ForeignAmount Y
Forex ExchangeRate Y Y
Forex ExpiryDateTime Y Y
Forex MarginPercentage Y Y
Forex CommissionPercentage Y Y
54
6. TRANSACTION SEQUENCES AND
TERMINOLOGY
6.1 Overview
An iVeri transaction is the combination of a transaction request (command: Authorisation,
AuthorisationReversal, Debit, Credit, Void), and its corresponding response.
A transaction sequence relates to the complete set of movement of goods and services and can
include many related transactions.
The players in an iVeri transaction generate the following fields to identify a transaction sequence:
Player Transaction sequence identifier
Merchant Merchant Reference
iVeri Gateway Transaction Index
55
A MerchantTrace is a unique identifier for each request sent to the gateway and is an optional
parameter. The MerchantTrace corresponds to a database index that was generated before a
request was sent to the gateway. In short, the MerchantTrace refers to a particular step in the
transaction sequence.
[Example]:
For a Debit followed by an immediate Void (cancellation of ticket etc): The
MerchantReference remains the same for both steps of the transaction sequence, while the
MerchantTrace is different for the Debit and Void.
TransactionIndex refers to the unique identifier given by the iVeri Gateway to a set of related
transactions. When a TransactionIndex is an input parameter, then the command is referred
to as a “follow up”. Therefore, the actions with the suffix “with TransactionIndex” mean “as a
Follow up transaction”.
Follow up transactions by default use the same card information that was set in the initial
transaction, however by default the follow up is considered a Card not present (Keyed)
transaction.
Specifying one of the following mutually exclusive optional follow up input parameters can
change the default behaviour:
Track2 : the follow up transaction is considered a “Swiped” transaction
ExpiryDate: applicable to change when the original expiry date is in the past.
56
6.4 Reversal transaction (Negative transaction)
A reversal transaction is an equal but opposite transaction to a previously successful transaction.
This is typically a refund (i.e. a credit following a debit). A reversal typically results in both legs of
the transaction being shown on the merchants and cardholders’ statements.
A merchant may initiate a reversal any time after a transaction was processed. A merchant can
perform the reversal either by:
performing a follow up transaction within 6 months of the original iVeri transaction,
or
initiating a new transaction request with the cardholder’s details.
6.5 Sequences
The possible transaction sequence flow with an initial Authorisation is the following:
57
The possible transaction sequence flow with an initial Debit is the following:
The possible transaction sequence flow with an initial Credit is the following:
58
7. ENSURING END TO END TRANSACTION
INTEGRITY
7.1 Overview
Transaction integrity can be seen as ensuring that all players within an individual iVeri transaction
agree on its outcome. When a Card Holder gets his statement from his Issuer, it must correspond
to his instruction to the merchant for a corresponding transaction.
When transaction integrity is compromised either willfully (fraud) or unintentionally, it can result in
a disputed transaction with legal impacts.
When a merchant receives a successful response for a transaction request, and thereafter
“something goes wrong”, then the Merchant has the option to “void” the transaction.
Examples of “something goes wrong” are:
communications error between merchant and cardholder
printer could not print the invoice
problem accessing merchant database
A merchant can also call “void” when s/he does not know whether a response was received from
the iVeri Gateway (for example a power failure).
A successful void (cancellation) typically results in the transaction not being shown on the
merchant nor the cardholders’ statements.
59
Transaction sets are settled as a group at predefined periods (cycle cut off time).
A “Void” can only be successful if the transaction being cancelled has not passed its cut off time.
Therefore, when a void is required, it should be done as soon as possible (particularly since cycle
cut off time is out of the control of a merchant). If the void request is submitted too late, then the
void request will fail, and a separate reversal transaction would be required.
If the iVeri Gateway receives a Void request referring to a MerchantTrace or RequestID that it
has no knowledge of, then “Void successful” is replied.
A merchant implementing “Void” command requires a void repeat mechanism which only ends
upon receiving a “Void successful” or “Void unsuccessful” response.
60
Implement a retry mechanism discussed below without using a Void.
7.2.2 Retry
A merchant may want to retry a transaction after receiving an unsuccessful response.
If a merchant is not sure what the iVeri Gateway replied previously, then they might even want to
retry after a receiving a successful response.
Typically, a retry is relevant after receiving one of the following results on a transaction request:
Result Code Result Description Action
1 Timeout Transaction can be automatically retried a minute later
9 Unable to process Transaction can be automatically retried a minute later
255 General Error (Exception) Transaction can be retried a minute later after the problem given in the ResultDescription
is fixed (which may require manual intervention)
A retry is relevant after the above responses because then one would expect a different result
code. Nevertheless, a retry is supported after other result codes (eg Successful / Denied / Hot
card / Black card) for when there is some change that could cause the transaction to be approved,
or when the original reply is unknown to the merchant.
The following shows three different approaches to retries. A retry is only recommended in using
the first approach, however all these approaches are supported.
61
If the previous attempt is in process, then “Transaction in process” (ResultCode 9 :
Unable to process transaction) is returned. The retry can then be reattempted a
minute later.
If the merchant is only performing debits, and there is a database table where the unique identifier
corresponds to the reference number given to a card holder, then it may make sense for the
MerchantReference and MerchantTrace to be the same.
NB. The NedbankBICISO provider does not allow a follow-up debit to be Voided. If a transaction
cannot be Voided and no response is received from the iVeri Gateway, the transaction has to be
retried instead. For this, all transactions done with the ApplicationID has to be with
MerchantTrace. Once a response is received for the follow-up debit, a follow-up credit has to be
performed to undo the debit if it was successful.
62
For merchants who cannot store an individual request identifier before sending the request to the
iVeri Gateway, see section 9.3.3 on “Recurring transaction checking”.
7.2.3 Enquiry
A merchant with a doubt of the current status of a transaction can determine its status by:
Performing a “Transaction lookup” within iVeri BackOffice
Download a “Reconciliation file” (can be automated with iVeri FileTransfer) and
compare records.
Check an immediate notification mechanism (such as email for iVeriBatch clients,
and SMS for iVeri Voice clients)
Look in the logs for an exception message containing details of a misconfiguration
or a coding error.
7.2.4 Conclusion
The Void Retry and Enquiry mechanisms discussed above help to either fix an individual
transaction integrity, or resolve the doubt around what the current state is.
A merchant should automate at least one of these mechanisms.
If a Void is unsuccessful, or the current state does not correctly correspond to the corresponding
transfer of goods or services, then a follow up reversal transaction may be required.
Nevertheless, the iVeri Gateway provides three mechanisms to protect against duplicate
transactions. Specifying a unique MerchantTrace is a client-side configuration, while the latter
to require contacting your local distributor.
63
7.3.1 Specify a unique Merchant Trace for each step in a Transaction Sequence
As mentioned in section 8.2, a MerchantTrace is a unique identifier for each request sent to the
gateway and is an optional parameter. The MerchantTrace corresponds to a database index that
was generated by the merchant before a request was sent to the gateway. In short, the
MerchantTrace refers to a particular step in the transaction sequence.
The recommended way to control duplicate transactions is to always specify a MerchantTrace.
This has two benefits
If a merchant does not receive a reply to a request, then they have the choice of
either voiding (9.2.1) or retrying (9.2.2) the transaction by using the same
MerchantTrace.
A merchant can re-use a MerchantReference with different MerchantTraces
for the same TransactionIndex.
64
By default, recurring transaction checking is disabled.
When enabled, if a transaction is attempted with the same PAN, Amount, Command combination,
but a different MerchantReference as a previously successful transaction done within a period,
then the subsequent transaction request will fail.
If a Merchant explicitly requests this to be enabled, a time period (in seconds / minutes / hours)
should be specified. This is typically 5 minutes.
If a Merchant uses MerchantTrace to uniquely assign each individual transaction before
submission to the iVeri Gateway, then this option should not be needed.
This option is recommended for merchants who are forced to have poor state handling - for
example those that generate a merchant’s reference in memory and only write to the database
after sending a request to the iVeri Gateway.
Note that even when this option is disabled, an acquirer or issuer “downstream” may have their
equivalent option enabled.
65
8. COMMON PARAMETERS
66
(Not OK) (Exception) - Could not establish a connection to the iVeri the error description and done an action to fix it
Gateway due to no network connection from
the client.
- The merchant code is calling the iVeri
Gateway incorrectly.
A merchant specifies the mode of a transaction by setting Mode as “Test” or “Live”, and sends
their corresponding Test or Live ApplicationID.
Sending the following card numbers to the Test environment has the following results:
PAN Result
4242424242424242 or 5959595959595959 returns "Authorised"
2121212121212121 randomly returns "Hot Card", "Please Call" or "Denied"
5454545454545454 randomly returns "Unable to process" or times out
All other card numbers returns "Invalid card number"
(eg "1111222233334444")
For information on testing PIN based accounts, see “PIN based transactions”.
Merchants are requested not to abuse the test environment more than their realistic
requirements.
A merchant abusing the Test environment may have their use of it suspended.
8.3 Track2
The Track2 is used for card present transactions and is sent to the iVeri Gateway after it is read
by the swipe device from the magnetic stripe on the card. It is inclusive of the beginning and end
markers being ; and ? respectively.
The Track2 sent to the iVeri Gateway must be in the following format:
67
Field Description Length Format
(bytes)
SS Start Sentinel 1 ;
PAN Primary Account Number 19 max Digits
FS Field Separator 1 =
DATE Expiration Date (YYMM) 4 Digits
SVC CD Service Code 3 Digits
Discretionary Data Optional Issuer Data variable Digits
ES End Sentinel 1 ?
Total cannot exceed 39 bytes 39
The Track2 read from by the card reader typically contains the following fields (at most 40 bytes):
SS PAN FS DATE SVC CD Discretionary Data ES LRC
The 1-byte Longitudinal Redundancy Check (LRC) should not be sent to the iVeriGateway.
The End Sentinel (ES) may need to be converted to? (0x3F)
68
5 PIN Required – Goods and services only at point of Yes No
interaction (no cash back)
6 Prompt for PIN if PIN Pad Present Yes Yes
7 Prompt for PIN if PIN Pad Present – Goods and services Yes No
only at point of service (no cash back)
69
9. SPECIALIZED TECHNIQUES
9.1 Ping
The Ping command is primarily used to determine if the connection between the Merchant and
the Acquirer is down. If the connection is down, then a Ping can be used to poll the iVeri Gateway
to see when the status is back up.
This is different to checking network connectivity to the iVeri Gateway, where a network ping
should be employed. The Ping takes an ApplicationID as a mandatory input parameter and is
sometimes referred to as an ApplicationID Ping.
An Acquirer can route a transaction to many different Associations, and an Association can route
a transaction to many different Issuers.
An individual Transaction may reply to with a ResultCode of 1 or 9, meaning something is wrong
between the Merchant and the card issuer. However, in such a case the merchant does not know
if the problem was between the Acquirer and an Issuer (due to the routing of the PAN), or between
the Merchant and the Acquirer.
Although the individual transaction can be automatically retried, the Merchant may have some
business rules for the case when the connection between the Merchant and the Acquirer is down,
such as:
70
go into Store and Forward mode
notify a certain person
show a different website page upon checkout
A merchant abusing the Ping command may have their use of it suspended.
71
The following is a diagram showing how a Ping can be effectively used.
“S&F” refers to “Store and Forward”, otherwise known as an Offline transaction.
1. Exclude the right-most digit from the calculation as this is the actual check-digit to
be examined for validity.
72
2. Starting with the 2nd to the last digit and moving right to left, alternatively multiply
each successive digit by 2 and 1 respectively.
3. Sum the integers comprising the product obtained from each of the calculations.
4. Subtract the resulting sum from the next higher multiple of ten (10). The resulting
value is the desired account number check-digit.
See section 20
73
10. THREEDSECURE (ALSO KNOWN AS
“VERIFIEDBYVISA” OR “MASTERCARD
SECURECODE”)
“Verified by VISA” (VbV), “MasterCard SecureCode” and “American Express SafeKey” are online
services that use personal passwords or identity information to help protect against unauthorised
usage of VISA, MasterCard or American Express cards within the Internet environment.
CardHolderAuthenticationID (XID)
along with the rest of the transaction information and sends out the authorisation to the payment
network.
74
SecureChannel or ClearChannel is whether SSL is used between the
cardholder and the merchant.
“CardHolderAuthenticationData” which holds the base64 encoded CAVV
data
“CardHolderAuthenticationID” which holds the base64 encoded XID data
These tags are only needed to be set in an initial transaction, not when a TransactionIndex is
set.
In other words, if a merchant performs an Authorisation and then a follow up Debit, then the
above tags need only be set within the Authorisation.
75
10.1.3 3DSecure Process Flow Diagram
76
10.1.4 3DSecure implementation to Bankserv
The Centinel MAPS (Merchant Authentication Processing System) performs the required
interaction, message formatting and processing required by the different payment authentication
initiatives such as:
Verified by Visa
MasterCard SecureCode
SPA etc.
The Centinel MAPS product is a product of Cardinal Commerce and is distributed in South Africa
by Bankserv. The Centinel MAPS service is hosted by Bankserv.
ProcessorID :1000
Password : DeMo123
MerchantID : 12345678
The Centinel MAPS test cards are available within the “CNP Secure Test Cards” document. These
test cards are different to the iVeri test cards. Therefore, when sending test cards to Centinel, use
their test cards, and thereafter when sending the transaction to iVeri, set the card information
according to section 8.2.
77
URL (MPI): https://msgnedcor.bankserv.co.za/maps/txns.asp
ProcessorID :1000
Password : (Please request this from BankServ, send an email to [email protected] with
your merchant number and Processer ID)
Sample Message:
<CardinalMPI>
<MsgType>cmpi_lookup</MsgType>
<Version>1.3</Version>
<ProcessorId>1000</ProcessorId>
<MerchantId>12345678</MerchantId>
<OrderNumber>IVERI00001</OrderNumber>
<PurchaseAmount>ZAR11</PurchaseAmount>
<RawAmount>11</RawAmount>
78
<PurchaseCurrency>710</PurchaseCurrency>
<PAN>4242424242424242</PAN>
<PANExpr>0410</PANExpr>
</CardinalMPI>
This message contains all the required information supplied by the cardholder in
order to check the enrollment of the cardholder.
Based on the card number range stored within Centinel MAPS, a Verify Enrollment
Request (VEReq), message will be sent to the Enrollment directory server.
The Enrollment directory server will send the VEReq to the cardholders Issuing
Bank Access Control Server (ACS) where it will verify the enrollment status.
The Verify Enrollment Response (VERes), is then passed back to the Directory
server with the corresponding ACS url, if applicable.
The information is then passed back to Centinel MAPS where it is verified and the
Payment Authentication Request (PAReq) is created.
The lookup response is then returned to the Merchant, Containing the following
values:
FieldName Description
ErrorDesc Application error description for the associated errornumber
ErrorNo Application error number, non zero, encountered while attempting to process the message request
TransactionId This number is required to be passed on the cmpi_authenticate message
Payload Contains the encoded PAReq generated by MAPS, available if Enrolled = Y
SPSHiddenFields Contains the SPA hidden form fields, Available if Master card transaction
Enrolled CardHolder enrolled status
(Y - enrolled, N - not enrolled, U - Cardholder enrolled but authentication unavailable)
ACSUrl Contains the fully qualified path of the Issuers ACS, this is used by the merchant to redirect the Cardholder,
available if Enrolled = Y
Sample Message:
<CardinalMPI>
<ErrorDesc></ErrorDesc>
<ErrorNo>0</ErrorNo>
<TransactionId>jMpkHtqeHD+6GTlUhafK</TransactionId>
<Payload>*******PAReqMessage********</Payload>
<SPAHiddenFields></SPAHiddenFields>
<Enrolled>Y</Enrolled>
<ACSUrl>http://dns/path</ACSUrl>
79
</CardinalMPI>
Based on the existence of the ACS url in the lookup response the Merchant will
redirect the cardholder’s browser to the corresponding ACS server. The cardholder
enters their authentication data and initiates the Authentication process directly
with the ACS server.
The ACS, in conjunction with the Card Issuer, authenticates the cardholder. The
Payment Authentication Response (PARes), is send back to the Cardholder via the
web browser.
The PARes is forwarded to the Merchant.
The Merchant initiates a cmpi_authenticate message to the Centinel MAPS,
containing the following values:
FieldName Description
MsgType cmpi_authenticate
Version Application Version identifier
TransactionId This links the cmpi_lookup with the cmpi_authenticate message together
ProcessorId Application Processor identifier
MerchantId Application Merchant identifier
PAResPayload PARes generated by the Issuer ACS
Sample Message:
<CardinalMPI>
<msg_type>cmpi_authenticate</msg_type>
<version>1.3</version>
<processor_id>1000</processor_id>
<merchant_id>12345678</merchant_id>
<order_number>AUT000191</order_number>
<PAResPayload>*******PAResMessage********</PAResPayload>
</CardinalMPI>
The authenticate response is then returned to the Merchant, Containing the following values:
FieldName Description
ErrorDesc Application error description for the associated errornumber
ErrorNo Application error number, non zero, encountered while attempting to process the message request
Cavv Transaction stain from PARes
SignatureVerification Status of the signature verification of the PARes message
(Y - validated successfully, N - not validated)
Xid Transaction Xid from PARes
EciFlag E-Commerce indicator from PARes
80
PAResStatus Transaction status from PARes
(Y, N, U or A)
Sample Message:
<CardinalMPI>
<ErrorDesc></ErrorDesc>
<ErrorNo>0</ErrorNo>
<Cavv>AAABAJEDFwAAAAAAAAMXAAAAAAA=</Cavv>
<SignatureVerification>Y</SignatureVerification>
<Xid>QPqHUYfUAn1c4OJGzEM2lEzeAYU=</Xid>
<EciFlag>05</EciFlag>
<PAResStatus>Y</PAResStatus>
</CardinalMPI>
These card authentication services deter unauthorized card use and enable you to receive
protection, liability shift, from fraudulent chargeback activity.
Payer Authentication through has been made available by iVeri with the addition of the following
Enquiry commands:
ThreeDSecureCheckEnrollment
81
ThreeDSecureValidateAuthentication
Note: The Merchant has to be enabled for 3DSecure Checking on the iVeri Gateway.
If the Enrollment Check was unsuccessful the merchant is not permitted to continue with the
transaction. Instead, ask the customer for another form of payment.
If the Enrollment Check was successful, the following parameters will be returned:
If the card is not enrolled, skip the Validate Authentication, and proceed with the authorisation.
The following would also be returned and is required to be submitted through to the gateway only
if the card was not enrolled:
82
CardHolderAuthenticationID
CardHolderAuthenticationData
ElectronicCommerceIndicator
If the card is enrolled. The merchant’s website will have to be redirected to the Access Control
Server (ACS) URL and the PAReq must be posted to it. an Example of the redirect page will be
provided in Appendix B.
ApplicationID
CertificateID
Mode
MerchantReference
Amount
Currency
PAN
ExpiryDate
ThreeDSecure_RequestID - Links the Enrollment process with the
Authentication process.
ThreeDSecure_SignedPARes - PARes message extracted from the form.
Appendix B.
If the Validate Authentication was unsuccessful the merchant is not permitted to submit the
transaction for authorisation. Instead ask the customer for another form of payment.
83
If the Validate Authentication was successful, the following parameters will be returned and is
required to be send through to the gateway:
84
11. VISA CHECK-OUT WITH ENTERPRISE
Visa Check-Out is a digital representation of a cardholders Visa Card. Cardholders can register
their debit or credit cards by downloading the Visa Check-Out app. Once cardholders have their
profiles and card details loaded in Visa Check-out, they are able to make purchases at merchants
who are accepting with Visa Check-Out payments.
*The process flow described below only show cases the interaction between cardholder,
enterprise merchant, the gateway and Visa service
85
11.1.1 Illustration of Visa Check Out with Enterprise
86
12. PAYD
PayD transactions allow the customer to make a payment using their debit card + pin, without a
POS device present (i.e. web site purchases), by using their mobile phones.
87
7. payD performs the user registration
8. ...continue as a registered user..
88
13. WEB SERVICE
The iVeri web service will allow cross platform integration with the various systems provided by
iVeri, using a common interface.
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<Execute xmlns="http://iveri.com/">
<validateRequest>true</validateRequest>
<protocol>V_XML</protocol>
<protocolVersion>2.0</protocolVersion>
<request>.........</request>
</Execute>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
<soap:Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<ExecuteResponse>
<ExecuteResult>.......</ExecuteResult>
</ExecuteResponse>
</soap:Body>
</soap:Envelope>
89
13.2 Web Service URL's
iVeri WebService uses the Gateway addresses (see section Error: Reference source not foundError:
Reference source not found) below with the following difference:
[Gateway]/iVeriWebService/Service.asmx
example:
https://portal.nedsecure.co.za/iVeriWebService/Service.asmx
Service Description
Nedbank: https://portal.nedsecure.co.za/iVeriWebService/Service.asmx?wsdl
CIM : https://portal.host.iveri.com/iVeriWebService/Service.asmx?wsdl
All methods provided by the web service return a V_XML formatted response. The GetPinBlock
method is the only exception. The GetPinBlock method will return a PINBlock data structure.
90
The V_XML request and response format is defined by the V_XML.xsd schema, which can be
downloaded from https://portal.nedsecure.co.za/schemas/v_xml/7.0/v_xml.xsd
Client code must check the respective Result fields to determine if the web service method was
successful or not. (Result fields are defined by the V_XML specification)
In order for a client to call the execute method the client certificate must be provided with the
HTTP Request.
Parameters
ValidateRequest true:
:boolean Will validate the V_XML request against the schema definition. If there are any schema
errors processing of the request will terminate and the request will not be passed on to the
relevant provider.
or
false:
Will not validate the V_XML request.
The V_XML request along with any schema errors will be passed on to the relevant
provider for processing. If there are schema errors processing will terminate in the
provider.
Set this parameter to true while testing client code and false when in a production
environment.
91
unsupported values.
Request A V_XML format string without any namespace declarations. Providing namespace
: string declarations will result in an unsuccessful call.
Additional
Validation Performed The execute method will also return unsuccessful if:
92
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
93
13.4.2 PinBlock GetPinBlock (string mode, string pan, string pin)
Description
Generate a PIN Block using the HSM (Hardware Security Module)
Returns
PinBlock data structure containing the following fields:
• ResultStatusCode
• ResultDescription
• DeviceSerialNumber
• DeviceMake
• KeySerialNumber
• PinBlock
Parameters
mode "test"
: string
"live"
94
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetPinBlock xmlns="http://iveri.com/">
<mode>string</mode>
<pan>string</pan>
<pin>string</pin>
</GetPinBlock>
</soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
95
</soap:Envelope>
Parameters
billingDetailsID Billing Group ID
:string
96
13.4.3.2 SOAP Response
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
97
13.4.4 String SubmitCertificateRequest (string certificateID, string certificateSigningRequest)
Description
Submits a PKCS10 certificate signing request. Certificate status will be pending.
Returns
A V_XML formatted string.
Client Certificate
not required
Parameters
certificateID Certificate ID (GUID) used to generate the certificateSigningRequest
: string
certificateSigningReq Base 64 encoded string containing the new certificate signing request
uest
: string example of a certificate signing request
98
<certificateSigningRequest>string</certificateSigningRequest>
</SumitCertificateRequest>
</soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
Parameters
certificateID Certificate ID (GUID) used to generate the certificateSigningRequest
:string
99
13.4.5.1 SOAP Request
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
100
</soap:Envelope>
Parameters
certificateID Certificate ID (GUID) of existing certificate.
:string
101
13.4.6.2 SOAP Response
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
102
13.4.7 Byte [] DownloadFile(string fileServiceCommand)
Description
Downloads a file.
Returns
A Base64 encoded string which is the contents of the downloaded zipped file.
Client Certificate
Send as parameter
Parameters
See section 22.4
<File Command="">
<Gateway></Gateway>
<CertificateID></CertificateID>
103
<UserGroup></UserGroup>
<UserName></UserName>
<Password></Password>
<FileName></FileName>
<AcquirerCycle></AcquirerCycle>
<StartDateTime></StartDateTime>
<EndDateTime></EndDateTime>
<Mode></Mode>
<Acquirer></Acquirer>
<MerchantUsn></MerchantUsn>
<Format></Format>
</File>
of
<File Command="">
<Gateway></Gateway>
<CertificateID></CertificateID>
<UserGroup></UserGroup>
<UserName></UserName>
<Password></Password>
<FileName></FileName>
<AcquirerCycle></AcquirerCycle>
<StartDateTime></StartDateTime>
<EndDateTime></EndDateTime>
<Mode>Live</Mode>
<Acquirer></Acquirer>
<MerchantUsn></MerchantUsn>
<Format></Format>
</File>
104
Note that DateTime values must be in the format yyyy-MM-ddTHH:mm:ss (date and time
separated with a T).
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
The DownloadFileResult must be Base64 decoded and then unzipped to obtain the original file
contents.
105
14. POS DEVICE INTERGRATION
The following section covers the details of POS Device integration (particularly PIN based
transactions).
PIN transactions are encrypted either using Triple DES DUKPT or Triple DES Master/Session
encryption architecture.
The combination of Acquirer and type of device used determine the encryption architecture
chosen.
iVeri provides facilities where PIN transactions can be process in either mode Live or Test.
For security reasons, a key cannot be used in both modes Live and Test. Therefore, a device is
either loaded for mode Test or mode Live.
A Device that is to be used for mode Live must be injected with a key within an iVeri Trusted Centre
using the appropriate encryption architecture.
A Device that is to be used for mode Test may be injected by a merchant, or within the Trusted
Centre.
To change a device from mode Test to Live, device has to be reinjected with a key within an iVeri
Trusted Centre.
A merchant wishing to perform a Live Debit with PIN transaction requires an approved device that
has been injected appropriately by the appropriate distributor.
106
Debit with PIN, the PINBlock is sent encrypted using the PIN Encryption key, along with the current
KeySerialNumber (which indicates the device and the current counter value).
The Master/Session PINBlock encryption process flow is the following: A Device (with a
DeviceSerialNumber and a DeviceMake) is injected in a Trusted Centre with a Device Master Key. A
merchant periodically sends a request for a session key (GetDevicePINKey) which is returned
encrypted under the Device Master Key. When performing a Debit with PIN, the PINBlock is sent
encrypted using the current session key.
107
14.2.2 Get Device PIN Key
The command “GetDevicePINKey” (which is only relevant for PINBlock encryption via
Master/Session) has the following mandatory input parameters:
DeviceMake
DeviceSerialNumber
Unlike other commands to the iVeri Gateway, “GetDevicePINKey” does not require the input
parameter ApplicationID.
Using iVeri Enterprise in iVeri Client.net, this can be prepared using the following syntax:
enterprise.prepare("Security", "GetDevicePINKey", new Guid(), mode);
or using java:
enterprise.prepare("Security", "GetDevicePINKey", "", mode);
“GetDevicePINKey” must be called if “Debit with PIN” or “Balance Enquiry” reply with the Result
code: “Device PIN Key expired” [20]. It should be called upon startup and every 24 hours, or 200
transactions thereafter.
“GetDevicePINKey” returns the following output parameters, which can be stored for later usage
with “Debit with PIN” and “Balance Enquiry”:
DevicePINKey
MACDevicePINKey
The Master/Session Track2 encryption process flow is the following: A Device (with a
DeviceSerialNumber and a DeviceMake) is injected in a Trusted Centre with a Track2 Master Key.
108
A merchant periodically sends a request for a session key (getTrack2SessionKey) which is
returned encrypted under the Track2 Master Key. When performing a transaction or a balance
enquiry, the Track2 is sent encrypted using the current Track2 session key.
The Dukpt Track2 encryption process flow is the following: A Device (with a DeviceSerialNumber
and a DeviceMake) is injected in a Trusted Centre with a Track2 IPEK (initial pin encryption key).
This IPEK is different from the one injected for Dukpt PIN encryption. For this encryption, the
following are mandatory input parameters together with the Track2 tag:
DeviceSerialNumber
DeviceMake
Track2KeySerialNumber
109
14.5 PAN encryption via Dukpt encryption
A POS Device Integration architect has the option sending the PAN to the iVeri Gateway in an
encrypted format. This optional functionality is there as an extra security measure against
someone sniffing the data between the device and the server communicating with the iVeri
Gateway.
The Dukpt PAN encryption process flow is the following: A Device (with a DeviceSerialNumber and
a DeviceMake) is injected in a Trusted Centre with a Track2 IPEK (initial pin encryption key). This
IPEK is different from the one injected for Dukpt PIN encryption. For this encryption, the following
are mandatory input parameters together with the PAN tag:
DeviceSerialNumber
DeviceMake
PANKeySerialNumber
A PIN based request is identified by the existance of a PINBlock tag. The existance of the
PINBlock tag implies Track2, DeviceSerialNumber, DeviceMake and DevicePINKey is mandatory.
AccountType is 'Savings' or 'Cheque' or 'Credit' or 'NotSpecified'.
The only time the balance of a PIN based card can be increased using iVeri is by Voiding a
previous transaction.
110
14.6.2 Balance Enquiry
Obtain the balance of the PIN based account in the currency of the account.
Using iVeri Enterprise, this can be prepared using the following syntax:
enterprise.prepare("Enquiry", "Balance", applicationID, mode);
The Current Balance for PAN 4242424242424242 for the current merchant testing is stored in
memory, and is manipulated in the following manner:
Initial amount is: 10,000.00 (max balance)
Reset to max balance upon service restart
Decreased after a successful debit.
Replenished to the max balance if the CurrentBalance goes below 10.00 (min
balance).
If a Void is received, then CurrentBalance is increased. Since a Void could be
received after a replenishment (or service restart), CurrentBalance is forced to be
less than or equal to max balance.
111
14.6.4 Determining if a card is PIN based
A merchant determines the card is PIN based by using a local BIN list in conjunction with the
Track2 information read from a card.
The BINLookup download within the File Transfer mechanism (section 22) may be used to refresh
a local BIN list.
A merchant can determine if the card is PIN based in the following manner:
1. The BINLookup download within the File Transfer mechanism (section 22) is used
to populate a local BIN list. It can be refreshed daily.
2. The Track2 of the card is read within a card reader
3. The PAN is determined from the Track2 (see section 10.3)
4. The PAN is checked against the local BIN list.
5. If the initial digits of the card PAN is found on the BIN list then based on the
IsPINCard attribute:
0 Prompt for PIN
1 Do not prompt for PIN
2 If Position #3 of the Track2 Service Code (see section 10.3.1) is 0 or 6 then Prompt for PIN,
else Do not prompt for PIN
6. If there is no BIN list available (or if the initial digits of the card PAN are not found
on the BIN list), then:
a. If the PAN starts with 50, 56, 57, 58 or 6 then Prompt for PIN
b. Else if Position #3 of the Track2 Service Code (see section 10.3.1) is in
{0,5,6,7} then Prompt for PIN
c. Else do not prompt for PIN.
112
14.8 Coding for EMV data
The following is a code snippet in C#:
enterprise.setTag("EMV_AuthorisationRequestCryptogram", authorisationRequestCryptogram);
enterprise.setTag("EMV_ApplicationIdentifier", applicationIdentifier);
enterprise.setTag("EMV_ApplicationInterchangeProfile", applicationInterchangeProfile);
enterprise.setTag("EMV_CardSequenceNumber", cardSequenceNumber);
enterprise.setTag("EMV_ApplicationTransactionCounter", applicationTransactionCounter);
enterprise.setTag("EMV_ApplicationVersion", applicationVersion);
enterprise.setTag("EMV_CardHolderVerificationMethodResult",
cardHolderVerificationMethodResult);
enterprise.setTag("EMV_CryptogramInformationData", cryptogramInformationData);
enterprise.setTag("EMV_IssuerApplicationData", issuerApplicationData);
enterprise.setTag("EMV_TerminalCapabilities", terminalCapabilities);
enterprise.setTag("EMV_TerminalType", terminalType);
enterprise.setTag("EMV_TransactionType", transactionType);
enterprise.setTag("EMV_TerminalVerificationResult", terminalVerificationResult);
enterprise.setTag("EMV_UnpredictableNumber", unpredictableNumber);
enterprise.setTag("EMV_TransactionStatusInformation", transactionStatusInformation);
enterprise.getTag(“EMV_IssuerAuthenticationData”);
enterprise.getTag(“EMV_IssuerScriptTemplate1”);
enterprise.getTag(“EMV_IssuerScriptTemplate2”);
enterprise.getTag(“EMV_ResponseCode”);
113
15. ADDITIONAL DATA TRANSACTIONS
The following optional input parameters are Procurement specific per Line item:
Discount
ItemCommodityCode
114
ItemDescriptor
ProductCode
Quantity
TaxRate
Total
UnitCost
UnitOfMeasure
Since Line items are repeated, the advanced Enterprise methods openElement and closeElement
must be used. The following is a code snippet in VB.net:
enterprise.setTag("ShippingTaxRate", shippingTaxRate)
enterprise.setTag("TransactionDiscount", transactionDiscount)
enterprise.setTag("UniqueVATInvoiceReferenceNumber", vatReferenceNo)
Dim dr As DataRow
For Each dr In myTable.Rows
enterprise.openElement("LineItem")
enterprise.setTag("ItemCommodityCode", dr("Item Code"))
enterprise.setTag("ItemDescriptor", dr("Description"))
enterprise.setTag("ProductCode", dr("Product Code"))
enterprise.setTag("Quantity", dr("Quantity"))
enterprise.setTag("UnitOfMeasure", dr("Unit Of Measure"))
enterprise.setTag("UnitCost", dr("Unit Cost"))
enterprise.setTag("TaxRate", dr("Tax Rate"))
enterprise.setTag("Discount", dr("Discount"))
enterprise.setTag("Total", dr("Total"))
enterprise.closeElement()
115
15.1.3 Calculation when TransactionDiscount is NOT zero
The TransactionDiscount is spread across some or all of the line items resulting in an additional
discount for these line items.
Let’s call the LineItem Total of the affected line items, reduced LineItem Total. Then,
NationalTax = (sum of (reduced LineItem Total x LineItem TaxRate) / 10000) + (ShippingAmount x
ShippingTaxRate) / 10000.
For the above calculation, a maximum and minimum tax amount is obtained by sorting line items
in ascending and descending order respectively according to LineItem TaxRate.
Since Line items are repeated, the advanced Enterprise methods openElement and closeElement
must be used. The following is a code snippet in VB.net:
116
enterprise.setTag("ShippingTaxRate", shippingTaxRate)
enterprise.setTag("TransactionDiscount", transactionDiscount)
enterprise.setTag("UniqueVATInvoiceReferenceNumber", vatReferenceNo)
Dim dr As DataRow
For Each dr in myTable.Rows
enterprise.openElement("LineItem")
enterprise.setTag("UnitCost", dr("Unit Cost"))
enterprise.setTag("Quantity", dr("Quantity"))
enterprise.setTag("ItemDescriptor", dr("Description"))
enterprise.setTag("ProductCode", dr("Product Code"))
enterprise.setTag("PassengerFirstName", dr("Passenger FirstName"))
enterprise.setTag("PassengerLastName", dr("Passenger LastName"))
enterprise.setTag("PassengerID", dr("Passenger ID"))
enterprise.setTag("PassengerStatus", dr("Passenger Status"))
enterprise.setTag("PassengerType", dr("Passenger Type"))
enterprise.closeElement()
Next
The following optional input parameters are Fleet specific per Line item:
ProductCode
Quantity
QuantityDecimalPlaces
117
UnitCost
The latest available values of the ProductCode field are obtained via the “Inventory” download
command (See section 22). Only use the ProductCodes with Type='Fleet'. The list at the time of
writing is given in 7.4
Since Line items are repeated, the advanced Enterprise methods openElement and closeElement
must be used. The following is a code snippet in C#:
enterprise.setTag("CustomerReferenceIdentifier", customerReferenceIdentifier);
Airline addendum data is currently only available within distributor Nedbank. Merchants who want
to make use of this need to have the NedbankBICISO provider assigned to their Application ID's on
the iVeri Gateway.
In addition, for the NedbankBICISO provider, the airline addendum data is currently only supported
for follow-up debit (pre-authorised debit) transactions.
enterprise.openElement("AirlineData");
118
enterprise.setTag("PassengerName", passengerName);
enterprise.setTag("PrimaryTicketNumber", primaryTicketNumber);
enterprise.setTag("FirstDepartureLocationCode", firstDepartureLocationCode);
enterprise.setTag("FirstArrivalLocationCode", firstArrivalLocationCode);
enterprise.setTag("PNRNumber", pnrNumber);
enterprise.setTag("OfficeIATANumber", officeIATANumber);
enterprise.setTag("OrderNumber", orderNumber);
enterprise.setTag("PlaceOfIssue", placeOfIssue);
enterprise.setTag("DepartureDate", departureDate);
enterprise.setTag("CompleteRoute", completeRoute);
enterprise.setTag("DepartureTime", departureTime);
enterprise.setTag("JourneyType", journeyType);
enterprise.closeElement();
Note: The fields in Blue will be used when doing Advanced Fraud Screening.
These fields are not recorded on the iVeri system.
119
15.5.1.3 JavaScript Code
<script src="https://h.online-metrix.net/fp/check.js?org_id=<org ID>&session_ id=<merchant id><session ID>" type="text/javascript">
</script>
enterprise.openElement("CyberSource");
enterprise.setTag("DeliveryMethod", Virtual);
enterprise.setTag("DeviceFingerprintID", sessionId);
enterprise.setTag("BillTo_FirstName", billTo_FirstName);
enterprise.setTag("BillTo_LastName", billTo_LastName);
enterprise.setTag("BillTo_Street", billTo_Street);
enterprise.setTag("BillTo_City", billTo_City);
enterprise.setTag("BillTo_Country", billTo_Country);
enterprise.setTag("BillTo_Email", billTo_Email);
enterprise.setTag("BillTo_IPAddress", billTo_IPAddress);
enterprise.closeElement();
Authenticted collections are intended to enable a merchant who wants to make regular direct
debits to a customer’s account to authenticate the customer. This has two benefits, the merchant
has proved that the customer has consented to these regular debits and the customer has verfied
themselves by way of a pin validation so there is a higher level of comfort that the customer's
account is a valid account and does belong to the customer.
Authenticated Collections is currently only available from Nedbank. Merchants who want to make
use of this need to have the NedbankPostilion provider assigned to their Application ID's on the
iVeri Gateway.
In addition, for the NedbankPostilion provider, the Authenticated Collections provider parameter
must be enabled otherwise the transaction will be declined.
120
15.6.1 Coding for Authenticated Collection data
The following is a code snippet in C#:
enterprise.openElement("AuthenticatedCollectionData");
enterprise.setTag("AccountNumber", accountNumber);
enterprise.setTag("DebtorIdentification", debtorIdentification);
enterprise.setTag("MaximumCollectionAmount", maximumCollectionAmount);
enterprise.closeElement();
Note that MerchantReference must be set for Authenticated Collections AND the transaction must
be PIN authenticated card present. The MerchantReference is used as the contract reference. An
AuthorisationCode is returned if successful.
121
16. MASTERPASS QUICK RESPONSE CODE
16.1.2 Example:
Request:
<?xml version="1.0" encoding="UTF-8"?><V_XML CertificateID="172bc42c-7ffb-44d0-a1e4-
441444e1274c" Direction="Request" ProductType="Enterprise" ProductVersion="iVeriClient.JAVA
v4.0.2" Version="2.0">
<Enquiry ApplicationID="8b2101c2-88a2-11d4-bccf-0000e884f861"
Command="MasterPassQuickResponseCode" Mode="Test">
<MasterPassMerchantID>280</MasterPassMerchantID>
<MasterPassAction>CreateCode</MasterPassAction>
<Currency>ZAR</Currency>
<MerchantReference>1507023127597</MerchantReference>
<Amount>1075</Amount>
<MasterPassShortDescription>Basket of goods</MasterPassShortDescription>
</Enquiry>
</V_XML>
Response:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<V_XML Direction="Response" Version="2.0">
<Enquiry ApplicationID="{8B2101C2-88A2-11D4-BCCF-0000E884F861}"
Command="MasterPassQuickResponseCode" Mode="Test" RequestID="{04D220A0-A1D4-4ABF-B6FF-
122
8ADF514486F5}">
<Result AppServer="GOLIATH" DBServer="titan" Gateway="DEV2012" Status="0"/>
<MasterPassAction>CreateCode</MasterPassAction>
<MasterPassCodeExpiryDate>1507024950794</MasterPassCodeExpiryDate>
<MasterPassCode>9599003889</MasterPassCode>
</Enquiry>
</V_XML>
Response:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<V_XML Direction="Response" Version="2.0">
<Enquiry ApplicationID="{8B2101C2-88A2-11D4-BCCF-0000E884F861}"
Command="MasterPassQuickResponseCode" Mode="Test" RequestID="{A0B3A6DA-4BB2-4D3D-BF26-
59C2845622B3}">
<Result AppServer="GOLIATH" DBServer="titan" Gateway="DEV2012" Status="0"/>
<Currency>R</Currency>
123
<MerchantReference>1507023127597</MerchantReference>
<Amount>1075</Amount>
<MasterPassAction>QueryCode</MasterPassAction>
<MasterPassShortDescription>Basket of goods</MasterPassShortDescription>
<MasterPassCodeExpiryDate>1507024950000</MasterPassCodeExpiryDate>
<MasterPassMerchantName>Web Tickets</MasterPassMerchantName>
</Enquiry>
</V_XML>
16.3.2 Example:
Request:
<?xml version="1.0" encoding="UTF-8"?><V_XML CertificateID="172bc42c-7ffb-44d0-a1e4-
441444e1274c" Direction="Request" ProductType="Enterprise" ProductVersion="iVeriClient.JAVA
v4.0.2" Version="2.0">
<Enquiry ApplicationID="8b2101c2-88a2-11d4-bccf-0000e884f861"
Command="MasterPassQuickResponseCode" Mode="Test">
<MasterPassMerchantID>280</MasterPassMerchantID>
<MasterPassAction>DeleteCode</MasterPassAction>
<Currency>ZAR</Currency>
<MerchantReference>1507026463652</MerchantReference>
<MasterPassCode>9599003889</MasterPassCode>
</Enquiry>
</V_XML>
Response:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<V_XML Direction="Response" Version="2.0">
<Enquiry ApplicationID="{8B2101C2-88A2-11D4-BCCF-0000E884F861}"
Command="MasterPassQuickResponseCode" Mode="Test" RequestID="{4117F60B-F3D4-4650-A2C5-
BC08C542AA5F}">
<Result AppServer="GOLIATH" DBServer="titan" Gateway="DEV2012" Status="0"/>
<MasterPassAction>DeleteCode</MasterPassAction>
</Enquiry>
</V_XML>
124
16.4 Block Code
This is an API call to temporarily block a code. This prevents purchases on the code.
16.4.1 Additional Parameters
16.4.2 Example:
Request:
<?xml version="1.0" encoding="UTF-8"?><V_XML CertificateID="172bc42c-7ffb-44d0-a1e4-
441444e1274c" Direction="Request" ProductType="Enterprise" ProductVersion="iVeriClient.JAVA
v4.0.2" Version="2.0">
<Enquiry ApplicationID="8b2101c2-88a2-11d4-bccf-0000e884f861"
Command="MasterPassQuickResponseCode" Mode="Test">
<MasterPassMerchantID>280</MasterPassMerchantID>
<MasterPassAction>BlockCode</MasterPassAction>
<Currency>ZAR</Currency>
<MerchantReference>1507026463652</MerchantReference>
<MasterPassCode>9599003889</MasterPassCode>
</Enquiry>
</V_XML>
Response:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<V_XML Direction="Response" Version="2.0">
<Enquiry ApplicationID="{8B2101C2-88A2-11D4-BCCF-0000E884F861}"
Command="MasterPassQuickResponseCode" Mode="Test" RequestID="{4117F60B-F3D4-4650-A2C5-
BC08C542AA5F}">
<Result AppServer="GOLIATH" DBServer="titan" Gateway="DEV2012" Status="0"/>
<MasterPassAction>BlockCode</MasterPassAction>
</Enquiry>
</V_XML>
125
16.5 Unlock Code
This unblocks a blocked code. This call enables future purchases on that code.
16.5.1 Additional Parameters
16.5.3 Example:
Request:
<?xml version="1.0" encoding="UTF-8"?><V_XML CertificateID="172bc42c-7ffb-44d0-a1e4-
441444e1274c" Direction="Request" ProductType="Enterprise" ProductVersion="iVeriClient.JAVA
v4.0.2" Version="2.0">
<Enquiry ApplicationID="8b2101c2-88a2-11d4-bccf-0000e884f861"
Command="MasterPassQuickResponseCode" Mode="Test">
<MasterPassMerchantID>280</MasterPassMerchantID>
<MasterPassAction>UnblockCode</MasterPassAction>
<Currency>ZAR</Currency>
<MerchantReference>1507026463652</MerchantReference>
<MasterPassCode>9599003889</MasterPassCode>
</Enquiry>
</V_XML>
Response:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<V_XML Direction="Response" Version="2.0">
<Enquiry ApplicationID="{8B2101C2-88A2-11D4-BCCF-0000E884F861}"
Command="MasterPassQuickResponseCode" Mode="Test" RequestID="{4117F60B-F3D4-4650-A2C5-
BC08C542AA5F}">
<Result AppServer="GOLIATH" DBServer="titan" Gateway="DEV2012" Status="0"/>
<MasterPassAction>UnblockCode</MasterPassAction>
</Enquiry>
</V_XML>
126
16.6 Update Code
Query a code that has been created.
16.6.1 Additional Parameters
Request Parameter Description
MasterPassAction Mandatory, the action to perform.
MasterPassMerchantID Mandatory, the merchant id as captured on MasterPass.
MasterPassCode Mandatory, the result code that must be queried
Amount Mandatory, to use a variable amount use 0 as the amount.
Currency Mandatory, the currency is tied to the merchant setup.
MerchantReference Mandatory, used to link code to transaction.
MasterPassShortDescription Mandatory, This will be displayed to the consumer at the time a code is scanned. Length is 5 to 45 characters
MasterPassCodeExpiryDate Optional. If this is empty the code will by default expire in 30 minutes from issue. If this value is 0 the code will
never expire. This time is specified in epoch.
16.6.2 Example:
Request:
<?xml version="1.0" encoding="UTF-8"?><V_XML CertificateID="172bc42c-7ffb-44d0-a1e4-
441444e1274c" Direction="Request" ProductType="Enterprise" ProductVersion="iVeriClient.JAVA
v4.0.2" Version="2.0">
<Enquiry ApplicationID="8b2101c2-88a2-11d4-bccf-0000e884f861"
Command="MasterPassQuickResponseCode" Mode="Test">
<MasterPassMerchantID>280</MasterPassMerchantID>
<MasterPassAction>UpdateCode</MasterPassAction>
<Currency>ZAR</Currency>
<MerchantReference>1507027434321</MerchantReference>
<MasterPassCode>9599003889</MasterPassCode>
<Amount>1125</Amount>
<MasterPassShortDescription>Basket of Sweets</MasterPassShortDescription>
</Enquiry>
</V_XML>
Response:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<V_XML Direction="Response" Version="2.0">
<Enquiry ApplicationID="{8B2101C2-88A2-11D4-BCCF-0000E884F861}"
Command="MasterPassQuickResponseCode" Mode="Test" RequestID="{1C2756AC-52B3-4DE8-8142-
66C4783258FA}">
<Result AppServer="GOLIATH" DBServer="titan" Gateway="DEV2012" Status="0"/>
<MasterPassAction>UpdateCode</MasterPassAction>
</Enquiry>
</V_XML>
127
16.7 Update Code Amount
Query a code that has been created.
16.7.1 Additional Parameters
16.7.2 Example:
Request:
<?xml version="1.0" encoding="UTF-8"?><V_XML CertificateID="172bc42c-7ffb-44d0-a1e4-
441444e1274c" Direction="Request" ProductType="Enterprise" ProductVersion="iVeriClient.JAVA
v4.0.2" Version="2.0">
<Enquiry ApplicationID="8b2101c2-88a2-11d4-bccf-0000e884f861"
Command="MasterPassQuickResponseCode" Mode="Test">
<MasterPassMerchantID>280</MasterPassMerchantID>
<MasterPassAction>UpdateCodeAmount</MasterPassAction>
<Currency>ZAR</Currency>
<MerchantReference>1507028386455</MerchantReference>
<MasterPassCode>9599003889</MasterPassCode>
<Amount>1300</Amount>
</Enquiry>
</V_XML>
Response:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<V_XML Direction="Response" Version="2.0">
<Enquiry ApplicationID="{8B2101C2-88A2-11D4-BCCF-0000E884F861}"
Command="MasterPassQuickResponseCode" Mode="Test" RequestID="{10C424BC-6371-413B-AC27-
94949D4D8A6A}">
<Result AppServer="GOLIATH" DBServer="titan" Gateway="DEV2012" Status="0"/>
<MasterPassAction>UpdateCodeAmount</MasterPassAction>
</Enquiry>
</V_XML>
128
17. FOREIGN EXCHANGE
129
17.1.2 Multiple Rate Request with Specified Base Amount
Request:
<?xml version="1.0" encoding="UTF-8"?><V_XML CertificateID="4C9CFBF1-1824-470C-B0A2-
5462F2F8FE29" Direction="Request" ProductType="Enterprise" ProductVersion="iVeriClient.JAVA
v4.0.12" Version="2.0">
<Enquiry ApplicationID="8b2101c3-88a2-11d4-bccf-0000e884f861"
Command="DynamicCurrencyConversion" Mode="Live">
<Amount>1000</Amount>
<Currency>GBP</Currency>
</Enquiry>
</V_XML>
Response:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<V_XML Direction="Response" Version="2.0">
<Enquiry ApplicationID="{8B2101C3-88A2-11D4-BCCF-0000E884F861}"
Command="DynamicCurrencyConversion" Mode="Live" RequestID="{03D3D31A-6C7B-4E4F-8818-
8B45D12031D3}">
<Result AppServer="GOLIATH" Code="0" DBServer="titan" Description="" Gateway="DEV2012"
Status="0"/>
<Currency>GBP</Currency>
<Amount>1000</Amount>
<ForeignExchange>
<ForeignExchangeItem>
<ForeignExchangeID>{7E5E0298-3AB5-4836-90AE-DFFC27ABECD7} </ForeignExchangeID>
<ForeignExchangeProvider>Fexco</ForeignExchangeProvider>
<BaseCurrency>GBP</BaseCurrency>
<BaseAmount>10.00</BaseAmount>
<ForeignCurrency>AUD</ForeignCurrency>
<ForeignAmount>20.94</ForeignAmount>
<ExchangeRate>2,0937</ExchangeRate>
<ExpiryDateTime>2020-01-22 05:47:58 PM</ExpiryDateTime>
<MarginPercentage>3</MarginPercentage>
<CommissionPercentage>0,000000</CommissionPercentage>
</ForeignExchangeItem>
<ForeignExchangeItem>
<ForeignExchangeID>{DB5DA813-D15A-4F3B-A916-A3D321582201} </ForeignExchangeID>
<ForeignExchangeProvider>Fexco</ForeignExchangeProvider>
<BaseCurrency>GBP</BaseCurrency>
<BaseAmount>10.00</BaseAmount>
<ForeignCurrency>CAD</ForeignCurrency>
<ForeignAmount>20.79</ForeignAmount>
<ExchangeRate>2,0788</ExchangeRate>
<ExpiryDateTime>2020-01-22 05:47:58 PM</ExpiryDateTime>
<MarginPercentage>3</MarginPercentage>
<CommissionPercentage>0,000000</CommissionPercentage>
</ForeignExchangeItem>
.
.
.
.
.
130
<ForeignExchangeItem>
<ForeignExchangeID>{FB20C820-D574-4755-9E05-A7CA82645296}</ForeignExchangeID>
<ForeignExchangeProvider>Fexco</ForeignExchangeProvider>
<BaseCurrency>GBP</BaseCurrency>
<BaseAmount>10.00</BaseAmount>
<ForeignCurrency>BRL</ForeignCurrency>
<ForeignAmount>60.50</ForeignAmount>
<ExchangeRate>6,0497</ExchangeRate>
<ExpiryDateTime>2020-01-22 05:47:58 PM</ExpiryDateTime>
<MarginPercentage>3</MarginPercentage>
<CommissionPercentage>0,000000</CommissionPercentage>
</ForeignExchangeItem>
</ForeignExchange>
</Enquiry>
</V_XML>
With MCP, the merchant prices goods/services in a currency other than, or in addition to, the
merchant’s local currency.
The cardholder makes a purchase decision based on the price displayed by the merchant. The
transaction is then completed with the price displayed by the merchant and the currency selected
by the cardholder, with no currency conversion performed by the merchant.
Request:
<?xml version="1.0" encoding="UTF-8"?><V_XML CertificateID="4C9CFBF1-1824-470C-B0A2-
5462F2F8FE29" Direction="Request" ProductType="Enterprise" ProductVersion="iVeriClient.JAVA
v4.0.12" Version="2.0">
<Enquiry ApplicationID="8b2101c3-88a2-11d4-bccf-0000e884f861" Command="MultiCurrencyPricing"
Mode="Live"/>
</V_XML>
Response:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<V_XML Direction="Response" Version="2.0">
<Enquiry ApplicationID="{8B2101C3-88A2-11D4-BCCF-0000E884F861}" Command="MultiCurrencyPricing"
Mode="Live" RequestID="{DC559A80-61E2-4353-9FE6-517CE12AA5E9}">
<Result AppServer="GOLIATH" Code="0" DBServer="titan" Description="" Gateway="DEV2012"
Status="0"/>
<Currency>GBP</Currency>
131
<ForeignExchange>
<ForeignExchangeItem>
<ForeignExchangeID>{20BC0FED-99BC-4FA7-A021-4DF7D267B50D} </ForeignExchangeID>
<ForeignExchangeProvider>Fexco</ForeignExchangeProvider>
<BaseCurrency>GBP</BaseCurrency>
<ForeignCurrency>AUD</ForeignCurrency>
<ExchangeRate>2,0937</ExchangeRate>
<ExpiryDateTime>2020-01-22 05:47:58 PM</ExpiryDateTime>
<MarginPercentage>3</MarginPercentage>
<CommissionPercentage>0,000000</CommissionPercentage>
</ForeignExchangeItem>
<ForeignExchangeItem>
<ForeignExchangeID>{3F59544D-5E79-461F-996E-B59352267C79} </ForeignExchangeID>
<ForeignExchangeProvider>Fexco</ForeignExchangeProvider>
<BaseCurrency>GBP</BaseCurrency>
<ForeignCurrency>CAD</ForeignCurrency>
<ExchangeRate>2,0788</ExchangeRate>
<ExpiryDateTime>2020-01-22 05:47:58 PM</ExpiryDateTime>
<MarginPercentage>3</MarginPercentage>
<CommissionPercentage>0,000000</CommissionPercentage>
</ForeignExchangeItem>
.
.
.
<ForeignExchangeItem>
<ForeignExchangeID>{4FC256A4-1EAF-45E5-A06A-2B609C9CAB3D}</ForeignExchangeID>
<ForeignExchangeProvider>Fexco</ForeignExchangeProvider>
<BaseCurrency>GBP</BaseCurrency>
<ForeignCurrency>BRL</ForeignCurrency>
<ExchangeRate>6,0497</ExchangeRate>
<ExpiryDateTime>2020-01-22 05:47:58 PM</ExpiryDateTime>
<MarginPercentage>3</MarginPercentage>
<CommissionPercentage>0,000000</CommissionPercentage>
</ForeignExchangeItem>
</ForeignExchange>
</Enquiry>
</V_XML>
132
18. UPOP SECUREPLUS AUTHENTICATION
This card authentication services deter unauthorized card use and enable you you to accept
authenticated UnionPay debit and credit card payments.
Payer Authentication through has been made available by iVeri with the addition of the following
Enquiry commands:
UPOPAuthenticationRequestCreation
UPOPAuthenticationResponseValidation
Note: The Merchant has to be enabled for 3DSecure Checking on the iVeri Gateway.
133
If the Request Creation was unsuccessful the merchant is not permitted to continue with the
transaction. Instead, ask the customer for another form of payment.
If the Request Creation was successful, the following parameters will be returned:
The merchant’s website will have to be redirected to the Authentication Server UPOP Endpoint and
the ACPReq must be posted to it. an Example of the redirect page will be provided in Appendix D.
ApplicationID
CertificateID
Mode
UPOP_RequestID - Links the Creation process with the Validation process.
UPOP_TransactionTime - Must always be present
UPOP_ACPRes - ACPRes message extracted from the form. Appendix D.
If the Request Validation was unsuccessful the merchant is not permitted to submit the
transaction for authorisation. Instead ask the customer for another form of payment.
134
If the Request Validation was successful, the following parameters will be returned and is required
to be send through to the gateway:
135
19. ADVANCED SETTINGS
This section documents functionality within the iVeri Gateway that is not enabled by default.
Contact your local distributor should you wish to activate one of these settings for your
ApplicationID.
Examples:
Starting position Length Direction MerchantReference Derived
ReconReference
(last 7 digits)
12 7 left-to-right March01Rref10 0000010
12 7 right-to-left 100Rref01March 0000100
5 4 left-to-right Rref1000March01 1000
136
19.4 Transaction Type repetition within transaction
sequence
Authorisations, AuthorisationReversals, Debits and Credits are by default limited to one successful
of each type per transaction sequence.
An ApplicationID can be configured to not limit the successful count of any of these within a
transaction sequence. A MerchantTrace must be supplied for transactions using an
ApplicationID with this configuration activated.
AuthorisationReversals and Debits reduce the authorisation amount available (for subsequent
authorisations, authorisation reversals and debits).
The possible Advanced transaction sequence flow with an initial Authorisation is the following:
The possible Advanced transaction sequence flow with an initial Debit is the following:
The possible Advanced transaction sequence flow with an initial Credit is unchanged from the
diagram shown within the “Sequence” section (6.5).
137
20. FILE TRANSFER DEVELOPMENT
The iVeri File Transfer mechanism facilitates the automation of uploading or downloading of files.
There may be files available for upload/download within the iVeri Client File Transfer mechanism
that are not available via the iVeri BackOffice. Similarly, there may be files available for
upload/download within iVeri BackOffice that are not available via the iVeri Client File Transfer
mechanism.
20.1 Overview
The following is available to assist FileTransfer development:
iVeri Client Developers Guide (this document)
The iVeri Client API (which includes the Enterprise class)
• For iVeriClient.net: See Start - Programs - iVeriClient -” iVeri Client API”
• For iVeriClient.java: \jre\lib\iveri\doc\index.htm.
iVeri FileTransfer code samples
Distributor website (see section Error: Reference source not found) for updates to
the documentation mentioned
138
submit the request to the iVeri Gateway: via upload or download
check the results returned, particularly ResultStatus and ResultCode
for downloads, use the contents of the newly downloaded file.
The Node Type column corresponds to how the FileTransfer class should be used for the
parameter:
139
20. File Transfer Parameters
FileTransfer Parameters
Parameter Node Data Type Minimu Maximum Description
Type m Length
Length
Gateway property A 10 The name of the gateway connecting to. If not explicitly set, the default gateway is used.
CertificateID property Guid 38 38 The iVeri CertificateID installed on the server communicating with the iVeri Gateway
UserGroup property N 10 The UserGroup used to login to the BackOffice website. Usually the same as the BillingDetailsID
UserName property String 16 A Username created under the specified UserGroup
Password property String 32 The BackOffice password of the specified user
Command property A 50 The command identifying what should be done by the iVeri Gateway
Batch Upload / Download
DiVert Upload / Download
HotCard Download
BINLookup Download
BINManagement Download
BlackCard Download
TransactionHistory Download
Recon Download
AcquirerRecon Download
Inventory Download
ApplicationID property Guid 38 38 Identification of the merchant profile performing the file transfer
Mode property A 4 4 The mode of the corresponding ApplicationID
FileName tag String 0 50 The identifying file name of the original batch / divert file uploaded
FileFormat tag String 0 10 The format of the batch file to download
Fixed default
XML
StartDateTime tag String 0 20 The starting datetime from which reconciliation information are required
YYYY-MM-DD HH:MM: YearMonthDay HourMinuteSecond
SS
EndDateTime tag String 0 20 The ending datetime to which reconciliation information are required
YYYY-MM-DD HH:MM: YearMonthDay HourMinuteSecond
SS
Acquirer tag A 3 32 The acquirer that settled the transactions
Nedcor
NedbankBICISO
IMNarada
DashenACI
ChamsACI
MSCCTranzWare
CTLNigeria
Nips
AcquirerCycle tag N 5 8 The cycle from which reconciliation information are required
MerchantUsn tag N 5 20 Acquirer identification for a merchant account.
140
20.5 File Transfer Command
The Upload Commands are:
Batch
DiVert
141
20.6 File Transfer Parameters per action
The input parameters that are relevant to each action are shown in the following table using the
following key:
M Mandatory
O Optional
blank not relevant
TransactionHistory Download
AcquirerRecon Download
BINLookup Download
BlackCard Download
Inventory Download
HotCard Download
DiVert Download
Batch Download
DiVert Upload
Batch Upload
by Date
Cycle
DiVert UploadGateway O O O O O O O O O O O O
CertificateID M M M M M M M M M M M M
UserGroup M M M M M M M M M M M M
UserName M M M M M M M M M M M M
Password M M M M M M M M M M M M
Command M M M M M M M M M M M M
ApplicationID O M M M O O
Mode O M M M M O
FileName O O O
FileFormat O
StartDateTime M
EndDateTime M
Acquirer M M
AcquirerCycle M
MerchantUsn M
The only output parameters relevant to the File Transfer mechanism are the Result related
parameters (see section 10.1).
The specifications for the content of the files relevant to each of the above commands are
contained, the following documents:
iVeri Download Files XML Specification
iVeri Batch XML Specification
iVeri Batch Fixed Format Specification
iVeri DiVert Specification Guide
142
20.7 Automating the File Transfer process
iVeriClient is released with a command line FileTransfer utility for testing and
automating the FileTransfer process.
This compiled utility can be used without development skills.
To obtain launch the FileTransfer utility:
iVeriClient.NET: run “iVeri.FileTransfer.exe” from the FileTransfer subdirectory of the
installation directory, eg:
C:\Program Files\iVeri\Client\FileTransfer\iVeri.FileTransfer.exe parameters
iVeriClient.Java: type the following:
java FileTransfer parameters
Calling the utility without parameters will display the usage parameters, which is
summarized here:
Usage: FileTransfer [[-u]|[-d]] gateway certificateID
command userGroup userName password
pathFileName [name1 value1][name2 value2]...
The name-value pairs correspond to the relevant parameters for the chosen action as per
section Error: Reference source not found.
Examples:
FileTransfer -u iVeri Client "gateway" {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} Batch
123456 Administrator **** "C:\MyBatch.txt"
FileTransfer -d iVeri Client "gateway" {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} Batch
123456 Administrator **** "C:\MyBatch.txt" FileFormat XML
FileTransfer -u iVeri Client "gateway" {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} DiVert
123456 Administrator **** "C:\MyDiVert.txt"
FileTransfer -d iVeri Client "gateway" {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} DiVert
123456 Administrator **** "C:\MyDiVert.txt"
FileTransfer -d iVeri Client "gateway" {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} HotCard
123456 Administrator **** "C:\HotCard.zip"
FileTransfer -d iVeri Client "gateway" {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} BinLookup
123456 Administrator **** "C:\BinLookup.zip"
FileTransfer -d iVeri Client "gateway" {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
TransactionHistory 123456 Administrator **** "C:\Transactions17to20Jan.xml"
143
StartDateTime "2006-01-17 09:00:00" EndDateTime "2006-01-20 00:20:00" ApplicationID
{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} Mode Live
FileTransfer -d iVeri Client "gateway" {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} Recon
123456 Administrator **** "C:\Recons14198.xml" Acquirer Nedbank AcquirerCycle 14198
MerchantUsn 2160000000 ApplicationID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} Mode Live
FileTransfer -d iVeri Client "gateway" {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
AcquirerRecon 123456 Administrator **** "Recons14198-1000.zip" Acquirer Nips
FileTransfer -d iVeri Client "gateway" {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} Inventory
123456 Administrator **** "C:\Inventory.zip"
Notes:
In the above examples, the valid gateway, certificateID, userGroup, userName, password,
ApplicationID must be inserted as appropriate.
The pathFileName can refer to a zipped or a non-zipped file.
144
21. OUT OF BAND TRANSACTION
NOTIFICATION
Out of Band Transaction notification is a dedicated messaging system that allows merchants to
receive their transaction outcome reliable and timeously. The transaction outcome available in the
Out of Band notification system contains the same data elements as would be found when doing a
transaction look up in the gateway's endpoint or directly from Backoffice. Merchants developers can
interface to the Out of Band system by implementing a Webservice that will consume the
transaction response message. These transaction responses would be available when the
cardholder has completed a payment to the merchant. The transaction responses are V_XML
formatted, parameters returned are defined in 5.5.2 Output Parameters per action. Out of Band
can be used across gateway products.
21.1 Prerequisite
Merchant developer has to implement a Webservice that can consume the
transaction results as and when its available from the Out of Band notification
system.
The merchant developer has to contact their local support team for Out of Band
Transaction notification to be enabled on their Test/Live application ID(s)
A Merchant developer will need to provide the target end of point of the Webservice
implemented.
145
22. DOMAIN KNOWLEDGE
This purpose of this sections is to give some domain knowledge to people not familiar with the
payment domain.
146
PIN based cards can only be processed within online transactions. (It is possible
for the card holder's chip card to verify the card holder's PIN locally at the card
acceptance device, using the on-board cryptography of the card and the PED).
A Merchant interfaces with a card holder and submits an Online Transaction request whilst the
card holder is waiting for the response.
If the transaction request is approved, there is a transfer of goods or services.
If the transaction request is denied, then either the proposed exchange of goods
and services is aborted, a parameter (e.g. amount or expiry date) is changed and
the transaction retried, or a different payment channel is used.
If the transaction experiences an error, then the transaction is retried as long as the
card holder is prepared to wait. Thereafter the transaction details are assessed if
either it should be done offline or the proposed transfer of goods and services be
aborted.
An Offline Transaction is submitted when either the transfer of goods and services have already
taken place, or the transfer of goods and services is not a once off transfer that takes place
immediately (e.g. a repetitive / continuous service).
A Merchant submits a set of offline transactions (via iVeri Enterprise or iVeri Batch) according to
previously (implied) arranged agreement with a card holder.
A Merchant interfaces with a card holder. An offline transaction is initiated after one of the
following occurs:
147
a repetitive transaction (e.g. monthly bill) is agreed to, either in advance or in
arrears
(Store and Forward): the transaction details are below a floor limit, pass hot card
and black card checking, and therefore the merchant decides to take the risk of
transferring the goods and services without guaranteed payment, since either:
• it is outweighed by the cost of going online (time or money is not worth
it), or
• an online transaction was attempted but experienced an error.
there was a problem when the transaction was attempted online.
148
23. FREQUENTLY ASKED QUESTIONS
(COMMON TO .NET AND JAVA)
If you get an error message, it means that there is a problem with the Internet connection. Please
check your connection or contact your network administrator.
Windows example:
c:\>telnet portal.nedsecure.co.za 443
Connecting To portal.nedsecure.co.za...
Could not open a connection to host on port 443 : Connect failed
Linux example:
#telnet portal.nedsecure.co.za 443
Trying xxx.xxx.xxx.xxx...
telnet: Unable to connect to remote host: Connection refused
If you are using windows and get a blank screen, it means that you have successfully connected to
the iVeri Gateway.
Linux will inform you if the connection is successful.
149
23.2 Request timed out when network pinging the
gateway
Using iVeri Client's ClientConfig utility (option 1: Network Ping iVeri Gateway), or via a command
line ping, you may get Request timed out error messages.
Example:
Choice [1]: 1
This is because ICMP packets have been disabled on the some iVeri Gateways, and therefore
network pings will always timeout.
iVeri Client 2.3.1 and later does not employ network pings.
Check network connectivity by one of the following approaches:
Navigate to the gateway url via a browser (see section Error: Reference source not
found for URL)
Telnet to the gateway (see section Error: Reference source not found)
Use option 5 “Validate certificate”
Use option 6 “ApplicationID Ping iVeri Gateway”
150
Response:
The error "execute () or executeAsync() must be called before this method is allowed" is given
when the following two condition hold:
If you think the problem is that one of the above methods / get properties was called before
execute / executeAsync was called, then make sure that you call them only after execute /
executeAsync is called.
If you think the problem is that an exception was thrown, then either:
151
24. CONTACT INFORMATION
24.1 Distributors
An iVeri Distributor markets the services of the iVeri Gateway and products within a locality.
South Africa specific: The Nedbank Merchant agreement allows for the acceptance of Visa and
MasterCard credit cards only. A Merchant that wishes to accept Diners Club and American Express
cards, will need to contact these organisations separately and enter into Merchant Agreements
with them. On receipt of Merchant numbers from these organisations, the merchant must contact
Nedbank Card Division and ask them to update their Nedbank Merchant profile to include Diners
and American Express.
24.1.6 CIM
Location Lebanon & Cyprus
Web sites http://www.iveri.com http://www.cim.mu
Email Technical Assistance [email protected]
Non-technical (product information etc) [email protected]
152
24.2 Websites
An iVeri merchant has access to 3 iVeri websites: Gateway, Certificate and BackOffice.
Website Description
Gateway Used whenever the Client Configuration utility performs gateway task, and whenever the execute method is called in the Enterprise /
FileTransfer class
Certificate Used when necessary by the Client Configuration utility to download the iVeri root certificate, and by Enterprise / FileTransfer class
to perform crl validation
BackOffice Manually navigated to by a merchant (or card holder). Not used by iVeri Client
iVeri Client uses the term “gateway” to refer to the institution that a merchant has an agreement
with.
24.2.1 Nedbank
Website URL Po
rt
Gateway https://portal.nedsecure.co.za 443
Certificate http://ca.iveri.com 80
BackOffice https://backoffice.nedsecure.co.za 443
153
24.2.5 CIM
154
25. APPENDIX A: V_XML MESSAGE EXAMPLES
The examples provided in this apply when using the web service interface to perform various
transactions.
Because of the large number of elements present in the schema definition, these examples
highlight the element that are most used to perform various transactions. It is important to note
that the elements must appear in the same order they appear in the schema definition.
155
1. Comprehensive Request and Response
Request Message
<V_XML Version="2.0" CertificateID="A8CBF8DA-92C8-4DF0-93C4-BFA285D66346" Direction="Request">
<Transaction ApplicationID="8B2101C2-88A2-11D4-BCCF-0000E884F861" Command="Debit" Mode="Test">
<CardHolderAuthenticationID />
<CardHolderAuthenticationData />
<CashAmount />
<OriginalMerchantTrace />
<AccountType />
<KeySerialNumber />
<DeviceSerialNumber />
<DeviceMake />
<DeviceCycle />
<MerchantTrace>b5181eb0-b3b6-4811-a960-0000c4a0ae63</MerchantTrace>
<PurchaseDate />
<PurchaseTime />
<PurchaseIdentifier />
<Amount>123</Amount>
<AuthorisationCode />
<BudgetPeriod />
<Currency />
<ElectronicCommerceIndicator />
<ExpiryDate>122012</ExpiryDate>
<MerchantReference>2010-08-18 16:43:40.275</MerchantReference>
<Terminal />
<TransactionIndex />
<OriginalRequestID />
<CardSecurityCode>...</CardSecurityCode>
<PINBlock />
<Track2 />
<PAN>4242........4242</PAN>
</Transaction>
</V_XML>
Response Message
<V_XML Version="2.0" Direction="Response">
<Transaction ApplicationID="{8B2101C2-88A2-11D4-BCCF-0000E884F861}" Command="Debit" Mode="Test" RequestID="{59B08CCE-ACF8-
48C4-9E4C-E3134640DC2D}">
<Result Status="0" AppServer="BOROMIR" DBServer="ARWEN" Gateway="iVeri Client "gateway"" />
<MerchantTrace>b5181eb0-b3b6-4811-a960-0000c4a0ae63</MerchantTrace>
<Amount>123</Amount>
<AuthorisationCode>615232</AuthorisationCode>
<Currency>ZAR</Currency>
<ExpiryDate>122012</ExpiryDate>
<MerchantReference>2010-08-18 16:43:40.275</MerchantReference>
<Terminal>11111111</Terminal>
<TransactionIndex>{0505EC40-65CA-4F81-A806-FA1F2C45BA37} </TransactionIndex>
156
<MerchantName>iVeri Payment Technology</MerchantName>
<MerchantAddress>Wierda Valley</MerchantAddress>
<MerchantCity>Sandton</MerchantCity>
<MerchantCountryCode>ZA</MerchantCountryCode>
<MerchantCountry>South Africa</MerchantCountry>
<MerchantUSN>0000000000</MerchantUSN>
<Acquirer>Nedcor</Acquirer>
<AcquirerReference>10081:16406407</AcquirerReference>
<AcquirerDate>20100818</AcquirerDate>
<AcquirerTime>164033</AcquirerTime>
<DisplayAmount>R 1.23</DisplayAmount>
<BIN>4</BIN>
<Association>VISA</Association>
<CardType>Unknown CardType</CardType>
<Issuer>Citibank</Issuer>
<Jurisdiction>International</Jurisdiction>
<PANMode>Keyed</PANMode>
<ReconReference>00323841</ReconReference>
<CCNumber>4242........4242</CCNumber>
<PAN>4242........4242</PAN>
</Transaction>
</V_XML>
Request Message
<V_XML Version="2.0" CertificateID="{1DE2555B-5958-487C-A882-A3A10AE7C22A}" ProductType="Enterprise"
ProductVersion="iVeriWebService" Direction="Request">
<Transaction ApplicationID="{AF8E6E69-ADC5-4D4F-B446-43D2E1E598D3}" Command="Authorisation" Mode="Test/Live">
<CashAmount />
<AccountType />
<Amount>1000</Amount>
<AuthorisationCode />
<BudgetPeriod />
<Currency />
<ExpiryDate>072019</ExpiryDate>
<MerchantReference>348004809</MerchantReference>
<Terminal />
<CardSecurityCode />
<Track2 />
<PAN>4242424242424242</PAN>
</Transaction>
</V_XML>
Request Message
<V_XML Version="2.0" CertificateID="{issued certificate id}" Direction="Request">
<Transaction ApplicationID="{associated application id}" Command="Debit" Mode="Test">
<Amount>1000</Amount>
157
<BudgetPeriod>0</BudgetPeriod>
<ExpiryDate>072019</ExpiryDate>
<MerchantReference>348004809</MerchantReference>
<PAN>4242424242424242</PAN>
</Transaction>
</V_XML>
Request Message
<V_XML Version="2.0" CertificateID="{issued certificate id}" Direction="Request">
<Transaction ApplicationID="{associated application id}" Command="Debit" Mode="Test">
<Amount></Amount>
<AuthorisationCode></AuthorisationCode>
<MerchantReference></MerchantReference>
<Track2></Track2>
</Transaction>
</V_XML>
Request Message
<V_XML Version="2.0" CertificateID="{issued certificate id}" Direction="Request">
<Transaction ApplicationID="{associated application id}" Command="Debit" Mode="Test">
<AccountType>Cheque</AccountType>
<KeySerialNumber></KeySerialNumber>
<DeviceSerialNumber></DeviceSerialNumber>
<DeviceMake></DeviceMake>
<DeviceCycle></DeviceCycle>
<Amount>1000</Amount>
<MerchantReference></MerchantReference>
<PINBlock></PINBlock>
<Track2></Track2>
</Transaction>
</V_XML>
Request Message
<V_XML Version="2.0" CertificateID="{1DE2555B-5958-487C-A882-A3A10AE7C22A}" ProductType="Enterprise"
ProductVersion="iVeriWebservice" Direction="Request">
<Transaction ApplicationID="{AF8E6E69-ADC5-4D4F-B446-43D2E1E598D3}" Command="Void" Mode="Live">
<MerchantReference>merchRef</MerchantReference>
</Transaction>
</V_XML>
158
Response Message
<V_XML Version="2.0" Direction="Response">
<Transaction ApplicationID="{AF8E6E69-ADC5-4D4F-B446-43D2E1E598D3}" Command="Void" Mode="Live"
RequestID="{03AACDCD-5EA1-4961-B7C3-14CFC26D2B6F}">
<Result Status="0" AppServer="BOROMIR" DBServer="ARWEN" Gateway="iVeri Client "gateway"" />
<MerchantReference>merchRef</MerchantReference>
</Transaction>
</V_XML>
7. Void by Trace
Request Message
<V_XML Version="2.0" CertificateID="{1DE2555B-5958-487C-A882-A3A10AE7C22A}" ProductType="Enterprise"
ProductVersion="iVeriWebservice" Direction="Request">
<Transaction ApplicationID="{AF8E6E69-ADC5-4D4F-B446-43D2E1E598D3}" Command="Void" Mode="Live">
<OriginalMerchantTrace>b5181eb0-b3b6-4811-a960-0000c4a0ae63</OriginalMerchantTrace>
</Transaction>
</V_XML>
Response Message
<V_XML Version="2.0" Direction="Response">
<Transaction ApplicationID="{AF8E6E69-ADC5-4D4F-B446-43D2E1E598D3}" Command="Void" Mode="Live"
RequestID="{03AACDCD-5EA1-4961-B7C3-14CFC26D2B6F}">
<Result Status="0" AppServer="BOROMIR" DBServer="ARWEN" Gateway="iVeri Client "gateway"" />
<OriginalMerchantTrace>b5181eb0-b3b6-4811-a960-0000c4a0ae63</OriginalMerchantTrace>
</Transaction>
</V_XML>
8. Void by Follow-up
Request Message
<V_XML Version="2.0" CertificateID="{1DE2555B-5958-487C-A882-A3A10AE7C22A}" ProductType="Enterprise"
ProductVersion="iVeriWebservice" Direction="Request">
<Transaction ApplicationID="{AF8E6E69-ADC5-4D4F-B446-43D2E1E598D3}" Command="Void" Mode="Live">
<OriginalRequestID>{BDB162C6-D1CE-494E-BD66-ED40DF2B2B70} </OriginalRequestID>
</Transaction>
</V_XML>
Response Message
<V_XML Version="2.0" Direction="Response">
<Transaction ApplicationID="{AF8E6E69-ADC5-4D4F-B446-43D2E1E598D3}" Command="Void" Mode="Live"
RequestID="{03AACDCD-5EA1-4961-B7C3-14CFC26D2B6F}">
<Result Status="0" AppServer="BOROMIR" DBServer="ARWEN" Gateway="iVeri Client "gateway"" />
<OriginalRequestID>{BDB162C6-D1CE-494E-BD66-ED40DF2B2B70} </OriginalRequestID>
</Transaction>
</V_XML>
159
9. Sale with 3D Secure Elements
Request Message
<V_XML Version="2.0" CertificateID="{}" Direction="Request">
<Transaction ApplicationID="" Command="Void" Mode="Test">
<CardHolderAuthenitcationID></CardHolderAuthenitcationID>
<CardHolderAuthenticationData></CardHolderAuthenticationData>
<Amount></Amount>
<ElectroniceCommerceIndicator></ElectroniceCommerceIndicator>
<MerchantReference></MerchantReference>
<PAN></PAN>
</Transaction>
</V_XML>
Request Message
<V_XML CertificateID="172bc42c-7ffb-44d0-a1e4-441444e1274c" Direction="Request" ProductType="Enterprise"
ProductVersion="iVeriClient.JAVA v4.0.2" Version="2.0">
<Enquiry ApplicationID="1e983347-de24-406f-9a63-db63bc922f54" Command="RequestForDebit" Mode="Test">
<CardHolderName>John</CardHolderName>
<CardholderEmail>[email protected]</CardholderEmail>
<Amount>2000</Amount>
<Currency>ZAR</Currency>
<MerchantReference>1477917063526</MerchantReference>
<OrderDescription/>
<RequestExpiryDate>20161209</RequestExpiryDate>
<CreateTransactionUrl>False</CreateTransactionUrl>
</Enquiry>
</V_XML>
Response Message
<V_XML Direction="Response" Version="2.0">
<Enquiry ApplicationID="{1E983347-DE24-406F-9A63-DB63BC922F54}" Command="RequestForDebit" Mode="Test"
RequestID="{1D0AA3F7-F355-486C-B11B-367A6D070E8E}">
<Result Status="0" AppServer="BOROMIR" DBServer="ARWEN" Gateway="iVeri Client "gateway"" />
<MerchantReference>1477917063526</MerchantReference>
</Enquiry>
</V_XML>
160
26. APPENDIX B: ACS REDIRECT EXAMPLE
PAGE
TermUrl Termination URL on your Web site where the card-issuing bank posts the
MD Merchant data that you can use to match the response to the customer’s
order. Although iVeri recommend that you use the RequestID, you can
also use an order number. This field is required, but including a value is
optional. The value, which has no meaning for the bank, is returned to you
as is.
161
process:
HTML code: – Card issuer's authentication form: display an inline frame in a
browser page that does not contain other content, such as promotional
information. The frame must be large enough to show the entire 400 x 400 pixels
without scrolling. You are not allowed to use a pop-up window.
Outside the frame, you must provide a brief message, for example:
Please wait while we process your request. Do not click the Back button or refresh the
page. Otherwise this transaction may be interrupted.
Activation form: complete Web page. Ensure that your customers can see the entire form or can
scroll if necessary.
162
Example Text:
To increase the security of your online purchase, <business name> has partnered with
<Visa, MasterCard>.
If you have signed up for Verified by <Visa, MasterCard>, please complete your bank's
form to authenticate your card. The process takes about 15 seconds. If you do not
currently participate in this authentication program, you can sign up now by completing
your card issuer's form. If your issuing bank does not require this service, you can
cancel or bypass the service. While testing your integration, verify that the frames are
large enough.
PaRes Digitally signed PARes message that contains the authentication result. Note
that the field name has a lowercase a (PaRes), but the message name has an uppercase A (PARes).
163
After authentication is completed, the customer is redirected to your TermURL.
Authentication Failed
Because your card issuer cannot authenticate this card, please select
another card or form of payment to complete your purchase.
164
27. APPENDIX C: OUT OF BAND - MERCHANT
WEBSERVICE
Below is a Webservice example which the merchant can implement in order to consume the transaction responses as
and when they are available from the Out of Band notification system.
decoded_response = System.Text.ASCIIEncoding.ASCII.GetString(response_data);
response_message = decoded_response;
Log.WriteLog(response_message);
return response_message;
165
28. APPENDIX D: UPOP AUTHENTICATION
REDIRECT EXAMPLE PAGE
166
28.3.1 Timing between Authentication and Authorization
Upon receipt of the authentication response, less than 3 minutes. Otherwise, the authorization
may fail.
Steps 1 and 2 involve the Cardholder placing an order with the Merchant and the Merchant making an authorization request.
Steps 3 – 6 involve UPOP authenticating the Cardholder.
167
*Note: For credit card, you can skip Steps 2 – 3 and collect card CVN2 and Expiration date to initial authorization request
directly3.
The Cardholder submits an online order to the Merchant and chooses the UnionPay online payment (UPOP) method. After
the Cardholder enters the card number4, the Merchant server or gateway determines whether or not it is UnionPay card.
Figure 2.2-2 Example dialog where Cardholder chooses a UnionPay card to pay online.
The Merchant server sends an authentication request to the UPOP server via the Cardholder’s device (PC, tablet,
or smart phone), using the URL provided by UPI. For more information, see 3. Authentication Messages
The Cardholder’s device displays a webpage that contains purchase details and prompts the cardholder to enter
their SMS verification code and card information as necessary. This webpage may be on a framed inline, a pop-
up window or a browser redirection to UPOP’s authentication webpage.
168
Figure 2.2-3 UPOP Authentication Page where Cardholder chooses a UnionPay card to pay
Figure 2.2-4 UPOP Authentication Page where Cardholder chooses a UnionPay debit card to pay
The Cardholder receives a verification code by SMS. The Cardholder enters their SMS verification
code and additional credit card information as necessary and then clicks the Submit button.
Step 5–The UPOP server builds and forwards the authentication request
169
The UPOP server builds an authentication request with the entered information and forwards the
request to the Issuer server.
Step 6–The Issuer server responds and the UPOP server builds an authentication response
The Issuer server responds by sending the authentication result to the UPOP server, which
displays the authentication result to the Cardholder. If successfully authenticated, the UPOP server
builds an authentication response.
Step 7–The Merchant server receives and processes the authentication response
UPOP sends to the merchant server both a back-end notification via system interaction and a
front-end notification via the cardholders device. a POST that contains the results of the
authentication in a ACPRes message.
ACPRes Digitally signed ACPRes message that contains the authentication result.
Step 8–The Merchant server sends the received Authentication Response message to iVeri
The merchant sends the ACPRes back to iVeri in the field:
UPOP_ACPRes
UPOP_RequestID
UPOP_TransactionTime
170