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

AgnosEP provides the main point of entry to initiate EMV transactions for CL acceptance system (enpExecutePaymentTransaction): enExecutePaymentTransaction.

It shall be called from the payment application which shall manage two structures:

  • tPaymentContext (in/out)

  • tOutComeParameter (out)

Each time a new transaction is triggered these two structures shall be initialized .That call shall be performed once the system has been properly initialized (see AgnosMW API).

Primitives

Names

Comments

enpConnectPaymentServices

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

enpReleasePaymentServices

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

enpDisconnectPaymentServices

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

enpInitialize

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

enpExecutePaymentTransaction

Main point of entry to initiate a CL transaction.

tPaymentContext shall be set accordingly

tOutcomeParameter provides final status

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

enpSetPollingTimeout

Set time used during gpiPolling to detect a card presentation

enpSkipPollingOnNextStartB

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

enpSetKernelSelectionMethod

N/A

enpSetApplicationSelectionMethod

Set callback hooked after PPSE selection

enpSetLegacyXXXStatus

Set 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

enpAreAllCLApplicationNotAllowed

If no CL application is selectable, provide a specific status so payment application which may fallback to CT or magstrtipe depeding on interfaces supported by the device

enpGetPPSEFCI

PPSE’s FCI is stored so payment application can fetch any proprietary tags like 9F0A (example: ASPRD)

C Example

// 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

  // 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);
  
  enpExecutePaymentTransaction(spSTART_A,paymentCtx,outcome);
  
  if(enpAreAllCLApplicationNotAllowed)
  {
    // Fallback to other technology if any
  }
  else
  {
    // Process outcome
  }

  • No labels