Amadis

ACE API


That level of API is important to be able to run valid test procedures. It provides an interface to Agnos Certification Environement (ACE) through a set of services that corresponds to different test requirements specified by payment networks.

This API is the second level of integration for Agnos Framework. Hence, It is recommended to unit test all the services below outside the execution of a transaction before starting functional tests.

See tutorials to get examples on ACE services integration.

ACE Services

ACE Services

Description

Prerequisites to a Call

ACE Services

Description

Prerequisites to a Call

aceInitialize

 

 

aceInitializeCommunication

 

 

aceSetMode

 

There are three running modes defined in ACE:

  • pmNONE

  • pmSDK

  • pmAUTO

Use pmSDK for unit testing ACE integration

aceGetMode

Get current ACE mode

--

aceGetRequest

 

 

aceSendResponse

 

 

aceMsgToACE

 

 

aceClearScreen

Clear ACE screen

--

aceDisplayMessage

Display a ACE in ACE

--

aceEmptyKeyPadCache

Empty ACE keyPAD cache

--

aceLogAPDU

Log APDU

Inline or offline depending on depth value

aceLogAllBatchedAPDU

Log offline APDU

--

acePlayBeep

Play a beep in ACE

--

aceGetKey

Get key from ACE

--

aceSwitchLED

Switch a LED on ACE

--

aceOut

Out in ACE’s Console Log

aceOut("Hello World!"); // Open Console Log under ACE prior the unit test

 

Signals Services

//--------------------------------------------------------- // SIGNALS (paymenMW.h) //--------------------------------------------------------- // These services has been implemented only to support certification sessions. typedef void (*sgnSendOutcome)(tOutComeParameter *outcome); typedef void (*sgnSendDR)(tPaymentContext *payment); typedef void (*sgnSendDD)(tPaymentContext *payment); typedef void (*sgnSendRawDD)(tByte *data, tWord dataLen); typedef void (*sgnSendDEK)(tPaymentContext *payment, tByte ADPUState, tBoolean sendDataNeeded, tByte* outDET, tWord* lenOutDET); typedef void (*sgnSendDET)(tPaymentContext *payment); typedef void (*sgnSendTag)(tPaymentContext *payment); #ifdef PACKING #pragma pack(1) #endif typedef struct { sgnSendOutcome mSendOutcomeSignal; sgnSendDR mSendDRSignal; sgnSendDD mSendDDSignal; sgnSendRawDD mSendRawDDSignal; sgnSendDEK mSendDEKSignal; sgnSendDET mSendDETSignal; sgnSendTag mSendTagSignal; } tSignal; #pragma pack() DLLEXPORT void pmwSetSignal(tSignal *signal); DLLEXPORT void pmwSendOutcome (tOutComeParameter *outcome); DLLEXPORT void pmwSendDR (tPaymentContext *payment); DLLEXPORT void pmwSendDD (tPaymentContext *payment); DLLEXPORT void pmwSendRawDD (tByte *data, tWord dataLen); DLLEXPORT void pmwSendDEK (tPaymentContext *payment, tByte ADPUState, tBoolean sendDataNeeded, tByte* outDET, tWord* lenOutDET); DLLEXPORT void pmwSendDET (tPaymentContext *payment); DLLEXPORT void pmwSendTag (tPaymentContext *payment);

Signals Services

Description

Prerequisites to a Call

Signals Services

Description

Prerequisites to a Call

aceGetSignal

Get all signals services from ACE in order to set signals callbacks defined in AgnosMW. These signals callbacks are called by Agnos components like AgnosEP and kernels to raise information at ACE level during a transaction

  • N/A

  • Example:

#include "paymentMW.h" void setSignals() { tBoolean contactless = bTRUE; tBoolean signal = bTRUE; tSignal signal; if(contactless && signal) { aceGetSignal(&signal); } else { signal.mSendOutcomeSignal = 0; signal.mSendDRSignal = 0; signal.mSendDDSignal = 0; signal.mSendRawDDSignal = 0; signal.mSendDEKSignal = 0; signal.mSendDETSignal = 0; signal.mSendTagSignal = 0; } pmwSetSignal(&signal); }

aceSendAdvancedDisplayAsOutcome

Send Advanced As Outcome signal to ACE

  • Running mode = pmSDK (default value)

  • Example:

aceSendAdvancedDisplay

Send Advanced signal to ACE

  • Running mode = pmSDK (default value)

  • Use Digital Signal to bTRUE and to bFALSE

  • Example:

aceSendOutcome

Send an Outcome signal to ACE

  • AgnosMW must be initialized from pmwSetSignal (use setSignals available in Kizis)

  • Running mode = pmSDK (default value)

  • Example:

aceSendDR

Send a Data Record signal to ACE

  • AgnosMW must be initialized from pmwSetSignal (use setSignals available in Kizis)

  • Running mode = pmSDK (default value)

  • gpiGetFreeRAM must be integrated

  • tPaymentContext mDataExchange.mDataRecord.mStream and tPaymentContext mDataExchange.mDataRecord.mLength must contained TLV data

  • Example:

aceSendDD

Send a Discretionary Data signal to ACE

  • AgnosMW must be initialized from pmwSetSignal (use setSignals available in Kizis)

  • Running mode = pmSDK (default value)

  • gpiGetFreeRAM must be integrated

  • tPaymentContext mDataExchange.mDiscretionaryData.mStream and tPaymentContext mDataExchange.mDiscretionaryData.mLength must contained TLV data

  • Example:

aceSendRawDD

Send a Raw Discretionary Data signal to ACE

  • AgnosMW must be initialized from pmwSetSignal (use setSignals available in Kizis)

  • Running mode = pmSDK (default value)

  • gpiGetFreeRAM must be integrated

  • Example:

aceSendDEK

Send a DEK signal to ACE

  • AgnosMW must be initialized from pmwSetSignal (use setSignals available in Kizis)

  • Running mode = pmSDK (default value)

  • gpiGetFreeRAM must be integrated

  • Example:

aceSendDET

N/A

N/A

aceSendTag

Send all tags contained in AgnosDB session

  • AgnosMW must be initialized from pmwSetSignal (use setSignals available in Kizis)

  • Running mode = pmSDK (default value)

  • gpiGetFreeRAM must be integrated

  • Example:

Financial Services

Financial Services

Description

Prerequisites to a Call

Financial Services

Description

Prerequisites to a Call

aceSendEMVContactAuthorization

Send an online auth. to ACE for EMV CT transactions

  • gpiGetFreeRAM must be integrated

  • tPaymentContext mDataExchange.mDataRecord.mStream and tPaymentContext mDataExchange.mDataRecord.mLength must contained TLV data

  • Example:

aceSendEMVContactReversal

Send a reversal to ACE for EMV CT transactions

  • gpiGetFreeRAM must be integrated

  • tPaymentContext mDataExchange.mReversalData.mStream and tPaymentContext mDataExchange.mReversalData.mLength must contained TLV data

aceSendEMVContactBatch

Send a batch to ACE for EMV CT transactions

  • gpiGetFreeRAM must be integrated

  • tPaymentContext mDataExchange.mBatchData.mStream and tPaymentContext mDataExchange.mBatchData.mLength must contained TLV data

aceSendEMVContactAdvice

Send an advice to ACE for EMV CT transactions

  • gpiGetFreeRAM must be integrated

  • tPaymentContext mDataExchange.mAdviceData.mStream and tPaymentContext mDataExchange.mAdviceData.mLength must contained TLV data

aceSendContactlessAuthorization

Send an online auth. to ACE for EMV CL transactions

  • gpiGetFreeRAM must be integrated

  • tPaymentContext mDataExchange.mDataRecord.mStream and tPaymentContext mDataExchange.mDataRecord.mLength must contained TLV data

aceSendContactlessBatch

Send a batch to ACE for EMV CL transactions

  • gpiGetFreeRAM must be integrated

  • tPaymentContext mDataExchange.mBatchData.mStream and tPaymentContext mDataExchange.mBatchData.mLength must contained TLV data

aceSendMagstripeAuthorization

Send an online auth. to ACE for magstripe transactions

  • gpiGetFreeRAM must be integrated

  • tPaymentContext mDataExchange.mTrack2.mStream and tPaymentContext mDataExchange.mTrack2.mLength must contained TLV data

Options Services

Options Services

This set of primitives is not dependent on the platform. It doesn’t require specific implementation or modification for a given integration. Hence, it works as is.

Options Services

This set of primitives is not dependent on the platform. It doesn’t require specific implementation or modification for a given integration. Hence, it works as is.

Trace

Trace = 0 will log APDU commands and responses to ACE

Trace 1 to max = will log commands and reponses to logout and only commands to ACE

Trace > max will log commands and responses offline

Automation

Reserved to Agnos Framework maintenance

Signal

Enable/disable signals display in ACE (in pmSDK mode)

APDULog

Enable/disable APDU logging (in pmSDK mode)

UIDisplay

Enable/disable UI services in ACE from the device

ID Message Display

Enable/disable message display (in signals) along with their message identifier

Digital Signal

Enable/disable digital signals display following standard bitmap as defined by EMVCo