WristcoinPOS集成SDK for iOS
简介
此项目是一个SDK,允许POS供应商集成WristCoin非接触式现金支付,并接受WristCoin钱包作为付款方式。
使用此SDK的先决条件是拥有WristCoin外部蓝牙终端,该终端使用WristCoin手环/卡/令牌接受NFC支付。该终端抽象出POS应用程序的所有NFC细节。蓝牙连接处理、通信协议和要求的详细说明超出了此SDK的范围。连接和与终端通信的必需依赖项已包含在WristcoinPOS Cocoapod中。如果您感兴趣,请参阅此处有关蓝牙通信的详细信息,如扫描终端、连接、发送和接收数据。
我们目前正在我们的POS集成计划的封闭测试程序中。要参加封闭测试,请发送电子邮件至[email protected]以获得您的开发终端。
功能
SDK当前支持以下操作
- 事件选择
- 读取手环状态和余额信息
- 对手环进行指定金额的扣费
- 获取终端的固件版本
发送命令到WristCoin蓝牙NFC终端
在每个命令创建完成后,将其发送到终端(假设终端已连接)
yourWristcoinTerminal.sendMessage(message: setEventIdCmd)
其中yourWristcoinTerminal
是类型TappyBle
(由TCMPTappy
模块提供)
接收WristCoin蓝牙NFC终端的响应
一旦连接到WristCoin蓝牙NFC终端,您必须设置响应监听器以处理从终端接收的数据
yourWristcoinTerminal.setResponseListener(listener: myWCTerminalResponseListener)
其中yourWristcoinTerminal
是类型TappyBle
(由TCMPTappy
模块提供)。
yourWristcoinTerminal
函数必须采用以下方法签名
func myWCTerminalResponseListener(tcmpResponse : TCMPMessage)
事件选择
目前,WristCoin终端在工厂预先配置为您的订单指定的活动。设置事件ID选择您的POS正在使用的事件。如果将未在工厂配置为终端的事件ID传递,WristCoin终端将返回错误。未来版本的POS集成程序将允许实时配置各项活动,但目前工厂配置必须与您正在处理的事件ID匹配。
声明一个设置事件ID命令
let setEventIdCmd: SetEventIdCommand
为了设置事件ID
try! cmd = SetEventIdCommand(eventId: UUID(uuidString: "a649e0f4-0bc0-11ea-84d8-afbab2cfcb2a")!)
或者如果您已经有16字节的UInt8
数组
try! setEventIdCmd = SetEventIdCommand(eventId: [0xA6,0x49,0xE0,0xF4,0x0B,0xC0,0x11,0xEA,0x84,0xD8,0xAF,0xBA,0xB2,0xCF,0xCB,0x2A])
然后将命令发送到终端,如上所示。建议您处理可能抛出的异常,提供的示例仅用于说明目的,因此保留了单行代码,但在实践中,处理...
扣款手环信用 - 简短响应
本命令的简短响应版本旨在在不需终端反馈完整手环状态的情况下,实现快速便捷的集成。此命令简单返回扣除请求金额后的手环可用余额。这样可以避免处理和解析TLV数据,如果所有需要知道的是交易后的最终余额。
声明一个扣款手环简短响应命令
let debitWristbandShortRespCmd : DebitWristbandShortRespCommand
请求扣除一美元(或比索、欧元、英镑等)
try! debitWristbandShortRespCmd = DebitWristbandShortRespCommand(debitAmountCentavos: 100)
这将使用终端默认的超时时间,大约八秒左右。如果要指定自己的超时时间,假设是12秒
try! debitWristbandShortRespCmd = DebitWristbandShortRespCommand(debitAmountCentavos: 100, timeout: 12)
注意:指定超时被解释为0-255秒,0表示没有超时(轮询手环直到中断)。然后按照上面的方法将命令发送到终端。
扣款手环信用 - 完整响应
对于需要获取扣款交易后完整手环状态的集成,使用扣款命令的完整响应版本。此版本返回完整的TLV数组形式的手环状态,然后需要验证和解析(注意:SDK的未来版本将提供TLV库以供此目的使用)。
声明一个扣款手环完整响应命令
let debitWristbandFullRespCmd : DebitWristbandFullRespCommand
请求扣除一美元(或比索、欧元、英镑等)
try! debitWristbandFullRespCmd = DebitWristbandFullRespCommand(debitAmountCentavos: 100)
这将使用终端默认的超时时间,大约八秒左右。如果要指定自己的超时时间,假设是12秒
try! debitWristbandFullRespCmd = DebitWristbandFullRespCommand(debitAmountCentavos: 100, timeout: 12)
注意:指定超时被解释为0-255秒,0表示没有超时(轮询手环直到中断)。然后按照上面的方法将命令发送到终端。
获取终端固件版本
此命令可以查看终端的固件版本,当测试版继续进行且添加新功能时,非常有用。
let getTerminalFirmwareVerCmd : GetFirmwareVersionCommand = GetFirmwareVersionCommand()
然后按照上面所示的方法将命令发送到终端。
示例
要运行示例项目,请克隆存储库,然后从示例目录运行 pod install
。它包含如何扫描、连接和与 WristCoin 蓝牙终端通信的示例。
标签 - 长度 - 值 (TLV) 数据编码规范
即将推出:当返回手环账户/状态信息时,终端使用 TLV 规范来编码数据。将此存储库星标以关注更新,因为未来几周将发布更多文档。
需求
- 部署的最低 iOS 版本是 12.0
- Swift 4.2
- 推荐使用 XCode 12.2 或更高版本
WristcoinPOS
pod 依赖于 TCMPTappy pod
进行蓝牙读取器通信。
安装
WristcoinPOS 可通过 CocoaPods 获得。要安装它,只需将以下行添加到您的 Podfile 中
pod 'WristcoinPOS'
作者
dshalaby,[email protected]
许可协议
WristcoinPOS 可在 Apache 2.0 许可协议下使用。有关更多信息,请参阅 LICENSE 文件。