Debi Check (Optional)

What is DebiCheck?

DebiCheck is a type of debit order that requires you to confirm your debit order with your bank when entering into a contract with a service or credit provider. Using DebiCheck reduces the risk of an incorrect or fraudulent debit order being collected because the debit order can only be done according to the approved agreement (mandate).

👍

Ecentric Payment System role in processing DebiCheck mandates:

Though the DebiCheck TT3 is a comprehensive solution, Ecentric Payment Systems is specifically responsible for the TT3.


The DebiCheck TT3 authentication call allows 3rd party applications to request an authentication for a recurring debit order as per the PASA DebiCheck regulations, into their applications.

To process the Debicheck TT3 authentication request, 3rd party developers must launch the Ecentric Payment App and then process the response data to understand if the debit order authentication request succeeded or failed.


📘

Note:

Ecentric only processes the authentication process, not the subsequent debiting of the Card Holder's account. A 'MAC' is then returned in the response, a number which permits the Integrator to debit money using a platform which manages in settlement.


3rd party applications need to use the following code to invoke the Ecentric Payment App in their code:

DebiCheck Request code:

private String appURL = "payment.thumbzup.com";
private String appClass = "payment.thumbzup.com.IntentActivity";

Intent intent = new Intent(); intent.setClassName(appURL, appClass);
Bundle dataBundle = new Bundle();
dataBundle.putString("launchType", "AUTHENTICATED_COLLECTION");
dataBundle.putString("applicationKey", "2fdca02f-3cbe-4e8c-82ad-86a1a16b72e7");
dataBundle.putString("merchantID", "910100000000001");
dataBundle.putString("merchantUsername", "default");
dataBundle.putString("authenticationKey", "c282cdd3-59d2-42ff-8c96-826725a27e6e");
dataBundle.putLong("accountNumber", 10000); // not mandatory
dataBundle.putLong("collectionAmount", 2500);
dataBundle.putLong("collectionAmountMax", 3500);
dataBundle.putString("debtorIDType", "RSA_ID");
dataBundle.putString("debtorID", "1234567891234");
dataBundle.putString("contractNumber", "000000"); 
dataBundle.putString("transactionUuid", " 491321f4-c900-40a0-b5fa-4d8c0d7a91b7");

intent.putExtra("thumbzupBundle", dataBundle);
startActivityForResult(intent, 0);

Input Parameters

The table below describes the input parameters that must be provided for a DebiCheck payment request.

ParameterMeaning
launchType Must be “AUTHENTICATEDCOLLECTION”.

__Used for launching the Ecentric Payment App to process a DebiCheck TT3 Authentication request.
_
isApproved Represents the processing result from a card perspective of the transaction. This will indicate whether or not the payment will occur or not. Valid values are:
● true – card payment will be made by the issuer
● false – card payment failed due to for example invalid PIN
● error – card payment failed due to an unknown error
resultCode Represents the result of the transaction from the Ecentric Payment app. Valid values are:
● 01 – transaction successful
● 02 – transaction declined
● 03 – transaction aborted
● 04 – error
resultDescription A user readable representation of the above resultCode i.e. Approved for 01 resultCode
collectionAmount The amount that will be debited from the cardholder account
collectionAmountMax The maximum amount that can be debited from a cardholder in the cases of a variable debit order.
debtorIDType Can be one of:
● RSA_ID
● PASSPORT
debtorID The RSA ID number or passport number depending on the debtorIDType used
alwaysShowTransaction
StatusScreen
Once the Ecentric Payment App has processed a transaction there is a status screen that shows the success/failure of processing.
Set this flag to true if you would like this displayed otherwise false to hide it. Default is false.
transactionUuid Unique ID provided from 3rd party integrators.
Format: UUID version 4

Note: If the field was not populated by the 3rd party integrator a system generated transaction UUID will be assign for every new transaction.

Receipt function

The below code is used for the receipting function which in turn would allow the customer to receive a reciept of their transaction via cell or email

dataBundle.putBoolean("isReceiptRequired", true);
dataBundle.putString("cellNumberToSMSReceipt", "0123456789");
dataBundle.putString("emailAddressToSendReceipt", "[email protected]");

The below code is used for the receipting function which in turn would allow the customer to receive a reciept of their transaction via cell or email


Handling the DebiCheck TT3 Authentication response from the Ecentric Payment app

🚧

Important Note

There are scenarios where the Acquirer can approve a transaction (portrayed by the resultDescription = '00',) but the card subsequently declines it.
Always take the isApproved field as the final result of the transaction


DebiCheck response:

When the transaction is complete, the below code must be used to recover the transaction outcome and resume the 3rd party app flow accordingly

Bundle[{

    debtorIDType=RSA_ID,
    thirdPartyMerchantNumber=null,
    authenticationKey=7fe86983-ecbe-4b1b-b5f0-69a5d5125f05, 
    resultDescription=Chip Decline,
    isReceiptRequired=true,
    latitude=0.0,
    fwUpdateDate=null,
    buildInfo=ABSA,
    externalSTAN=0,
    terminalId=98000081,
    applicationKey=6397dead-7d4b-47f7-a0a5-71e5d1705fc4,
    externalInvoiceGUID=null,
    fwUpdateVersion=null,
    externalRRN=null,
    accountNumber=555555,
    isReceiptDataAvailable=true,
    pebbleFirmwareVersion=v3.1.6,
    resultCode=,
    transactionDescription=null,
    fwUpdateAvailable=false,
    receiptBundle=Bundle[{
                MERCHANT_REGION_CODE=05,
                RC_ALT=00,
                STATUS=DECLINED,
                BUDGET_PERIOD=,
                CARD_TYPE=Chip,
                PAN_WITH_BIN=528497** **** 1869,
                MERCHANT_ID=000001695253,
                TIMESTAMP=1601969064036,
                EXTERNAL_TRANSACTION_DATETIME=,
                PROCESSING_CODE=,
                RC_DESCRIPTION=Chip Decline,
                EXTERNAL_INVOICE_GUID=,
                REPLACEMENT_MERCHANT_ID=,
                TXN_CNTR=N/A,
                AUTH_PROFILE=,
                INTERCHANGE=Hybrid,
                ESC_BY_AUTH_CODE=226 30 IT ,
                TX_TYPE=INQUIRY,
                ACC_TYPE_DESC=Savings,
                CURRENCY_CODE=ZAR,
                AUTH_CODE=,
                RC=00,
                AID=A0000000041010,
                CVM=PIN Verified,
                CVR=410302,
                PAN=**** **** **** 1869 ,
                RRN=000084280001,
                TSI=E800,
                TVR=0400008000,
                APSN=,
                DATE=2020-10-06T07:24:24.036+0000,
                STAN=,
                NAME_ON_CARD=ABDULLAH/MM.MR,
                AMOUNT_CENTS=0,
                ABS_AMOUNT=0.00,
                RECEIPT_NUMBER=,
                TERMINAL_ID=98000081,
                TX_TYPE_DESCRIPTION=INQUIRY,
                EXTERNAL_TERMINAL_ID=,
                FORMATTED_OTHER_AMOUNT=R 0.00,
                FORMATTED_AMOUNT=R 0.00,
                DESCRIPTION=,
                SETTLEMENT_DATE=2020-10-06T07:24:21.158+0000,
                EXTERNAL_TRANSACTION_GUID=,
                CARD_BIN=528497,
                REPLACEMENT_TERMINAL_ID=,
                POS_ENTRY=,
                RC_ISO_DESCRIPTION=Chip Decline,
                MERCHANT_CITY=RICHARDS BAY,
                MERCHANT_NAME=PLANET AWESOME,
                CUSTOMER_NAME=,
                OTHER_AMOUNT=0.00,
                APP_VERSION=4.0.427,
                CARD_SEQ_NO=,
                APP_LABEL=Savings,
                INVOICE_NUM=,
                MESSAGE_1=,
                MESSAGE_2=,
                CARD_TRANSACTION_TYPE=ICC,
                MERCHANT_COUNTRY_CODE=ZA,
                REPRINT=,
                PAN_HASH=77780211E9708C3DA87B2ABD899281237BF9DDD98F61751C8D742E786B5A0DB5,
                AMOUNT=0.00,
                DIGITS=1869,
                CVM_ABSA=PIN Verified 
 }], 
 
             overrideMerchantNumber=null,
             [email protected], 
             merchantID=000001695253,
             merchantUsername=default,
             externalTerminalId=null,
             pebbleSerialNumber=B26703220006FD7FFD060AE89D,
             longitude=0.0,
             thirdPartyUsername=null,
             invoiceNumber=null,
             isApproved=false,
             keepAliveMinutes=0,
             launchType=AUTHENTICATED_COLLECTION,
             debtorID=1111111111111,
             keepAliveAfterExit=false,
             collectionAmountMax=3500,
             merchantName=PLANET AWESOME,
             deviceIMEI=353266080163066,
             contractNumber=000000,
             macData=,
             cellNumberToSMSReceipt=0087546253,
             customerName=null,
             alwaysShowTransactionStatusScreen=false,
             externalTransactionGUID=null,
             transactionReferenceNo=null,
             transactionUuid=c9e32709-458f-4573-afdc-a4f2a90a942f,
             appVersion=4.0.427,
             externalTransactionDateTime=null,
             collectionAmount=2500
 }]

Response parameters

The table below describes the parameters that must be provided DebiCheck payment Response.

ParameterDescription
launchType Echo of the launchType used to launch the Ecentric Payment app.
isApproved Represents the processing result from a card perspective of the transaction. This will indicate whether or not the payment will occur or not. Valid values are:
● true – card payment will be made by the issuer
● false – card payment failed due to for example invalid PIN
● error – card payment failed due to an unknown error
resultCode Represents the result of the transaction from the Ecentric Payment app. Valid values are:
● 01 – transaction successful
● 02 – transaction declined
● 03 – transaction aborted
● 04 – error
resultDescription A user readable representation of the above resultCode i.e. Approved for 01 resultCode
contractNumber Echo of the contractNumber used to launch the Ecentric Payment app.
accountNumber Echo of the accountNumber used to launch the Ecentric Payment app.
debtorIDType Echo of the debtorIDType used to launch the Ecentric Payment app.
debtorID Echo of the debtorID used to launch the Ecentric Payment app.
collectionAmount Echo of the collectionAmount used to launch the Ecentric Payment app.
collectionAmountMax Echo of the value used to launch the Ecentric Payment app.
isReceiptDataAvailable A boolean indicating whether or not a receiptBundle parameter is available. Will always be there for accepted or declined transactions.
receiptBundle Consists of a sub-bundle of server parameters that can be used by the partner application. For a full list of these parameters see the Additional Server Fields section.
pebbleFirmwareVersion The software version currently running on the Payment Pebble®
transactionUuid Unique ID provided from 3rd party integrators.
Format: UUID version 4

Note: If the field was not populated by the 3rd party integrator a system generated transaction UUID will be assign for every new transaction.