On the onActivityResult(int requestCode, int resultCode, Intent data) The Intent data will contain the return value as extra all in String value. If there is a problem with the data sent to the application, an error code will be sent back into the TERMINALERRORCODE extraData, otherwise, RSPCODE will be the response code from the switch.
Error Codes
Value of the error code if application reject: Android PayFacto Error Codes
List of extra data receive:
Extra Data on Activity Result | Description | Note |
|---|
TERMINALERRORCODE | Terminal error code | |
RSPCODE | Response code, if the value is not negative, it will be represented by a 3 digits value where “000” means approved and everything else is declined | “000” = approved “05“ = Declined empty mean it was cancelled |
AUTHCODE | Authorization code | |
BATCHNBR | Batch number | |
SEQNBR | Transaction number | UUID of the transaction number, as a string (used for void, completion of a preauth, or reprint) |
INVNBR | Invoice number | |
TIMESTAMP | Timestamp | |
ISSUERCARDTYPE | Issuer card type | Visa = “VISA” MasterCard = “MASTERCARD” Amex = “AMEX” Discover = “DISCOVER” Diners = “DINERS” JCB = “JCB” Cash = “CASH” Interac = “INTERAC” |
CARDTYPE | Cardtype (C for Credit, D for Debit) | |
MASKEDCARDNBR | Masked card number | |
EXPDATE | Expiration date of the card | |
ENTRYMODE | Entry mode | D = EMV Contact
F = Fallback
M = Manual entry
C = Contactless
S = Swipe
|
APPLABEL | Application label use. | |
AID | Application identification number | |
TVR | Terminal verification result | |
TSI | Transaction Status Indicator | |
CVM | CVM result | |
ARQC | Tag 9f26 application cryptogram | |
AUTHRESULT | Auhtorization result | -1 = null
0 = TC, offline approved
1 = AAC offlline declined
2 = ARQC online approved
|
ISDEBIT | Transaction is debit or not, boolean value | |
ACTTYPE | account type of the transaction, 1 for checking, 2 for saving, string value | |
AMOUNT | Transaction amount | |
TIP | Tip amount | |
CASHBACK | Cashback amount | |
FEES | Fees amount | |
APPVERS | Application version | |
TERMID | Terminal ID | |
TRXRSLTSTR | Transaction result in String value | |
TRXDATE | Transaction date | |
TRXTIME | Transaction time | |
MERCHNAME | Merchant name | |
MERCHSTRADR | Merchant street address | |
MERCHCITYPROV | Merchant city and province | |
EXTRADISP | Extra data to display on receipt | |
CLERKID | Clerk Id | |
CUSTLANG | | Customer language |
RECEIPT | Receipt as plain text that can be used to print | text |
TRAININGMODE | Training mode | True if training mode active |
AUTOSETTLETIME | First auto settle time set in payment app. Null if no time is set. | The time is in milliseconds, use it to get the hour and minutes of the settlement time. |
Additional Values from the Settlement Transaction Only
| Extra data on activity result | Description |
|---|
| “BATCHNBR” | Settlement batch number |
| “SETTPREVAMOUNT” | Settlement previous batch settled amount |
| “SETTRESPCODE” | Settlement response code |
| “SETTAMOUNT” | Settlement total amount |
| “SETTDATETIME” | Settlement date time |
| “SETTCOUNT” | Settlement total count |
| “SETTAMEXCOUNT” | Settlement American Express count |
| “SETTAMEXTOTAL” | Settlement American Express total amount |
| “SETTDISCCOUNT” | Settlement Discover count |
| “SETTDISCTOTAL” | Settlement Discover total amount |
| “SETTJCBCOUNT” | Settlement JCB count |
| “SETTJCBTOTAL” | Settlement JCB total amount |
| “SETTINTERACCOUNT” | Settlement Interac count |
| “SETTINTERACTOTAL” | Settlement Interac total amount |
| “SETTMASTERCOUNT” | Settlement MasterCard count |
| “SETTMASTERTOTAL” | Settlement MasterCard total amount |
| “SETTVISACOUNT” | Settlement Visa count |
| “SETTVISATOTAL” | Settlement Visa total amount |
Code Example
JavaScript
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
String value = "";
if (data != null )
{
value += "TERMINALERRORCODE = " + data.getIntExtra("TERMINALERRORCODE", 0) + "\n";
value += "MERCHNAME = " + data.getStringExtra("MERCHNAME") + "\n";
value += "MERCHSTRADR = " + data.getStringExtra("MERCHSTRADR") + "\n";
value += "MERCHCITYPROV = " + data.getStringExtra("MERCHCITYPROV") + "\n";
value += "EXTRADISP = " + data.getStringExtra("EXTRADISP") + "\n";
value += "TERMID = " + data.getStringExtra("TERMID") + "\n";
value += "TRXDATE = " + data.getStringExtra("TRXDATE") + "\n";
value += "TRXTIME = " + data.getStringExtra("TRXTIME") + "\n";
value += "RSPCODE = " + data.getStringExtra("RSPCODE") + "\n";
value += "AUTHCODE = " + data.getStringExtra("AUTHCODE") + "\n";
value += "BATCHNBR = " + data.getStringExtra("BATCHNBR") + "\n";
value += "SEQNBR = " + data.getStringExtra("SEQNBR") + "\n";
value += "INVNBR = " + data.getStringExtra("INVNBR") + "\n";
value += "TIMESTAMP = " + data.getStringExtra("TIMESTAMP") + "\n";
value += "ISSUERCARDTYPE = " + data.getStringExtra("ISSUERCARDTYPE") + "\n";
value += "CARDTYPE = " + data.getStringExtra("CARDTYPE") + "\n";
value += "MASKEDCARDNBR = " + data.getStringExtra("MASKEDCARDNBR") + "\n";
value += "EXPDATE = " + data.getStringExtra("EXPDATE") + "\n";
value += "ENTRYMODE = " + data.getStringExtra("ENTRYMODE") + "\n";
value += "APPLABEL = " + data.getStringExtra("APPLABEL") + "\n";
value += "AID = " + data.getStringExtra("AID") + "\n";
value += "TVR = " + data.getStringExtra("TVR") + "\n";
value += "TSI = " + data.getStringExtra("TSI") + "\n";
value += "AMOUNT = " + data.getStringExtra("AMOUNT") + "\n";
value += "TIP = " + data.getStringExtra("TIP") + "\n";
value += "CASHBACK = " + data.getStringExtra("CASHBACK") + "\n";
value += "FEES = " + data.getStringExtra("FEES") + "\n";
value += "APPVERS = " + data.getStringExtra("APPVERS") + "\n";
value += "TRXRSLTSTR = " + data.getStringExtra("TRXRSLTSTR") + "\n";
value += "CLERKID = " + data.getStringExtra("CLERKID") + "\n";
value += "ACTTYPE = " + data.getStringExtra("ACTTYPE") + "\n";
value += "CUSTLANG = " + data.getStringExtra("CUSTLANG") + "\n";
value += "ISDEBIT = " + (data.getBooleanExtra("ISDEBIT", false) ? "true" : "false" )+ "\n";
value += "TRAININGMODE = " + data.getBooleanExtra("TRAININGMODE", false) + "\n";
value += "AUTOSETTLETIME = " + data.getStringExtra("AUTOSETTLETIME") + "\n";
value += "SETTBATCH = " + data.getStringExtra("SETTBATCH") + "\n";
value += "SETTPREVAMOUNT = " + data.getStringExtra("SETTPREVAMOUNT") + "\n";
value += "SETTRESPCODE = " + data.getStringExtra("SETTRESPCODE") + "\n";
value += "SETTAMOUNT = " + data.getStringExtra("SETTAMOUNT") + "\n";
value += "SETTDATETIME = " + data.getStringExtra("SETTDATETIME") + "\n";
value += "SETTTOTAL = " + data.getStringExtra("SETTTOTAL") + "\n";
value += "SETTAMEXCOUNT = " + data.getStringExtra("SETTAMEXCOUNT") + "\n";
value += "SETTAMEXTOTAL = " + data.getStringExtra("SETTAMEXTOTAL") + "\n";
value += "SETTDISCCOUNT = " + data.getStringExtra("SETTDISCCOUNT") + "\n";
value += "SETTDISCTOTAL = " + data.getStringExtra("SETTDISCTOTAL") + "\n";
value += "SETTJCBCOUNT = " + data.getStringExtra("SETTJCBCOUNT") + "\n";
value += "SETTJCBTOTAL = " + data.getStringExtra("SETTJCBTOTAL") + "\n";
value += "SETTINTERACCOUNT = " + data.getStringExtra("SETTINTERACCOUNT") + "\n";
value += "SETTINTERACTOTAL = " + data.getStringExtra("SETTINTERACTOTAL") + "\n";
value += "SETTMASTERCOUNT = " + data.getStringExtra("SETTMASTERCOUNT") + "\n";
value += "SETTMASTERTOTAL = " + data.getStringExtra("SETTMASTERTOTAL") + "\n";
value += "SETTVISACOUNT = " + data.getStringExtra("SETTVISACOUNT") + "\n";
value += "SETTVISATOTAL = " + data.getStringExtra("SETTVISATOTAL") + "\n";
}
AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
alertDialog.setTitle("Alert");
alertDialog.setMessage(value);
alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog.show();
((TextView)findViewById(R.id.textView)).setText( "Response code = " + String.format("%03d",resultCode));
}