跳到主要内容

Newland NSDK MDB开发指南

· 阅读需 6 分钟
Quany
软件工程师

修订表

  • 版本1.0,2023年8月31日,创建文档。
  • 版本1.1,2023年9月25日,更新“MDBFunctionCallBack”及其参数描述。
  • 版本1.2,2023年11月23日,增加第3章“事务流程”以介绍API调用流程。

Newland NSDK MDB开发指南 修订版 V1.2 福建新大陆支付技术有限公司 2023年11月

1. 引言 本文档旨在介绍NSDK MDB库的接口和所有参数。

2. 接口 2.1 初始化 MDBModule

  • 方法:void init()
  • 描述:初始化MDB模块库。在调用其他接口之前必须先调用此方法。
  • 异常:MDBException

2.2 设置MDB配置 MDBModule

  • 方法:void setMDBConfig(MDBConfiguration mdbConfiguration)
  • 参数:
    • mdbConfiguration:MDB配置数据,详情见下文“MDBConfiguration”。
  • 描述:设置MDB配置。可以使用“MDBConfiguration”对象一次性设置所有配置。
  • 异常:MDBException

MDBConfiguration 类定义了各种配置参数,包括无现金配置信息、国家代码、货币单位、小数位数、最大响应时间、是否支持退款、是否支持显示、是否支持多售货、是否支持现金销售等。

当然,这里是翻译的内容:

2.2 设置 MDB 配置

可以通过一个 MDBConfiguration 对象设置所有配置:

class MDBConfiguration {
/* 无现金配置信息,例如,目前仅支持 Level 01 */
byte featureLevel = (byte) 0x01; /* 表示读卡器的功能级别 */

byte countryCodeH = (byte) 0x18; /* 国家代码由 countryCodeH 和 countryCodeL 组成,左侧数字为 0 表示使用国际电话代码来表示国家。例如,美国代码是 00 01H(countryCodeH = 00 和 countryCodeL = 01)。 */

byte countryCodeL = (byte) 0x40; /* 左侧数字为 1 表示使用 ISO 4217 数字货币代码的最新版本。例如,美元代码为 18 40H(countryCodeH = 18 和 countryCodeL = 40)。 */

byte scaleFactor = (byte) 0x01; /* 用于缩放 VMC 和读卡器之间传输的所有货币值的乘数 */

byte decimalPlaces = (byte) 0x02; /* 用于通信货币值的小数位数 */

byte maxResponseTime = (byte) 0x1E; /* 应用程序最大响应时间(秒) */

byte refundSupport = (byte) 0x01; /* 表示读卡器是否支持退款 */

byte displaySupport = (byte) 0x01; /* 表示读卡器是否支持显示 */

byte multiVendSupport = 0; /* 表示读卡器是否支持多次销售 */

byte cashSaleSupport = 0; /* 表示读卡器是否支持现金销售 */

byte cashlessAddress = 0x10; /* 表示读卡器的地址,0x10 或 0x60 */

/* Level03 可选功能 */
byte fileTransLayerSupport = 0; /* 是否支持文件传输层 */

byte monetaryFormat = 0; /* 0 = 16 位货币格式(默认),1 = 32 位货币格式 */

byte multiCurrencySupport = 0; /* 支持多货币/多语言 */

byte negativeVendAllow = 0; /* 允许负销售 */

byte dataEntryAllow = 0; /* 允许数据输入 */

byte alwaysIdleAllow = (byte) 0x01; /* 允许“始终空闲”状态 */

/* 设备信息索引 */
byte[] manufactureCode = "NLD".getBytes(); /* 制造商代码 - ASCII - 最多 3 字节 */

byte[] serialNumber = null; /* 序列号 - ASCII - 12 字节 */

byte[] modelNumber = null; /* 型号 - ASCII - 12 字节 */

byte[] softwareVersion = null; /* 软件版本 - 打包的 BCD - 2 字节 */

/* 消息处理 */
int sessionIdleTimeout = 60;
int vendTimeout = 60;

/* 调试级别 */
int debug = 0;
......
}

以上是关于 MDBConfiguration 类的详细配置说明。

2.3 设置MDB回调 MDBModule

  • 方法:void setMDBCallback(MDBFunctionCallBack mdbCallback)
  • 参数:
    • mdbCallback:要设置到MDB模块的函数回调,之后在接收到相应指令时将触发这些回调。
  • 描述:设置MDB函数回调到库中,可以使用这些回调执行详细操作。
  • 异常:MDBException

MDBFunctionCallBack 接口定义了一系列回调方法,包括重置、设置MCU配置信息、获取价格信息、启用和禁用读卡器、请求售货进度、取消售货、售货成功、售货失败、售货超时、会话完成、现金销售、请求充值、协商最大退款金额、获取VMC信息、启用L3特性等。

2.4 执行MDB MDBModule

  • 方法:void perform()
  • 描述:执行MDB直到调用“停止”。

2.5 停止MDB MDBModule

  • 方法:void stop()
  • 描述:停止事务并释放事务线程。

2.6 获取MDB设备信息 MDBModule

  • 方法:byte[] getMDBDeviceInfo(MDBDeviceInfoType infoType)
  • 参数:
    • infoType:MDB设备信息的类型,详情见下文。
  • 描述:通过输入的类型获取MDB信息。
  • 异常:MDBException

2.7 清理配置 MDBModule

  • 方法:void cleanUp()
  • 描述:清理设置到MCU的配置。这只能在“停止事务”之后和退出应用程序之前调用一次。
  • 异常:MDBException

3. 事务流程 3.1 API调用流程 3.2 初始化流程 3.3 标准售货流程