WristcoinPOS 0.1.0

WristcoinPOS 0.1.0

David Shalaby维护。



WristcoinPOS集成SDK for iOS

License Platform Xcode Swift

简介

此项目是一个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 文件。