====== Transaction support ====== You can follow these steps to integrate no-code transaction support to your application: * Send transaction HTTP request to ADUCID Binder * Process authentication on ADUCID Binder * Read transaction JSON response See chapters below for details. ===== Setup ===== At first, transaction must be prepared and sent to ADUCID Binder. ADUCID Binder accepts transaction HTTP requests at ''/aducid-binder/prepareTransactionUpload''. Before ADUCID Binder call, **unique identifier (aka ''transactionId'') must be generated**. This identifier is neccessary to successfully pair transaction request and response. Let's see ADUCID Binder transaction interface parameters: ^ Name ^ Values ^ Mandatory ^ Description ^ | transactionId | String | Yes | transaction unique identifier | | peigMessage | MultipartFile | No | transaction message in plain or HTML format | | factor | ''PERSONAL'' or ''COMFORT'' or empty value | No | required personal code level | | redirectUrl | String | Yes | URL to redirect after ADUCID Binder successful authentication | | errorPage | String | No | URL to redirect after ADUCID Binder unsuccessful authentication | | udi | String | No | if defined, security attack check is realized | | peigId | String | No | if defined, mobile push notification is realized | **It is neccessary to add ''transactionId'' parameter to ''redirectUrl'' attribute** to successfully pair transaction request and response. If ''errorPage'' is not defined, ''redirectUrl'' is used in case of error. Now we can send prepared request to ''/aducid-binder/prepareTransactionUpload'' and check successful transaction upload (HTTP code 200). We must also remember to provide generated transaction identifier to web view, e.g. Ajax JSON response or JSP expression language. ===== Transaction itself ===== When transaction data are successfully uploaded, we can start transaction itself. It can be done with use of [[web-integration:client-side|Client API for Web Integration]]. We only need to specify right ADUCID Binder methods to serve transaction: aducid.setStartOperationUrl("/aducid-binder/transactionJson?transactionId=" + response.data); aducid.setResultOperationUrl("/aducid-binder/transactionCheck"); aducid.setProxyUrl("/aducid-binder/proxy"); Expression ''response.data'' contains unique transaction identifier pushed from backend to view. After transaction run, user is redirected to ''redirectUrl'' value (or to ''errorPage'' if defined and error occurs). ===== Response processing ===== User is now redirected to ''redirectUrl'', where we must process transaction operation result. Operation result is saved in HTTP request attributes. We try to read attribute with prefix ''AAA_UTR_'' with transaction identifier at the end. When value exists, **we must invoke base64 decoding on value** to get readable JSON response. ==== Positive response ==== When transaction was successful (''status = OK''), JSON response will be: { "status": "OK", "data": null, "redirect": null } ==== Negative response ==== Transaction can be also unsuccessful (''status = ERROR''). There are two types of failures - failure directly on AIM and second level failure. Failure on AIM can be: { "status": "ERROR", "data": { "message": "Wrong personal factor.", "key": null, "arguments": null, "statusAIM": "active", "statusAuth": "OK", "statusLF": "KO" }, "redirect": "https://dev-bank.demo.aducid.com:443/bank-nc/loginPage" } In case of AIM failure, values ''statusAIM'' and ''statusAuth'' will be filled, ''statusLF'' only in case of personal code use. You can find ''statusAuth'' and ''statusLF'' meanings in chapter [[settings-mgmt:20-error-statuses|Error statuses of authentication process]]. Meanings of ''statusAIM'' can be found in [[settings-mgmt:11-aim-statuses|Semantics of individual statuses of the authentication session (AIMStatus)]] chapter. Attribute ''message'' is technical readable text describing error. Secondary level failure can look like: { "status": "ERROR", "data": { "message": "Potential security attack.", "key": "web.potentialSecurityAttack", "arguments": [], "statusAIM": null, "statusAuth": null, "statusLF": null }, "redirect": "https://dev-bank.demo.aducid.com:443/bank-nc/paymentCheck?transactionId\u003dac39bc24-edc8-477d-95f5-6793a452bd80" } In this case, value ''key'' is filled, ''arguments'' only in situation of existing error message arguments. Possible values of ''key'' can be found at [[https://wiki.aducid.com/client-api/com/aducid/sdk/enums/ClientStatus.html|Client Status]] or [[https://wiki.aducid.com/web-platform/com/aducid/web/enums/WebStatus.html|Web Status]]. Attribute ''message'' is technical readable text describing error.