Single Session with Pre-Authorization
In the Pre-Authorization flow for a single vending session, payment authorization (of the highest amount the peripheral is willing to charge the consumer) is completed immediately after the card is presented- meaning before product selection takes place, and the settlement is performed once the product or service has been delivered.
This ensures the transaction is pre-approved, reducing the risk of payment failure after the consumer has selected a product. The rest of the process follows product selection, vending, and settlement, similar to the pre-selection flow.
Payment Flow
Visualize the Pre-Authorization process with the diagram below, which illustrates each step of the single vending session flow, from product selection to payment authorization and dispensing.
Below is a breakdown of the diagram:
- The consumer presents the card to the Nayax Device.
- The Nayax Device sends an authorization request to the Nayax Server.
- The Nayax Server forwards the authorization request to the Billing Provider.
- The billing Provider sends an authorization response (approved) to the Nayax Server.
- Nayax Server sends the authorization response (approved) back to the Nayax Device.
- The peripheral's SDK begins the session and triggers the "session begin" event:
vmc_vend_event_handler_cb(vm_vend_event_on_session_begin)vend_callbacks(onBeginSession(funds_avail))vmc_vend_events() (via onBeginSession(funds_avail)) - Message to the consumer: "Please Select a Product."
- The consumer selects a product.
- The peripheral's SDK sends a "vend request" to the Nayax Device:
- The peripheral's SDK handles transaction data received from the Nayax Device via Transfer Data command (said data includes information about the Nayax transaction ID and the consumer's card details):
vmc_vend_event_handler_cb(vm_vend_event_on_transaction_info)vend_callbacks(onTransactionInfo(data))vmc_vend_events() (via onTransactionInfo(data)) - The peripheral's SDK triggers the "vend approved" event:
vmc_vend_event_handler_cb(vm_vend_event_on_vend_approved)vend_callbacks() (via onVendApproved(session))vmc_vend_events() (via onVendApproved(session)) - The peripheral dispenses the product/ provides the service to the consumer
- The SDK reports vend success:
and completes the vend session:
vmc_vend_vend_status(&session, __true)vmc_vend_events() (via onVendApproved(session) -which would return "true")vmc_vend_events() (via onVendApproved(session) -which would return "true")vmc_vend_vend_session_complete_lowlevel()no such function in C# or Java due to the nature of the languagesno such function in C# or Java due to the nature of the languages - Message to the consumer: "Please Take Product."
- Nayax Device sends a settlement request to the Nayax Server.
- Nayax Server forwards the settlement request to the Billing Provider.
- The billing Provider sends a settlement response (OK) to the Nayax Server.
- Nayax Server sends the settlement response (OK) back to the Nayax Device.
- The vending session ends.
- Message to Card Holder: "Thank you & Goodbye."
See Also
Updated about 1 month ago