Tokenization for Recurring transactions

Technical questions relating to the Java iVeri Client integration
Post Reply
samora
Posts: 54
Joined: Thu Sep 17, 2015 3:29 pm

Fri May 05, 2017 10:03 am

Note that this applies to transactions that are first processed on an eCommerce platform where 3DS is mandated then there after monthly debits need to be processed.
The same principle may be applied for the Batch (product) recurring transaction even though in the below example we have used a second Enterprise application ID which is not 3DS enforced.
First 3DS transaction

Please be advised that when doing your first transaction using application id: 00000000-263b-4315-b2cd-000000000000, the gateway will return theTransactionIndex, masked PAN and Expiry Date, which you will need to store in your database.

Request:

Code: Select all

<V_XML Version="2.0" CertificateID="{00000000-0000-0000-0000-000000000000}" ProductType="Enterprise" Direction="Request">
  <Transaction ApplicationID="{00000000-263b-4315-b2cd-000000000000}" Command="Debit" Mode="LIVE">
    <CardHolderAuthenticationID>Y2pLaUlVc0o1Wk5FdFR5bHJPUjA=</CardHolderAuthenticationID>
    <CardHolderAuthenticationData>AAACAREFQxCAgEiHKAVDAAAAAAA=</CardHolderAuthenticationData>
    <MerchantTrace>4541.6591.3298</MerchantTrace>
    <Amount>200</Amount>
    <BudgetPeriod>0</BudgetPeriod>
    <Currency>ZAR</Currency>
    <ElectronicCommerceIndicator>ThreeDSecure</ElectronicCommerceIndicator>
    <ExpiryDate>122017</ExpiryDate>
    <MerchantReference>8a8394825b5d670f015b90a4aff256c2</MerchantReference>
    <CardSecurityCode>...</CardSecurityCode>
    <CCNumber>4344........7019</CCNumber>
  </Transaction>
</V_XML>
Response:

Code: Select all

<V_XML Version="2.0" Direction="Response">
  <Transaction ApplicationID="{00000000-263b-4315-b2cd-000000000000}" Command="Debit" Mode="Live" RequestID="{4020CE01-8668-4CDF-A49D-2F955640C171}">
    <Result Status="0" AppServer="105IVERIAPPPR02" DBServer="105iveridbpr01" Gateway="MyBank" AcquirerCode="00" />
    <MerchantTrace>4541.6591.3298</MerchantTrace>
    <Amount>200</Amount>
    <AuthorisationCode>597591</AuthorisationCode>
    <Currency>ZAR</Currency>
    <ElectronicCommerceIndicator>ThreeDSecure</ElectronicCommerceIndicator>
    <ExpiryDate>122017</ExpiryDate>
    <MerchantReference>8a8394825b5d670f015b90a4aff256c2</MerchantReference>
    <Terminal>Default</Terminal>
    <TransactionIndex>{5C18C167-E6E3-4BAF-851B-6E6725430021}</TransactionIndex>
    <MerchantName>Company Name 3D</MerchantName>
    <MerchantUSN>2730380</MerchantUSN>
    <Acquirer>NBPostilionBICISONBSouthAfrica</Acquirer>
    <AcquirerReference>70421:04000029</AcquirerReference>
    <AcquirerDate>20170421</AcquirerDate>
    <AcquirerTime>151254</AcquirerTime>
    <DisplayAmount>R 2.00</DisplayAmount>
    <BIN>4</BIN>
    <Association>VISA</Association>
   <CardType>Unknown CardType</CardType>
    <Issuer>Unknown</Issuer>
    <Jurisdiction>International</Jurisdiction>
    <PANMode>Keyed,CVV</PANMode>
    <ReconReference>04000029</ReconReference>
    <CardHolderPresence>CardNotPresent,eCommerce,ThreeDSecure</CardHolderPresence>
    <MerchantAddress>MERCHANT ADDRESS</MerchantAddress>
    <MerchantCity>gtg</MerchantCity>
    <MerchantCountryCode>ZA</MerchantCountryCode>
    <MerchantCountry>South Africa</MerchantCountry>
    <DistributorName>MyBank</DistributorName>
    <CCNumber>****************</CCNumber>
    <PAN>4344........7019</PAN>
  </Transaction>
</V_XML>

The following field response values need to be stored on your database, linked to the card holder details.
  1. TransactionIndex
    PAN
    ExpiryDate

Recurring Transactions

Now comes the time you want to debit the same card, you will need to pass the following using application id 01010101-7694-4343-95EE-010101010101 which is not 3DS enforced.
Note that this is a different Application ID to the one used for initial transaction but must reside within the same user group.

For these kind of transactions you need to also include the following fields on your request:
  • PANFormat: This must always be fixed to TransactionIndex
  • PAN: You must provide the previous transaction ‘s response value. The masked pan must be populated.
  • ExpiryDate: You must provide the previous transaction ‘s response value.
The combination of the above are used by the gateway to retrieve the missing digits of the card. Should the above not match to the previous transaction then your transaction will fail.



Request:

Code: Select all

<V_XML Version="2.0" CertificateID="{00000000-0000-0000-0000-000000000000}" ProductType="Enterprise" Direction="Request">
<Transaction ApplicationID="{01010101-7694-4343-95EE-010101010101}" Command="Debit" Mode="Live">
<PANFormat>TransactionIndex</PANFormat>
<Amount>13000</Amount>
<Currency>ZAR</Currency>
<ExpiryDate>122017</ExpiryDate>
<MerchantReference>8a8394815b5d6315015b9fe240f15828</MerchantReference>
<TransactionIndex>{5C18C167-E6E3-4BAF-851B-6E6725430021}</TransactionIndex>
<PAN>4344........7019</PAN>
</Transaction>
</V_XML>

Response:

Code: Select all

<V_XML Version="2.0" Direction="Response">
            <Transaction ApplicationID="{01010101-7694-4343-95EE-010101010101}" Command="Debit" Mode="Live" RequestID="{C3056D47-FA18-4FB9-AC18-B902EF75D527}">
                        <Result Status="0" AppServer="105IVERIAPPPR01" DBServer="105IVERIDBPR01" Gateway="MyBank" AcquirerCode="00" />
                        <MerchantTrace>4170.6942.4338</MerchantTrace>
                        <Amount>13000</Amount>
                        <AuthorisationCode>144613</AuthorisationCode>
                        <Currency>ZAR</Currency>
                        <ExpiryDate>122017</ExpiryDate>
                        <MerchantReference>8a8394815b5d6315015b9fe240f15828</MerchantReference>
                        <Terminal>Default</Terminal>
                        <TransactionIndex>{32F42EAF-F1F1-4D2D-966C-DF2C5ED7DB21}</TransactionIndex>
                        <MerchantName>Company Name</MerchantName>
                        <MerchantUSN>2730380</MerchantUSN>
                        <Acquirer>NBPostilionBICISONBSouthAfrica</Acquirer>
                        <AcquirerReference>70424:04000031</AcquirerReference>
                        <AcquirerDate>20170424</AcquirerDate>
                        <AcquirerTime>141417</AcquirerTime>
                        <DisplayAmount>R 130.00</DisplayAmount>
                        <BIN>4</BIN>
                        <Association>VISA</Association>
                        <CardType>Unknown CardType</CardType>
                        <Issuer>Unknown</Issuer>
                        <Jurisdiction>International</Jurisdiction>
                        <PANMode>Keyed</PANMode>
                        <ReconReference>04000031</ReconReference>
                        <CardHolderPresence>CardNotPresent</CardHolderPresence>
                        <MerchantAddress>MERCHANT ADDRESS</MerchantAddress>
                        <MerchantCity>GTG</MerchantCity>
                        <MerchantCountryCode>ZA</MerchantCountryCode>
                        <MerchantCountry>South Africa</MerchantCountry>
                        <DistributorName>MyBank</DistributorName>
                        <CCNumber>****************</CCNumber>
                        <PAN>4344........7019</PAN>
            </Transaction>
</V_XML>

Note in the above response you will receive a new TransactionIndex and that you will need to make use of <TransactionIndex{32F42EAF-F1F1-4D2D-966C-DF2C5ED7DB21}</TransactionIndex> (see response above) for the next transaction and daisy chain these everytime you get a response from the gateway as the TransactionIndex expires after six months.
Post Reply