Original Credit used to cash out money in casinos is a Service that allows the card acceptor to perform a credit to a cardholder’s account. An Original Credit is not preceded by card payment.
Original Credit is similar to Refund service. You can do online, offline transactions as well as transactions with reference data.
Below are the two Tags that can be set on Atheos using the needed values.
Name
Tag
Table
Length
Format
presence
Name
Tag
Table
Length
Format
presence
Original Credit Max Amount
DF5B
E6
6
n12
Optional
Original Credit Protection Amount
DF5C
E1
6
n12
optional
Â
Tag Original Credit Max Amount if configured, will abort the transaction if the transaction amount is higher than the maximum amount set.
Tag Original Credit Protection Amount if configured, will call the nexofast entry, MSG_ENTRY_SERVICE_PERMITTED, to validate the Transaction Amount. This happens when the transaction amount is higher than the protection amount set.
Initiate an Original Credit
// Minimal parameter set
TlvTree paymentParams = TlvTree.Empty();
paymentParams.AddEnum(ArkosTags.SelectedService, PaymentServiceID.OriginalCredit);
// Amounts are in BCD. In most cases, all 3 amounts should be the same value.
paymentParams.AddBin(ArkosTags.TransactionAmount, new byte[] { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00 });
paymentParams.AddBin(ArkosTags.AmountAuthorised, new byte[] { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00 });
paymentParams.AddBin(ArkosTags.TransactionAmountBeforeAdjustment, new byte[] { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00 });
// The system needs to provide the Date and Time of this transaction, and the local TimeZone
Calendar cal = Calendar.getInstance();
int utcOffsetMinutes = cal.getTimeZone().getOffset(cal.getTimeInMillis()) / 1000 / 60;
byte[] utcOffset = new byte[2];
utcOffset[0] = (byte) (utcOffsetMinutes / 60);
utcOffset[1] = (byte) (utcOffsetMinutes % 60);
paymentParams.AddEMVDate(ArkosTags.TransactionDate, cal.get(Calendar.YEAR) % 100, cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH));
paymentParams.AddEMVTime(ArkosTags.TransactionTime, cal.get(Calendar.HOUR), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND));
paymentParams.AddBin(ArkosTags.LocalTimezone, utcOffset);
paymentParams.AddAscii(ArkosTags.SelectedLanguage, "en");
// Call to the doPayment API, sending the Arkos configuration, and parameters as a byte Array
PaymentResult result = arkos.doPayment(configuration, paymentParams.AsBytes());
Â
Â
Data Parameters
Required - Original Credit
Name
Tag
Format
Usage
Name
Tag
Format
Usage
Selected Service
CE
u8; 1
14: Original Credit
Identification of the payment service requested
Transaction Amount
D5
BCD; 12 fixed exponent (2)
Amount of the transaction
Authorised Amount
9F02
BCD; 12 fixed exponent (2)
Â
Transaction Amount Before Adjustment
DFFF47
BCD; 12 fixed exponent (2)
Â
Transaction Time
9F21
BCD; 6 HMS, two nibbles per element Ex: [0x16, 0x17, 0x27] (16:17:27)
Time at which the current action is performed
Transaction Date
9A
BCD; 6 YMD, two nibbles per element Ex: [0x20, 0x08, 0x16] (2020-aug-16)
Date at which the current action is performed
Local Time Zone
DF9F3F
i8; 2 Hour and minute offset, one byte each Ex: [-5, 0]
Local Timezone in which the current action is performed
Selected Language
CD
ASCII; 2 Ex: "en"
Â
Optional - General
Name
Tag
Format
Usage
Name
Tag
Format
Usage
Transaction Channel
0xDFBF60
u8; 1
00: None 01: Mail 02: Telephone 03: eCommerce 04: Television Payment 05: Secured Electronic Commerce 06: Mobile Payment 07: Mobile POS
This value will be present in nexo acquirer message if present.