Skip to main content
Nayax 中的多次贩售流程允许消费者在单个支付会话中购买多件商品,并使外围设备能够区分这些产品。这在自动售货机和自助服务终端中非常有用,因为客户可能希望在完成支付前选择多种产品。 本页面将更详细地指导您在 C SDK 中实现多次贩售会话。为了更好地解释此过程,代码实现分为以下几个步骤:
  1. 包含库文件
  2. 设置宏和全局变量
  3. 设置私有函数
  4. 添加初始化函数
  5. 实现主函数
有关每个步骤的更多详情,请参阅以下各部分。

步骤 1:包含库文件

首先包含 SDK 所需的库文件。请参见下方代码块:
C

步骤 2:设置宏和全局变量

下方代码定义了用于日志记录/调试的模块名称宏,并设置了用于存储配置和会话相关数据的全局变量。
C
在哪里:
  • config:存储自动售货机配置。
  • session_products:持有两个不同售卖商品的 array。
  • session:存储会话详情。
  • menu:存储菜单相关设置。
  • com_id:表示通信 ID。

步骤 3:设置私有函数

实现用于调试、事件处理和交易处理的辅助函数。以下各部分提供了更多详情。

调试输出函数

此函数用于确定调试信息的输出流。
C
在哪里:
  • str:包含调试信息的 string。

CPU 定时器节拍

此函数由平台定时器定期调用(每 5-10 毫秒一次)。
C
在哪里:
  • p:指向可选参数的指针(此函数中未使用)。

VMC 链路事件处理程序

此函数处理链路事件并记录相关信息。
C
在哪里:
  • event_id:链接事件的类型。
  • data:指向可选参数的指针(根据事件类型而变化)。
该函数将始终返回布尔值 __false,因为未确定成功/失败。

多次贩售请求处理程序

此函数用于处理会话及其包含的项目。请参阅下方代码块:
C
它初始化 session_products 0 和 1,每个都具有不同的商品代码和价格,并将它们添加到 “session” object 中。

多会话出货事件处理器

此函数用于处理出货事件并记录相关信息。
C
在哪里:
  • event_id:售卖事件的类型。
  • data:指向可选参数的指针。根据事件类型而变化。
此函数将返回一个布尔值:
  • 大多数情况下为 __false。
  • __true 用于vmc_vend_event_on_vend_approved,表示出货批准成功。

步骤 4:设置初始化函数

添加辅助函数后,您需要实现用于初始化 VMC 配置和菜单处理程序的函数。请参见下方各部分了解更多详情。

初始化 VMC

此函数用于初始化 VMC 配置并注册事件处理程序。请参见下方代码:
C
由于这是多重出货会话, config.multi_vend_support 被设置为__true。

初始化菜单

在初始化菜单之前,请添加必要的处理程序函数。请参见下方代码:
C
现在您可以通过链接之前创建的处理程序来初始化菜单。请参见以下代码。
C

步骤 5:实现主函数

在实现所有其他部分之后,您可以添加程序的主入口点,该入口点会初始化与外围设备的链路及菜单,然后启动一个运行菜单的无限循环。请参见下方代码:
C