Single Session with Pre-Selection
In the Pre-selection flow, the customer first selects a product before proceeding to initiate payment. The vending machine remains idle, waiting for product selection. Once the user chooses a product, the payment terminal requests card authorization and, upon approval, dispenses the product.
This method ensures a smooth, secure transaction by separating product selection from payment authorization within a single vending session.
Payment Flow
Visualize the Pre-selection 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 Nayax Device sends a message to the consumer: "Please Select a Product."
- The consumer selects a product from the vending machine.
- The peripheral's SDK sends a a vending request to the Nayax Device.
vmc_vend_vend_request(vend_session_t *session)vmc_instance.vend.vend_request(session);m_vmc.vend.vend_request(m_sessions[m_active_session]); - The Nayax Device sends a message to the consumer: "Please Present Card."
- The consumer presents their payment card.
- 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.
- The Nayax Server sends the authorization response (approved) back 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 SDK triggers "Vend Approved" events:
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."
- The Nayax Device sends a settlement request to the Nayax Server.
- The Nayax Server forwards the settlement request to the Billing Provider.
- The Billing Provider sends a settlement response (OK) to the Nayax Server.
- The Nayax Server returns the settlement response (OK) to the Nayax Device.
- The vending session ends.
- Message to Card Holder: "Thank you & Goodbye."
See Also
Updated about 1 month ago