Static QR- Start

Request

The Cortina payment method would send a Start command to Nayax's servers in order to notify them about starting a transaction. The call would be of the following format:

https://lynx.nayax.com/payment/v2/transactions/cortina/(payment method's name)/start

The payload includes the following details:

{
  "AppUserID": "19",
	"TerminalId": "0456789456789456",
  "TransactionId": "123456789qwertyuioasdfghjkl",
  "SecretToken": "mrV3U3nsgGFrE3w5-wnBo_WCLPce-pZ1awRvTVTkungMIKThTVbj_fiXdfoGclhn0"
}
{
  "AppUserID": "19",
	"UniQR": "https://qr.nayax.com/v1/rWg_p6pZh1pwjvbkGrmBLy3KgwSz3dq-y63r5FPxk2NOWw2",
  "TransactionId": "123456789qwertyuioasdfghjkl",
  "SecretToken": "mrV3U3nsgGFrE3w5-wnBo_WCLPce-pZ1awRvTVTkungMIKThTVbj_fiXdfoGclhn0"
}
{
  "AppUserID": "19",
	"UniQR": "https://qr.nayax.com/v1/rWg_p6pZh1pwjvbkGrmBLy3KgwSz3dq-y63r5FPxk2NOWw2",
  "TransactionId": "123456789qwertyuioasdfghjkl",
  "SecretToken": "mrV3U3nsgGFrE3w5-wnBo_WCLPce-pZ1awRvTVTkungMIKThTVbj_fiXdfoGclhn0"
  "Products":
	[
	 {
       "Code":2
 		}
	]
}

Request Parameters

The table below describes all the parameters of the request:

Field

Type

Required

Description

AppUserID

String(40)

Yes

The consumer's user ID on the 3rd party's app

TerminalId

String(255)

No

Conditional, must be sent if UniQR is not sent.

Unique Identifier for the vending machine printed on a sticker or encoded in the QR (HW-Serial of the device. not Machine ID)

UniQR

String

No

Conditional, must be sent if TerminalId is not sent. The value of the QR code which is linked to said machine. More on that on Cortina SQR's FAQ

TransactionId

String(40)

Yes

Unique identifier for the transaction which will be echoed in further requests and responses. Minimum of 8 chars.

SecretToken

String(64)

Yes

Unique key for the your system. This value will be Provided by Nayax in advance. You should keep this value as a secret in your system.

Balance

Double

No

The balance of user's account. Decimal (max 3 digits for cents)

Products Array


No

The array itself is optional, but if the customer would like to send product/s selection- some of the fields are mandatory.
Relevant only for PreSelection flow. More on that in Remote Vend

Code inside Products

Int(16)

Yes

Conditional- mandatory if not Pulse machine,
Code of the selected item as defined in the Nayax backoffice or vending machine

PulseLineNumber inside Products

Int(32)

No

Conditional- mandatory Pulse machine.
Extending remote vend capability to support multiple machines via pulse. positive (PulseLineNumber >= 0)

Name inside Products

String(255)

No

Product name as defined in Nayax's backoffice

Price inside Products

Double

No

Conditional- mandatory if the machine doesn't have aprice set up for the relevant product code.
Product price in the machine's currency. This the original Product price while the transaction amount is the billing price after adjustments such as surcharge or loyalty.

UnitOfMeasurement inside Products

String(64)

No

Product's unit of measurement (e.g 'unit' or 'Liter')


Response

The Start Response that Nayax's servers would send to the payment method.
The payload should look as follows:

{
  "Status": {
    "Verdict": "Approved",
    "StatusMessage": "Cortina V2 Stub Tester"
  }
}

Request Parameters

The table below describes all the parameters of the request:

Field

Type

Required

Description

Verdict inside Status

String

Yes

Const string.
Status of the request ('Approved'/'Declined')

Code inside Status

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

StatusMessage inside Status

String(255)

No

Transaction status message free text field / additional varying data

CustomDeclineCode inside Status

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.