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

API _Version _Revision

Description

_AgnosEP _version 3.5.23 _revision 23782

Agnos EP Interface provides a set of primitives to manage EMV contactless card processing. It encapsulates EMVCo Book A and B.

Agnos Entry Point

See entrypoint.h, loader.h

#include

//---- AgnosMW Headers ----
#include "paymentMW.h"
//---- Global Headers ----
#include "gpi_agnos_framework_globals.h"

--

ApplicationSelectionMethod

typedef tPaymentError (*ApplicationSelectionMethod)
(
tADFList *mutualList,
tByte *MLIndex, tBoolean CL
);

Callback definition. Called after PPSE selection if defined

KernelSelectionMethod

typedef tBoolean (*KernelSelectionMethod)
(
tByte* kernelIdentifier,
tByte kernelIdentifierLen,
tByte* requestedKernelIdentifier
);

Callback definition. Called during combination selection if defined

enpConnectPaymentServices

DLLEXPORT void enpConnectPaymentServices(const tString path)

Connect entry point onto available L2 CL kernels. This call shall be performed only when the system is cycled up

enpDisconnectPaymentServices

DLLEXPORT void enpDisconnectPaymentServices(void);

Disconnect entry point from connected L2 CL kernels. This call shall be performed only when the system is cycled up

enpInitialize

DLLEXPORT void enpInitialize
(
tString		readerName,
tString		pinpadName,
tBoolean	signal,
tBoolean	fallbackOnAID,	// DEPRECATED
tBoolean	entryPoint,		// DEPRECATED
tPaymentContext *payment //In: may be NULL is not autorun (contactless mechanism)
);

Set internal context to prepare the entry point for the subsequent transaction

// Standard call for a payment application
enpInitialize("","",bFALSE,bFALSE,bFALSE,NULL);

Important:

Prior to that call:

  • If payment is set NULL, L3 must set following flags

    • payment->mEMVContact if contact supported

    • payment->mEMVContactless if contactless supported

    • payment->mMagstripe if magstripe supported

  • If autorun is supported. L3 must set following fields

    • payment->mAmount

enpSetLegacyXXXStatus

DLLEXPORT void enpSetLegacyZIPStatus(tBoolean status);
DLLEXPORT void enpSetLegacyPayPassStatus(tBoolean status);
DLLEXPORT void enpSetLegacyAMEXStatus(tBoolean status);
DLLEXPORT void enpSetLegacyJCBStatus(tBoolean status);
DLLEXPORT void enpSetLegacyCUPStatus(tBoolean status);
DLLEXPORT void enpSetLegacyDPASStatus(tBoolean status);
DLLEXPORT void enpSetLegacyVISAStatus(tBoolean status);

Enable legacy selection rule for a given payment scheme. Payment schemes' specifications, outside Book Cx, use selection rules that might differ for error management. it is important to set appropriate flag duting TA

enpSetPollingTimeout

DLLEXPORT void enpSetPollingTimeout(int timeout);

Set timeout value used during gpiPolling to detect a card presentation

enpSetLongTapTimeoutExpired

DLLEXPORT void enpSetLongTapTimeoutExpired(void);

Indicate to the entry point that the online transaction has timed out and consequently the long tap has timed out

enpGetPollingTimeout

DLLEXPORT int enpGetPollingTimeout(void);

Return timeout value used during gpiPolling to detect a card presentation

enpPSESelectionPerformed

DLLEXPORT tBoolean enpPSESelectionPerformed(void);

Deprecated

enpGetPPSEFCI

DLLEXPORT tPSE* enpGetPPSEFCI(tWord *SW1SW2);

Return PPSE’s FCI stored at PPSE selection so payment application can fetch any proprietary tags (for example, tag 9F0A, ASPRD). If SW1SW2 is defined then the entry point returns the status word

enpGetMutualList

DLLEXPORT tADFList *enpGetMutualList(void);

Return the mutual list calculated at PPSE selection time. See Agnos and Selection module to get details on tADFList

enpAreAllCLAppplicationsNotAllowed

DLLEXPORT tBoolean enpAreAllCLAppplicationsNotAllowed(void);

Return bTRUE if there is no elligible contactless application after preprocessing. If no CL application is elligible, provide a specific status so payment application may fallback to contact or magstripe depeding on interfaces supported by the device

enpResetAreAllCLAppplicationsNotAllowed

DLLEXPORT void enpResetAreAllCLAppplicationsNotAllowed(void);

Reset corresponding state

enpGetLastCardDetectionStatus

DLLEXPORT tGPIError enpGetLastCardDetectionStatus(void);

Return the last gpiPolling error obtain at the last START_B

enpSkipPollingOnNextStartB

DLLEXPORT void enpSkipPollingOnNextStartB(tGPIError detectedStatus);

When gpiPolling is performed from outside the entry point, skip gpiPolling call from inside the entry point to avoid double tap

enpReleasePaymentServices

DLLEXPORT void enpReleasePaymentServices(const tBoolean sdk);

Broadcast afsRelease to all L2 CL kernels. This call shall be performed only when the system is cycled down.

enpExecutePaymentTransaction

DLLEXPORT void enpExecutePaymentTransaction
(
tStartingPoint 		sp,
tPaymentContext		*payment,
tOutComeParameter	*outcome
);

Main point of entry to initiate a CL transaction.

tPaymentContext shall be set accordingly

tOutcomeParameter provides final status in lign with L2 TA’s test plans

Set sp to:

  • spSTART_A: to initiate a new transaction

  • spSTART_D: to activate the kernel used for the current transaction

  • spNO_START: to clean the context

enpGetTerminalAID

void enpGetTerminalAID(tByte aidId, tByte **aid, tByte *len);

enpGetCurrentTerminalAID

void enpGetCurrentTerminalAID(tByte **aid, tByte *len);

Code Example

See entrypoint.h

// Payment contexts
static tPaymentContext paymentCtx;
static tOutComeParameter outcome;
// Transaction amounts
static tAmount amount, cashBack;

char path[250] = "./AGNOS/"; // Configuration files here
unsigned char defaultTxnType = 0x00; // Default 9C value

  enpConnectPaymentServices(PATH);
  
  // Init payment context and payment outcome
  pmwInitializePaymentContext(&paymentCtx);
  pmwInitializeOutComeParameter(&outcome);
		
  // Important to perform these initializations after pmwInitializePaymentContext
  paymentCtx.mAmount = &amount;
  paymentCtx.mCashBack = &cashBack;
  paymentCtx.mTransactionType = (tTransactionType)defaultTxnType;
  amount = cashBack = NULL;
  
  // Set payment context from TRD...
  // ...
  
  // Initialize transient data model
  /// Only CL combinations refering to paymentCtx.mTransactionType will be loaded
  dtmInitializeFromFile(path,0,0,0,0,0,paymentCtx.mTransactionType,bFALSE);
  enpInitialize("CTLSS","",bTRUE,bFALSE,bFALSE,pay); // Using signal in the scope of L2 TA
  
  enpExecutePaymentTransaction(spSTART_A,paymentCtx,outcome);
  
  if(enpAreAllCLApplicationNotAllowed)
  {
    // Fallback to other technology if any
  }
  else
  {
    // Process outcome
  }

  • No labels