AgnosEP provides the main point of entry to initiate EMV transactions for CL acceptance system (enpExecutePaymentTransaction). 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 (see
That call shall be performed once the system has been properly initialized (see AgnosMW API).
C Structures
Refer to AgnosMW API to get more details on tPaymentContext and tOutComeParameter.
Primitives
Names | Comments |
---|---|
enpInitialize | Set internal context to prepare the entry point. This call shall be performed only when the system is cycled up |
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 |
enpExecutePaymentTransaction | Main point of entry to initiate a CL transaction. tPaymentContext shall be set accordingly tOutcomeParameter provides final status Set sp to:
|
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 Examples
// 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 }