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 | ||
| //---- AgnosMW Headers ---- #include "paymentMW.h" //---- Global Headers ---- #include "gpi_agnos_framework_globals.h" | -- |
| typedef tPaymentError (*ApplicationSelectionMethod) ( tADFList *mutualList, tByte *MLIndex, tBoolean CL ); | Callback definition. Called after PPSE selection if defined |
| typedef tBoolean (*KernelSelectionMethod) ( tByte* kernelIdentifier, tByte kernelIdentifierLen, tByte* requestedKernelIdentifier ); | Callback definition. Called during combination selection if defined |
| 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 |
| DLLEXPORT void enpDisconnectPaymentServices(void); | Disconnect entry point from connected L2 CL kernels. This call shall be performed only when the system is cycled up |
| 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:
|
| 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 |
| DLLEXPORT void enpSetPollingTimeout(int timeout); | Set timeout value used during gpiPolling to detect a card presentation |
| DLLEXPORT void enpSetLongTapTimeoutExpired(void); | Indicate to the entry point that the online transaction has timed out and consequently the long tap has timed out |
| DLLEXPORT int enpGetPollingTimeout(void); | Return timeout value used during gpiPolling to detect a card presentation |
| DLLEXPORT tBoolean enpPSESelectionPerformed(void); | Deprecated |
| 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 |
| DLLEXPORT tADFList *enpGetMutualList(void); | Return the mutual list calculated at PPSE selection time. See Agnos and Selection module to get details on tADFList |
| 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 |
| DLLEXPORT void enpResetAreAllCLAppplicationsNotAllowed(void); | Reset corresponding state |
| DLLEXPORT tGPIError enpGetLastCardDetectionStatus(void); | Return the last gpiPolling error obtain at the last START_B |
| 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 |
| 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. |
| 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:
|
| void enpGetTerminalAID(tByte aidId, tByte **aid, tByte *len); | |
| 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); enpInitialize("","",bTRUE,bFALSE,bFALSE,pay); // Using signal in the scope of L2 TA // 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 } |