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 8 Next »

See Cancellation Service on the Amadis Wiki for more information about the Cancellation Service.

Below is an example derived from a cancellation.

public static PaymentParams createReversal(String trxReference) {
        PaymentParams params = new PaymentParams(PaymentServiceID.Cancellation);
        
        //Date //Time //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);
        params.paramTree.AddEMVDate(ArkosTags.TransactionDate, cal.get(Calendar.YEAR) % 100, cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH));
        params.paramTree.AddEMVTime(ArkosTags.TransactionTime, cal.get(Calendar.HOUR), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND));
        params.paramTree.AddBin(ArkosTags.LocalTimezone, utcOffset);

        //Language
        params.paramTree.AddAscii(ArkosTags.SelectedLanguage, "en");
        
        TlvTree originalTransaction = params.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.AddAscii(ArkosTags.ReferenceData,"1234567890");
        originalTransaction.AddEnum(ArkosTags.SelectedService, PaymentServiceID.Payment);
        
        params .AddBin(ArkosTags.TransactionAmount, new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 });
        params .AddBin(ArkosTags.AmountAuthorised, new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 });
        params .AddBin(ArkosTags.TransactionAmountBeforeAdjustment, new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 });
        
        return params;
    }

It is to be noted that, upon carrying out a cancellation/reversal, the transaction reference is now set under the TlvTree Original Transaction.

It is mandatory to include the original transaction date, time, and service( which will always be payment and will later be overridden by the value we get from the batch for the corresponding transaction reference number).

  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.AddEnum(ArkosTags.SelectedService, PaymentServiceID.Payment);

trxReference = "1234567890" in our example.

  • No labels