概述
EMV Core 为 POS 应用程序提供两个 API 层:- C 函数,在
libecodsdk中实现。请参阅 SDK 中的ecod_sdk.h和ecod_sdk_types.h。 - JSON-RPC 消息,通过串口或 USB 使用 Datalink 封装传输。请参阅 JSON-RPC API。
支持的功能
该 SDK 支持以下支付和设备管理操作:- 信用卡 / 借记卡 / 预付卡销售:
- EMV 非接触式(仅限无 CVM)
- 两步交易(授权→确认)
- 闭环(预付费)卡
- 同步(单会话)和异步(多会话)流程
- 取消和撤销交易:
CancelTransaction会在读取到卡片之前取消正在进行的轮询。VoidTransaction会撤销已批准的交易。
- 用户界面(UI): 由 POS 应用程序使用读卡器状态事件进行管理。
- 终端管理: 固件和配置更新、状态和版本查询、设备 ID。
- 网络 API: 主机必须实现网络 API 才能启用 EMV Core 与 Nayax 服务器的通信。
API 参考
初始化和生命周期
获取 SDK 版本字符串
返回 SDK 版本,以空字符结尾的字符串形式表示:初始化 SDK
启动时调用一次:维护循环
从专用线程持续调用:处理 JSON-RPC 消息
当EC_USE_DATALINK_PROTOCOL=1 时,从第二个线程调用:
EC_USE_DATALINK_PROTOCOL 后,需要第二个线程来处理 JSON-RPC 消息。调用 EcodSdk_Maintain() 处理数据链路操作,调用 EcodSdk_ProcessMessages() 处理消息。
设置日志详细程度
调用此函数控制 SDK 日志输出的详细程度:设备状态
获取当前设备状态
调用以查询当前设备状态:获取设备标识(序列号)和版本
调用此函数以获取设备序列号和固件版本字符串:读取配置属性
返回当前配置文件中指定键的值:交易操作
开始预授权
预留相应金额;稍后需确认或作废:获取卡令牌(不扣款)
启动读卡轮询,但不发起支付:确认预授权交易
产品或服务交付后调用:撤销预授权交易
调用以解除预授权冻结,不向卡片扣款:取消正在进行的支付流程
调用以在授权完成之前停止正在进行的读卡轮询:网络通知
这些函数由平台层调用,用于通知 SDK 网络事件:通知 EmvCore 套接字数据已到达
当套接字上存在数据时,从平台层调用:通知 EmvCore 套接字已关闭
当套接字连接关闭时,从平台层调用:通知 EmvCore 网络连接变更
当网络可用或不可用时,从平台层调用:回调注册
交易完成(成功、拒绝、错误、取消、超时)
注册一个处理程序以接收每次PreAuthorize 调用的结果:
读卡器显示事件(客户提示)
注册处理程序,接收读卡器上当前显示的消息:关键数据类型
支付参数
将此结构体传递给EcodSdk_PreAuthorize 和 EcodSdk_GetCardToken:
交易响应
此结构体会传递给TransactionComplete 回调:
状态码
设备状态(来自EcodSdk_GetStatus):
金额字段详情
金额字段根据 API 方法的不同使用不同的单位:- C API:
emvCorePaymentParameters中的amount_cents以及EcodSdk_ConfirmTransaction的金额参数始终以美分为单位(例如 450 = 4.50 美元)。 - JSON-RPC
PreAuthorize: 金额以美分为单位(例如 450 = 4.50 美元)。 - JSON-RPC
ConfirmTransaction: 金额以美分为单位(例如 450 = 4.50 美元)。 TransactionComplete事件中的amount字段按 PSP 返回的主要货币单位表示(例如 4.50 美元)。fee参数已弃用,请将其设为0。它将在下一版 SDK 中移除。
货币代码管理
SDK 按以下优先级顺序从多个来源解析货币代码:- 自 SDK v1.0 起,货币代码取自 EMV Core 配置中的
CURRENCY_CODE属性。 - 如果配置中缺少
CURRENCY_CODE,则使用主机在PreAuthorize中发送的currency参数(向后兼容)。 - 如果两者都未提供,则使用 EMV Core 软件默认值(840 / USD),并向 Nayax Core 服务器发送警报。
- 当设备由 Nayax Core 管理时,货币代码会自动从机器设置中获取。