Amadis

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

THIS PAGE ACCESS IS CURRENTLY RESTRICTED TO AUTHORIZED USERS ONLY.

PLEASE DO NOT PUBLISH THE PAGE WITHOUT THE PRODUCT OWNER PERMISSION

The cancellation service has been modified to support an online cancellation without searching from the log. From now on, a merchant is able to do :

  • Online Cancellation using the transaction log ( As in previous versions).

  • Offline Cancellation ( As in previous versions).

  • Online Cancellation without searching from the log.

Online Cancellation without searching from the log.

It is to be noted that a slight modification was made to the flow of the latter (Online Cancellation without searching from the log) to help retrieve some Infos; such as AcquirerID, TerminalID, and etc. As it stands, this seems to be lackluster from Nexofast as they haven't thought out this solution properly. Upon implementing the flow they provided to us (nexoFAST 3.2), we ended up having some issues.

A new function was introduced as a solution to the problem.

The function setSelectedApplicationProfileNumberToDefaultFromServiceEntry allows us to set a profile, initialized the application, and finally, construct valid messages.

Below is the modified diagram.

Steps Taken for a successful online cancellation without searching from the log:

  • Terminal Settings ( Tag DF34 byte 3, bit 8 and bit 6 set to 1 , bit 7 set to 0).

Reference data has been included in the Original Transaction section of CancellationAuth and CancellationAdvice.

Below is an example derived from a cancellation of an original transaction(payment).

 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 });

TlvTree originalTransaction = paymentParams.AddChild(ArkosTags.OriginalTransaction);
originalTransaction.AddEMVDate(ArkosTags.TransactionDate, cal.get(Calendar.YEAR) % 100, cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH));
originalTransaction.AddEMVTime(ArkosTags.TransactionTime, cal.get(Calendar.HOUR), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND));
originalTransaction.AddBin(ArkosTags.LocalTimezone, utcOffset);
originalTransaction.AddAscii(ArkosTags.ReferenceData,"1234567890");
originalTransaction.AddEnum(ArkosTags.SelectedService, PaymentServiceID.Payment);

paymentParams.AddAscii(ArkosTags.ReferenceData,"1234567890");


  • No labels