DynamicQR- GenerateQR
Cortina DQR uses the GenerateQRcommand to notify the integrator about the consumer's product selection in order for him to send the QR generation details.
The command includes the transaction Id identification (Generated in /StartSession), required Amount, merchant, and Machine details (and more).
The Cortina payment provider shall validate the information and respond with the Dynamic QR information to be displayed on the Nayax device accordingly.
This command is essential for proceeding to authorization process.
Request
Nayax's servers send a POST request to your configured GenerateQRendpoint, which would be of the following format:
(customer's URL)/Cortina/DynamicQR/GenerateQR
The payload includes the full result of the card scan operation:
{
"ChannelId": 19,
"BasicInfo": {
"TransactionId": "236584335969834429321847829253667359,",
"Amount": 0.1,
"CurrencyCode": "USD",
"CurrencyNumeric": 376,
"SiteId": 12
},
"DeviceInfo": null,
"MachineInfo": {
"Id": 869761713,
"Name": "TestPayDynamicQR V2",
"TerminalId": 987654321,
"DecimalPlace": 2,
"Offset": 2,
"GroupId": "Beverages",
"OperatorId": 12345,
"ZipCode": 10001,
"Country": {
"Name": "United States of America",
"NumericCode": 840,
"Alpha2Code": "US",
"Alpha3Code": "USA"
}
},
"ActorInfo": {
"Id": 2001102296,
"Name": "Far East Dev Zone",
"OperatorId": 2000305191,
"OperatorName": "TanyaT_OP",
"MerchantId": 10011
},
"CustomData": {
"DirectActor": 12312312,
"Operator": 123121434134,
"Distributor": "superDistributor",
"Actor": 12312312,
"Machine": 131231348
},
"Product": [
{
"Code": 11,
"Name": "Stella",
"Price": 0.1,
"UnitOfMeasurement": "USD",
"Measurement": 1
},
{
"Code": 456,
"Name": "expensiveSprite",
"Price": 600,
"UnitOfMeasurement": "USD",
"Measurement": 0
}
]
}Request Parameters
The table below describes all the parameters of the request:
Catergory | Field | Type | Required | Description |
|---|---|---|---|---|
|
| String(36) | Yes | The unique identifier for this transaction. If /StartSession has been used then this will echo the transaction Id encrypted in 'TranIDCipher'. |
| Int(64) | Yes | Nayax Internal Unique identifier for the transaction which will be echoed in further requests. | |
| Double | Yes | Decimal (max 3 digits for cents)
| |
| String(3) | Yes | Currency according to ISO4217 Attribute format: Alpha-3. | |
| String(3) | Yes | Currency according to ISO4217 Attribute format: Numeric-3. | |
| Int(16) | No | Region of the Nayax server. | |
|
| String | No | Nayax Device Hardware serial number as embedded on the device |
| String | No | Device Firmware version | |
| String | No | Nayax Device Type | |
|
| Int(64) | Yes | Machine entity unique ID allocated in Nayax'S backoffice. |
| String(255) | Yes | Machine Name as defined in Nayax'S backoffice | |
| String(255) | No | Terminal identifier as defined in Nayax's backoffice. | |
| Int(64) | No | Decimal point location for amounts used on this machine. | |
| String(255) | No | UTC timezone offset | |
| String | No | For Nayax internal use only. | |
| String(255) | No | Merchant ID as defined in Nayax's backoffice | |
| String(255) | No | Machine zipcode as defined in Nayax's backoffice | |
|
| String | Yes | Country Full Name |
|
| String(3) | Yes | ISO-3166-1 format: Numeric-3 code |
|
| String(2) | Yes | ISO-3166-1 format: Alpha-2 code |
|
| String(3) | Yes | ISO-3166-1 format: Alpha-3 code |
|
| Int(64) | Yes | Actor ID as saved as defined in Nayax's backoffice |
| String(255) | Yes | Direct Merchant name as defined in Nayax's backoffice | |
| Int(64) | No | Merchant operator ID as defined in Nayax's backoffice | |
| String | No | Merchant operator name as defined in Nayax's backoffice | |
| Int(64) | No | Merchant ID as defined in Nayax's backoffice. | |
|
| String | No | Direct actor custom data (String in json format) |
| String | No | Operator custom data (String in json format) | |
| String | No | Distributor custom data (String in json format) | |
| String | No | Actor custom data (String in json format) | |
| String | No | Machine custom data (String in json format) | |
|
| Int(16) | Yes | Code of the selected item as defined in the Nayax backoffice or vending machine |
| String(100) | No | External unique identifier of the selected item (the product catalog number) as defined in Nayax's backoffice | |
| String(255) | No | Product name as defined in Nayax's backoffice | |
| Double | Yes | Product price in the machine's currency. | |
| String(64) | No | Product's unit of measurement (e.g 'unit' or 'Liter') | |
| Double | No | Product's quantity in the unit of measurement | |
| String(255) | Yes | Product's group as existing in the product map | |
| String(255) | Yes | Product's group code as existing in the product map | |
| Int(32) | No | Extending remote vend capability to support multiple machines via pulse. positive (PulseLineNumber >= 0) | |
|
| String | No | The Integrator's internal transaction id. Conditional, only if /StartSession was not Used. If /StartSession was used, this should be either empty or Echo the Transaction ID sent in the request. |
| String(40) | No | External (usually Card issuer's) Authorization Code | |
| Double | No | Conditional on /Authorization response, optional otherwise. The original amount requested in /Authorization requested. | |
| Double | No | The original amount requested in /Settlement or /Sale process. | |
| String | No | Reference Retrieval Number, Used as External Transaction Identification for external parties (Usually Card schemes) | |
| String(256) | No | A unique token for the transaction. For Internal Nayax use only | |
| String | Yes | The date time string of when the /Authorization took place Format: ddMMyyHHmmss | |
| Double | No | Irrelevant for the Authorization command. | |
| String | No | Trace number. For Internal Nayax use only | |
| String(5) | No | For Internal Nayax use only | |
| String | No | String in JSON format. | |
| Bool | No | Was there was a gateway timeout (valid in response) |
Response
The Authorization Response that the customer's payment method would send to Nayax's servers.
The payload should look as follows:
{
"QRCode": "DynamicQrResponse_QRCode_Test",
"QRData": {
"ChannelId": "19",
"RRN": "111111",
"SrvTranId": "236584335969834429321847829253667359"
},
"Status": {
"Verdict": "Approved",
"Code": 0,
"StatusMessage": "Cortina V2 Stub Tester"
},
"additionalProperties": false
}Response Parameters
Catergory | Field | Type | Required | Description |
|---|---|---|---|---|
| Sting | Yes | QR URL for device | |
|
| String | No | Conditional for multi channel integrations. Echo of the value provided by Nayax in the request. |
| ||||
| ||||
|
| Sting | Yes | Const string values: |
| Int(32) | No | Conditional - Only if verdict value is declined Valid decline codes (must be a code from this list): 1 - Insufficient funds 2 - Transaction ID unknown 3 - Cardholder exceeded daily / weekly / monthly transaction count limit 4 - Cardholder exceeded transaction amount limit 5 - Suspected Fraud 6 - General system failure 7 - Invalid amount 8 - Request cannot be parsed (format error) 9 - Transaction not allowed to cardholder 40 - For Nayax internal use only. 990 - CertificateFileName not found 991 - Failed to decipher message body 992 - Timeout exception 994 - Card Brand not supported 996 - Transaction ID Unknown / Duplicate Transaction ID (Start Session Error) 997 - Missing mandatory parameters 998 - Validation / request cannot be parsed 999 - General exception 1010 - Public Key Certificate not found 1011 - Method not Implemented | |
| Sting(255) | No | Transaction status message free text field / additional varying data | |
| String | No | This field is used for specifying a custom decline code (i.e. Soft Decline or Switch Interface). The value might be the same as the acquirer's response code or composed by other data. | |
|
| String | No | the Integrator's internal transaction id. Conditional, only if /StartSession was not Used. If /StartSession was used, this should be either empty or Echo the Transaction ID sent in the request. |
| String(40) | No | External (usually Card issuer's) Authorization Code | |
| Double | Yes | The original amount requested in /Authorization Request. | |
| Double | No | The original amount requested in /Settlement or /Sale process. | |
| String | No | Reference Retrieval Number, Used as External Transaction Identification for external parties (Usually Card schemes) | |
| String(256) | No | A unique token for the transaction. For Internal Nayax use only | |
| String | Yes | The date time string of when the /Authorization took place Format: ddMMyyHHmmss | |
| Double | No | Irrelevant for the Authorization command.Balance | |
| String | No | Trace number. For Internal Nayax use only | |
| String(5) | No | For Internal Nayax use only | |
| String | No | String in JSON format. | |
| Bool | No | Was there was a gateway timeout (valid in response) | |
| String | No | String in JSON format. | |
| Int(64) | No | Conditional, in case of re-attempt of using a prepaid loyalty card on a terminal in a given transaction, this field will reflect which transaction (Nayax Transaction ID) this attempt originally belongs to. | |
| Bool | No | Indication if card is allowed revalue |
Updated about 4 hours ago