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.
Parameter | Meaning |
---|---|
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.
Parameter | Description |
---|---|
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. |
Updated 24 days ago