Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Expand
titleAccptrCmpltnAdvcRspn

Code Block
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:caaa.004.001.06">
  <AccptrCmpltnAdvcRspn>
    <Hdr>
      <MsgFctn>CMPK</MsgFctn>
      <PrtcolVrsn>6.0</PrtcolVrsn>
      <XchgId>2</XchgId>
      <CreDtTm>2022-01-18T20:11:26.897+00:00</CreDtTm>
      <InitgPty>
        <Id>Amadis</Id>
      </InitgPty>
      <RcptPty>
        <Id>Amadis</Id>
      </RcptPty>
    </Hdr>
    <CmpltnAdvcRspn>
      <Envt>
        <AcqrrId>
          <Id>10009287351</Id>
        </AcqrrId>
        <MrchntId>
          <Id>00000NEXOMER001</Id>
        </MrchntId>
        <POIId>
          <Id>ASA00001</Id>
        </POIId>
      </Envt>
      <Tx>
        <TxId>
          <TxDtTm>2022-01-18T03:08:22.000-05:00</TxDtTm>
          <TxRef>00000001</TxRef>
        </TxId>
        <Rspn>APPR</Rspn>
      </Tx>
    </CmpltnAdvcRspn>
  </AccptrCmpltnAdvcRspn>
</Document>

To carry out an original credit transaction with an original transaction, below is an example:

Code Block
    public void addOriginalTransaction(String refundReferenceData, PaymentServiceID serviceID){
        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);

        TlvTree originalTransaction = params.paramTree.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.RefundReferenceData,refundReferenceData);
        originalTransaction.AddEnum(ArkosTags.SelectedService, serviceID);
    }

Code Block
// 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 });

PaymentParams.addOriginalTransaction("123456789",PaymentServiceID.Payment);
// 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());
Expand
titleAccptrAuthstnReq
Code Block
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:caaa.001.001.06">
  <AccptrAuthstnReq>
    <Hdr>
      <MsgFctn>AUTQ</MsgFctn>
      <PrtcolVrsn>6.0</PrtcolVrsn>
      <XchgId>1</XchgId>
      <CreDtTm>2022-01-18T03:47:57.000+00:00</CreDtTm>
      <InitgPty>
        <Id>Amadis</Id>
      </InitgPty>
      <RcptPty>
        <Id>Amadis</Id>
      </RcptPty>
    </Hdr>
    <AuthstnReq>
      <Envt>
        <Acqrr>
          <Id>
            <Id>10009287351</Id>
          </Id>
          <ParamsVrsn>2022-01-13 16:59:42</ParamsVrsn>
        </Acqrr>
        <Mrchnt>
          <Id>
            <Id>00000NEXOMER001</Id>
          </Id>
          <CmonNm>AMADIS 1111 Saint-Urbain Montréal</CmonNm>
        </Mrchnt>
        <POI>
          <Id>
            <Id>ASA00001</Id>
          </Id>
          <Cpblties>
            <CardRdngCpblties>PHYS</CardRdngCpblties>
            <CardRdngCpblties>MGST</CardRdngCpblties>
            <CardRdngCpblties>CICC</CardRdngCpblties>
            <CardRdngCpblties>ECTL</CardRdngCpblties>
            <CrdhldrVrfctnCpblties>FCPN</CrdhldrVrfctnCpblties>
            <CrdhldrVrfctnCpblties>MNSG</CrdhldrVrfctnCpblties>
            <ApprvlCdLngth>6</ApprvlCdLngth>
            <OnLineCpblties>SMON</OnLineCpblties>
            <MsgCpblties>
              <Dstn>CRCP</Dstn>
              <Dstn>MDSP</Dstn>
              <Dstn>MRCP</Dstn>
              <AvlblLang>en</AvlblLang>
              <AvlblLang>fr</AvlblLang>
              <AvlblLang>it</AvlblLang>
            </MsgCpblties>
          </Cpblties>
          <Cmpnt>
            <Tp>TERM</Tp>
            <Id>
              <PrvdrId>Google</PrvdrId>
              <Id>sdk_gphone_x86_arm</Id>
              <SrlNb>ArkosDEV AMADEVSN</SrlNb>
            </Id>
            <Sts />
          </Cmpnt>
          <Cmpnt>
            <Tp>APLI</Tp>
            <Id>
              <PrvdrId>AMADIS</PrvdrId>
              <Id>ARKOS</Id>
            </Id>
            <Sts>
              <VrsnNb>3.0.0</VrsnNb>
            </Sts>
          </Cmpnt>
        </POI>
        <Card>
          <PlainCardData>
            <PAN>5219610200140517</PAN>
            <XpryDt>2021-08</XpryDt>
            <SvcCd>121</SvcCd>
            <Trck2>5219610200140517=210812110000946</Trck2>
          </PlainCardData>
          <IssrBIN>52196102</IssrBIN>
          <CardPdctPrfl>04</CardPdctPrfl>
          <CardBrnd>Carte a Piste</CardBrnd>
          <IntrnlCard>false</IntrnlCard>
        </Card>
        <Crdhldr>
          <Lang>en</Lang>
        </Crdhldr>
      </Envt>
      <Cntxt>
        <PmtCntxt>
          <CardPres>true</CardPres>
          <CrdhldrPres>true</CrdhldrPres>
          <AttndncCntxt>ATTD</AttndncCntxt>
          <CardDataNtryMd>MGST</CardDataNtryMd>
        </PmtCntxt>
      </Cntxt>
      <Tx>
        <TxCaptr>false</TxCaptr>
        <TxTp>ORCR</TxTp>
        <MrchntCtgyCd>5555</MrchntCtgyCd>
        <TxId>
          <TxDtTm>2022-01-18T03:47:57.000+00:00</TxDtTm>
          <TxRef>00000001</TxRef>
        </TxId>
        <OrgnlTx>
          <TxId>
            <TxDtTm>2022-01-18T03:47:57.000+00:00</TxDtTm>
            <TxRef>0123456789</TxRef>
          </TxId>
          <TxTp>CRDP</TxTp>
          <CardDataNtryMd>DFLE</CardDataNtryMd>
        </OrgnlTx>
        <RcncltnId>1</RcncltnId>
        <TxDtls>
          <Ccy>EUR</Ccy>
          <TtlAmt>20.00</TtlAmt>
          <AmtQlfr>ACTL</AmtQlfr>
          <OnLineRsn>TRMF</OnLineRsn>
        </TxDtls>
      </Tx>
    </AuthstnReq>
  </AccptrAuthstnReq>
</Document>