文档首页

智能福袋机系列解决方案

快速入门

产品介绍

什么是智能福袋机

智能福袋机属于自动贩卖机,机器内每条轨道分别放置了价值不等的福袋,商品种类繁多,其中不定时会在福袋内出现不同的高价值礼品,福袋采用统一大小的精美礼品盒。乐摇摇提供强大的联网通讯功能与saas服务,在设备上整合了移动支付、远程管理、数据分析能力,让您可以在任何时间、地点进行监控管理。是一款集合了创新、智能、娱乐为一体的新型终端设备。

产品功能

多种通讯类型

支持2G/4G/WiFi三种通讯方式

24H自助零售

支付成功后,相应轨道自动启动出货,并记录出货数据

触摸屏交互

支持屏幕显示礼品信息,选择礼品后自动生成动态支付码

支持游戏运行、语音与视频播放

支持主板参数设置、固件版本升级

SaaS服务

1移动支付

同时支持微信、支付宝、云闪付等多种主流支付方式

银行直连清算,资金直接导致商户绑定的银行卡,0风险

2设备管理

支持绑定多台设备关系,远程监控设备运行状态、主板参数设置

支持设置设备启动单价

3经营统计

支持数据统计、查询、分析管理,支持监控每个设备与投放点的趋势

4订单查询

支持追踪每一笔消费订单,支持查看每个用户的订单明细

5会员管理

支持用户消费统计,勾勒用户画像,提供多种营销工具

6礼品统计

支持记录轨道出礼数据,统计礼品成本与出奖率

支持监控轨道礼品现存数,及时推送消息提醒补货

7预警

支持设备故障自动诊断,推送消息预警;

产品优势

智能化充电桩与传统产品对比的优势

对比项 智能化充电桩 传统充电桩
支付渠道 接入移动支付,同时兼容微信、支付宝、银联等主流支付渠道 资金安全,银行直接清算到账,并提供详细的流水明细 丰富的营销资源补贴 设备无法联网通讯,只能使用现金、投币支付方式,无法满足线上支付行为,导致消费用户流失 现金收益存储在设备内,存在一定的资金风险
管理 通过SaaS后台实时监控设备运营状态,跟踪设备使用分布和故障,及时维护 线上支付收益直接到账,账目清晰 远程设置收费标准 售后维护,提升用户忠诚度 无法知晓设备运行情况,只能通过员工定时维护,人力成本高 需要定期收款,清点金额数量,低效且账目容易出现错乱 出现消费纠纷,无法立刻排查处理
数据分析 从消费金额、频率、人数等维度出发,实时了解经营状况并进行比对 勾勒用户消费画像,提供运营决策依据 无法系统地收集数据,只能基于经验或片面的认知,做出运营决策

设备联网方案

厂商研发能力不一,设备销售成本也存在一定的价格差异。同时,部分厂商为了提升自身产品竞争力,在满足日常功能基础上,希望为运营商和消费者提供增值功能或服务。对此,乐摇摇基于研发能力、价格、接口扩展等方面,提供了多样的硬件联网方案。

对比项 SDK 串口板 Android控制板
图片 744b4bebcc094abc87207f3056363277.png 70257d97b94b4c2a940c0bca2f09ba4f.png
数据交互方式 通过Tcpip与服务器双向通讯 通过串口进行数据交互,与设备双向通讯:向设备发送控制指令、接受设备上报数据 通过串口进行数据交互,与设备双向通讯:向设备发送控制指令、接受设备上报数据
接口类型或协议类型 具体协议文档 串口及串口协议 串口及串口协议 USB及USB协议
品类通用性 极强
通讯方式 依赖厂商硬件 2G 2G+WIFI 4G+WIFI 2G/4G/WIFI
安装方式 下载SDK,和厂商软件开发集成 通过接口与主板连接 通过接口与控制板、屏幕连接
研发能力 嵌入式开发 嵌入式开发 无需开发 亦可基于业务需求进行二次开发
优点 无硬件限制 可扩展性强、集成度高 成本低 安装方便 开发简单 应用扩展度高,可基于业务二次开发 一体化集成功能,开发简单 预留丰富接口,应用扩展度高

应用服务

移动支付

通过联网,接入乐摇摇平台的充电桩,实现了移动支付功能,消费者在屏幕上选择礼品后,点击购买,扫描支付二维码,付款成功后,礼品轨道启动出货。

1在屏幕选择礼品,可以选择一个或多个;

2点击支付购买,出现支付二维码;

3扫描支付二维码,支付成功后,启动轨道启动出货。(支持金额会直接清算至运营商账号)

整个操作过程简单快捷。

e61ac5d7b42e4ba78012afdc70d65446.png

设备管理后台

为了提升管理效率,实现精细化运营,接入乐摇摇平台的福袋机,运营商可以通过设备管理后台进行远程监控,及时了解礼品出货情况,保证设备的正常运作。

da286a753b9d490f91616d84370957c3.png

设备管理后台功能列表

功能 描述
设备注册 扫描设备注册二维码,实现设备绑定,绑定后即可正常运作
设备管理 远程监控设备运行状态,启动分布与异常设备统计等
远程调整主板参数 灵活的权限配置,指定场地负责人
收费套餐设置 修改每条轨道启动单价
礼品统计 记录每个轨道礼品存量、出货量,后台实时生成数据报表 当礼品小于每个值,推送消息提醒商户
经营统计 统计在线支付、现金、线下投币等数据,绘制可视化数据分析图表 分析每个场地单位时间收益趋势 比对一段时间支付单价、用户消费数、消费分布,构建用户画像
订单查询 跟踪每一笔支付消费,每一次设备启动,提升售后服务
营销工具 多样化营销工具,随机立减、优惠券、自建优惠活动、广告分成 商户品牌信息设置
会员管理 划分用户消费等级,并提供排行榜、积分商城,实现二次营销

若请体验设备管理后台功能,请扫描并关注企业二维码,进入后台并注册账号接即可。

3d59aaea1aed48a0aa66b7af498fa186.png

SDK解决方案

SDK说明

面向对象

本文档面向合作伙伴的技术员,适用于乐摇摇SAAS平台福袋机产品的硬件技术对接,便于双方技术团队遵循既定的合作流程,完成技术的沟通和对接,提升效率。

集成文档包括《技术协议文档》、《open-netty-client.jar》、《open-netty-client-sources.jar》

接入方案处于内测阶段,若需接入,请和市场人员沟通,申请并分配APPID和密钥。

联系方式:陈先生-13728058558

SDK说明

设备接入SDK封装了福袋机与乐摇摇SAAS系统的云端通讯过程。 这些过程包括配置、连接、心跳、状态上报以及场景功能接口等。 使用SDK,可以使得开发者快速完成APP开发,开发者仅需关注APP的UI和UE设计即可,而相对复杂的协议与错误处理等事项可忽略。

SDK初始化

配置产品参数实例化NettyClient工具类,调用connect方法开始初始化。

SDK工具类

类定义静态变量appid、appSecret、uuid,在程序中直接通过“类名.参数名”的方式直接调用。

App上行数据包到服务器

SDK包的工具类MsgProducer封装服务器交互的消息发送接口,调用对应API完成消息发送。

服务器下发消息处理逻辑

继承 AbstractMsgHandler 并实现逻辑处理方法,在初始化 sdk 阶段传入该类实例。

SDK文档

下载福袋机-安卓SDK

合作方根据实际情况选择jar包的版本,可以在maven仓库查询maven和gradle依配置

仓库地址:https://mvnrepository.com

eb71d66892bc4d05a50e98e718b4fcbb.png

Gradle依赖

引入netty和json包

compile group: 'io.netty', name: 'netty-all', version: '4.1.16.Final' 
compile group: 'com.google.code.gson', name: 'gson', version: '2.8.2' 

Mave依赖

io.netty netty-all 4.1.16.Final 
com.google.code.gson gson 2.8.2 |

福袋机串口板接入方案

什么是串口对接

乐摇摇提供联网模组/芯片,厂商把模组与设备主板连接,基于标准化的硬件通信协议进行开发,使设备获得联网通讯能力以及一体化的sass服务。智能化的设备上整合了移动支付、远程管理、数据分析、渠道运营、广告投放等能力,让投放商可以在任何时间、地点进行监控管理,提升整体管理效率与渠道收益。

串口方案

乐摇摇提供了两种串口解决方案,分布是:串口版和集成芯片,两者实现的功能一样,只是与主板连接方式、价格上存在差异。厂商可根据自身需求选择。

对比项 串口板 集成芯片
图片 c35394fae6ff4188b7f0cdc67b7c9735.png 744b4bebcc094abc87207f3056363277.png
数据交互方式 通过串口进行数据交互,与设备双向通讯:向设备发送控制指令、接受设备上报数据 通过串口进行数据交互,与设备双向通讯:向设备发送控制指令、接受设备上报数据
品类通用性
通讯方式 4G 2G/4G/WIFI
安装方式 与主板连接 通过焊接与主板连接
研发能力 嵌入式开发 嵌入式开发
优点 安装方便 应用扩展度高,可基于业务二次开发 应用扩展度高,可基于业务二次开发 价格优惠 尺寸小

前言

针对厂商设备主板与乐摇摇串口联网模组对接,平台提供标准串口数据通讯协议、自动生成参数界面、串口调试工具,简化开发过程,使设备快速联网获得增值功能。本文档基于乐摇摇串口联网模组与设备主板的标准对接流程编写

适用范围:方案适用于福袋机、口红机、售货机等自助零售设备

协议文档

下载乐摇摇售货机串口通信协议

下载主板协议对接操作指南

集成芯片对接参考设计资料

若选择串口集成芯片对接方案,请下载相应参考资料

2G&WIFI-集成对接硬件设计资料

4G-集成对接硬件设计资料

ee19192f5b2a427aacb3fb21bbc4418d.png

SDK

下载串口与函数SDK

串口调测功工具

下载乐摇摇串口调试助手

准备工作:对接前,需要先获取乐摇摇联网芯片或模组,以便后续开发测试。

开发流程

如果您是首次接入乐摇摇联网方案,请按以下流程进行对接。下文将针对各个步骤进行详细描述。

4e21b2376bae43c5a1095d0a2fffb3db.jpg

对接流程 参考文档
1注册开发账号 查看流程文档
2创建产品 查看流程文档
3主板参数配置 查看流程文档
4硬件嵌入式开发 查看流程文档
5硬件联调 查看流程文档
6发布,体验功能 查看流程文档

设备主板接入方案

方案介绍

模组名称:福袋机Android板

主板图片:

70257d97b94b4c2a940c0bca2f09ba4f.png

方案概述:通过串口进行数据交互,与设备双向通讯:向设备发送控制指令、接受设备上报数据。不容易受到干扰,传输数据准确率高。方案优点是不受限于SOC片上资源、应用扩展度高;

适用设备:福袋机

联网方式:2G/4G/wifi

连接方式:与设备传感器连接

工厂开发:基于Android板与控制板通讯指令开发

SDK接入指南

初始化

开发团队已经对福袋机通讯协议进行封装,app只需要在工程中引入open-netty-client.jar,即可调用相应api进行数据收发操作。

登陆流程示意图

ff69d8e0f63444fca46ede2364758bfe.png

客户端实例声明

NettyClient client = new NettyClient ( appId , key , host , port , uuid,handler ) ;

client.connect(); // 请求服务器建立链接

参数说明

| 参数名称 | 说明 || | ----- | | ------------------------------------------------- | | appId || 系统分配的应用编号 | | Key || 密钥 | | Host || 通讯域名或者IP | | Port || 端口 | | Uuid || 设备唯一编码,由厂家自定义生成,全局唯一,否则登陆失败。 目前推荐规则:厂家前缀+设备唯一码 | | Handler || 参考“消息处理器”说明 |

消息处理器 消息子类继承AbstractMsgHandler,重写业务逻辑方法,详见“处理器实现”说明。 实现样例:

public class SimpleMsgHandler extends AbstractMsgHandler {

/**

重写登陆逻辑

**/

@Override

protected boolean loginHandler(ResponseParam responseParam) {

// 业务实现代码

return true;

}

……

 

扫码支付

用户点击商品生成二维码进行支付操作,程序要严谨处理支付逻辑、出礼和退款操作。

1.请求生成二维码,显示到终端屏幕

方法名称:MsgProducer.getPayCode(GetPayCodeParam param);。

详细参数说明如下:

参数名称 参数说明
selectChannels 选择的货道信息,每个元素分别表示一个货道的选择情况,元素内容为 仓位id,购买数量, 单价组成,例 1,2,300 表示第一货道需要购买两每个3元;多个货道信息使用”;”分隔。
isGaming 表示是否是玩游戏,如果是玩游戏 则上面 单价 表示游戏的价格
uniqueKey 随机生成,作为支付事务校验唯一码,在支付结果回调,启动结果上传都需要使用到该 唯一码

代码示例:

public static boolean getPayCode() {

System.out.println("获取支付二维码......");

GetPayCodeParam param = new GetPayCodeParam();

param.setUniqueKey(UUID.randomUUID().toString());

param.setSelectChannels(Arrays.asList("2,2,2;1,1,1"));

param.setIsGaming(true);

return MsgProducer.getPayCode(param);

}

代码示例:二维码请求参数返回处理,重写handler子类的qrCodeHandler方法,完成显示逻辑。

 @Override

protected boolean qrCodeHandler(ResponseParam responseParam) {

QrCodeResp resp = getResp(responseParam, QrCodeResp.class);

System.out.println(String.format("get 设备注册二维码为:%s", gson.toJson(resp)));

return true;

}

2监听用户支付返回消息,启动终端出礼设备;

用户支付成功后,服务会下发消息通知到APP,开发者需要重写handler子类的payResultHandler方法,完成显示逻辑。

代码示例:
@Override

protected boolean payResultHandler(ResponseParam responseParam) {

System.out.println(String.format("支付结果为:%s", gson.toJson(responseParam)));

// 完成设备相关的启动逻辑

return true;

}

扫码支付流程时序图如下:

d961ceefee484748ac9432366d7f8ab5.png

设备退礼

上传设设备仓位的退礼信息到服务器,存档对应的退礼数据。

方法名称:MsgProducer.uploadGift(UploadGiftParam param);   

详细参数说明如下:

参数名称 参数说明
mainPosition 货道的唯一编号
giftInc 退礼增量
giftTotal 退礼总量
uniqueCode 上传事务随机码:没有收到响应消息,重复上传情况下请使用同一个随机码。
originType 退礼来源:GAME=游戏退礼,BUY=购买退礼,RD=远程上分退礼

代码示例如下:

public static boolean uploadGift() {  
  System.out.println("上传礼品信息");  
  String key = UUID.randomUUID().toString();  
  UploadGiftParam param = new UploadGiftParam();  
  param.setUniqueCode(key);  
  param.setGiftTotal("2");  
  param.setGiftInc("2");  
  param.setMainPosition("4");  
  param.setOriginType("BUY");  
  MsgProducer.uploadGift(param);  

System.out.println("上传礼品信息......");
key = UUID.randomUUID().toString();
param = new UploadGiftParam();
param.setUniqueCode(key);
param.setGiftTotal("1");
param.setGiftInc("1");
param.setMainPosition("3");
MsgProducer.uploadGift(param);
return true;
}

退礼操作需要确认上报结果,如果没有接收到消息或者返回接收失败,建议进行3次重试。

重写handler子类的uploadGiftResultHandler方法,接收退礼上报结果。

代码示例:

@Override

protected boolean uploadGiftResultHandler(ResponseParam responseParam) {

System.out.println(String.format("上传退礼信息返回结果为:%s", gson.toJson(responseParam)));

return true;

}

 

设备绑定

在公众号后台进行设备绑定和解除绑定操作,流程如下:

e71de705a3d745c597f36638897a5943.png

操作成功后,服务器下发的设备消息到安卓APP;如果操作失败,请开发这重复上述流程,重复操作流程不下发消息通知。

开发者实现handler的通知逻辑,重写eqBindNoticeHandler绑定通知;重写 eqUnBindNoticeHandler解绑通知。

示例代码如下:

/**  
  * 设备绑定通知  
 *@param responseParam  
 *@return  
 **/  
  protected boolean eqBindNoticeHandler(ResponseParam responseParam) {  
  System.out.println(String.format("get 收到设备绑定通知: %s", gson.toJson(responseParam)));  
 return true;  
 }
 /**  
   *设备解绑通知  
  *@param responseParam  
  *@return  
 **/

@Override
protected boolean eqUnBindNoticeHandler(ResponseParam responseParam) {
System.out.println(String.format("get 收到设备解绑通知: %s", gson.toJson(responseParam)));
return true; }

B端设置操作

B端是指公众号【设备管理系统】提供的商户后台管理系统,提供一系列的设备管理、经营统计、会员管理等相关的管理工具和数据统计功能。

通过一些的设备管理操作功能,实现对联网设备的动态管理和监控,提供运营效率。

B端界面:

d560c28d58a74574bbc9c909031908d3.png

参数设置

商户在公众号后台设置设备参数,服务器下发消息到终端APP,开发者需要重写handler的setEquipmentParamHandler方法,实现设备参数同步。

示例代码:

@Override  
 protected boolean setEquipmentParamHandler(ResponseParam responseParam) {  
  System.out.println(String.format("set 参数设置通知:%s", gson.toJson(responseParam)));  
  List<SetEquipmentParamResp> resps = getRespList(responseParam, SetEquipmentParamResp.class);  
  System.out.println(String.format("解析参数为:%s", gson.toJson(resps)));

// 实现参数同步逻辑

return true;
}

开门操作

商户在B端点击补货, 服务器下发设备参数到终端,开发者重写handler的openDoorHandler方法,解析仓位列表参数,打开对应的仓门。

示例代码如下:

@Override  
 protected boolean openDoorHandler(ResponseParam responseParam) {  
  System.out.println(String.format("set 开门通知:%s", gson.toJson(responseParam)));  
  List<OpenDoorResp> resps = getRespList(responseParam, OpenDoorResp.class);  
  System.out.println(String.format("解析参数为:%s", gson.toJson(resps)));  
 return true;  
 }

补货/清货操作

9322b9ff0bf24e298939ede0657b2775.png

商户在B端点击补货/清货(参考下图操作界面),服务器下发消息通知到APP。开发者重写handler的addOrcleanStockHandler方法进行数据处理,参数包括补货的仓位列表、数量,打开对应的仓门进行补货。

示例外码如下:

@Override  
 protected boolean addOrCleanStockHandler(ResponseParam responseParam) {  
  System.out.println(String.format("set 补货/清货通知:%s", gson.toJson(responseParam)));  
  List<AddOrCleanStockResp> resps = getRespList(responseParam, AddOrCleanStockResp.class);  
  System.out.println(String.format("解析参数为:%s", gson.toJson(resps)));  
 return true;  
 } 

设备登陆

SDK初始化成功后,自身机制管理与服务器链接状态,自动发起随机数获取、登陆、货到上传流程,完成服务器约定的设备初始化流程。 步骤如下:

获取随机数 详见“获取随机字串”说明。

设备登陆 详见“设备登录接口”说明。

货道上传 详见“上传货道信息”说明

线下投币

当设备有线下投币的时候,需要调用 MsgProducer 中的 uploadCoins 方法 同步数据到服务端。 同步投币数据后 AbstractMsgHandler 中的 uploadCoinsResultHandler 方法会返回服务端的接收结果。 如果没有接收到消息或者返回接收失败,则需要进行 3次 重试;

方法名称:MsgProducer. uploadCoins(UploadGiftParam param);   

详细参数说明如下:

参数名称 参数说明
mainPosition 仓位编号:正整数,对设备唯一
coinsInc 投币增量:本次投币数量
coinsTotal 投币总量:设备投币总量(当该数大于上次上传的投币总量时:本次投币数量=本次投币总量-上次投币总量,否则:本次投币数量=投币增量)

代码示例如下:

public static boolean uploadCoins(String total, String inc) {

System.out.println("上传投币信息......");

String key = UUID.randomUUID().toString();

UploadCoinsParam param = new UploadCoinsParam();

param.setUniqueCode(key);

param.setMainPosition("2");

param.setCoinsTotal(total);

param.setCoinsInc(inc);

MsgProducer.uploadCoins(param);

return true;

}

代码示例:重写handler的uploadCoinsResultHandler方法,处理消息通知。

@Override  
 protected boolean uploadCoinsResultHandler(ResponseParam responseParam) {  
  System.out.println(String.format("get 上传投币信息返回结果为:%s", gson.toJson(responseParam)));  
 return true;  
 }

获取随机字串

方法名称:MsgProducer.getSignRandom(GetSignRandomParam param)。

该接口为 获取随机字串,获取随即字串接口是用于登录使用, SDK 在获取随即字段成功后会自动调用登录接口。如果自动登录接收登录结果为失败,需要手工调用该接口进行重试;

设备登录接口

方法名称:login(LoginParam param)。

如果登录结果返回失败,需要手动调用 getSignRandom(GetSignRandomParam param) 进行重新登录,建议重试时间间隔 5 秒。

上传货道信息

方法名称:MsgProducer.updloadMainboardInfo(UpdloadMainboardInfoParam param)。

设备初始化、货道信息变更的情况下,必须调用本接口上传货道信息。

支付环节进行货道参数校验,如果缺少货道信息会引发支付异常。

详细参数说明如下:

参数名称 参数说明
mainPosition 货道id 对于设备唯一
produceName 商品名称 售卖商品的名称
gamePrice 货道游戏价格
buyPrice 商品购买价格
Probability 游戏概率
Capture 容量
Stock 库存
uniqueCode 上传事务随机码(重复上传时使用同一个随机码)

代码示例:

public static boolean uploadMainboard(String mp) {  
  System.out.println("上传仓位信息......:" + mp);  
 int max = Integer.valueOf(mp);  
 for (int i = 1 ; i <= max ; ++i) {  
  String key = UUID.randomUUID().toString();  
  UploadMainboardInfoParam param = new UploadMainboardInfoParam();  
  param.setUniqueCode(key);  
  param.setStock("10");  
  param.setCapture("50");  
  param.setProbability("10");  
  param.setBuyPrice("2000");  
  param.setGamePrice("100");  
  param.setProductName("暂无");  
  param.setMainPosition(i + "");  
  param.setProductCost("500");  
  param.setPicture("https://picture");  
  param.setPositionName("仓位名");  
  param.setPositionStatus("1");  
  MsgProducer.uploadMainboardInfo(param);  
  }  
 return true;  
 }

重写handler接口setMainboardHandler方法处理服务器下发通知消息。

示例代码:

@Override  
 protected boolean setMainboardHandler(ResponseParam responseParam) {  
  SetMainboardResp resp = getResp(responseParam, SetMainboardResp.class);  
  System.out.println(String.format("set 设置仓位信息:%s", gson.toJson(resp)));  
 return true;  
 }

启动状态上报

终端用户支付成功,本地成启动设备并通知服务器当前设备的启动状态。

当前接口是必须实现的功能接口,启动状态(成功/失败)作为退款依据!

方法名称:MsgProducer.eqStartResult(EqStartResultParam param)。

详细参数说明如下:

参数名称 参数说明
isSuccess 表示设备启动成功或者失败
uniqueCode 用户支付结果通知中获取到的 k
channels 启动失败,退款仓位列表:仓位,数量,金额。

代码示例如下:

public static boolean eqStartResult(String key) {  
  System.out.println("设备启动失败上传...");  
  EqStartResultParam param = new EqStartResultParam();  
  param.setUniqueCode(key);  
  param.setIsSuccess(false);

// 退款金额
List<String> strs = new ArrayList<String>();
strs.add("3,1,5");
strs.add("2,1,4");

param.setChannels(strs);
MsgProducer.eqStartResult(param);
return true;
}

设备上报结果返回处理:

重写handler子类的eqStartResultReHandler方法,代码示例如下:

 /**  
  * 设备启动结果上传 结果返回  
  * 
  * @param responseParam  
  *@return  
 **/  
 @Override  
 protected boolean eqStartResultReHandler(ResponseParam responseParam) {  
  System.out.println(String.format("get 设备启动结果上传返回结果为:%s", gson.toJson(responseParam)));  
 return true;  
 }

开发指南

数据帧格式

帧格式图

832df2472c87452e9d9c7323c3e3d341.png

格式说明

起始字节 名称 定义 数据类型 备注
0 Head(帧头) 固定为0xAA BYTE
1 Length(长度) Index + CMD +Data + Check 数据总长 BYTE
2 Index (索引) 主机:0x01 终端:0x02 BYTE 标识消息发出方 售货机主板为02
3 CMD(命令) 表明数据帧的类型 BYTE
4 Data(数据) 数据区 BYTE[n] (n<200) 数据区长度可以为0
4+n Check(校验) 校验范围:Length+ Index+ CMD+ Data BYTE 异或校验
5+n End(帧尾) 固定为0xDD BYTE

协议基础

通信配置

通信接口:串口(RS485/RS232/TTL)

波特率:38400

停止位:1位

数据位:8位

校验位:0位

数据类型

数据类型 描述
BYTE 无符号单字节整型(字节,8位)
WORD 无符号双字节整型(双字节,16位)
DWORD 无符号四字节整型(四字节,32位)
BYTE[n] N字节

传输规则

协议采用小端模式(little-endian)的网络字节序来传递字和双字。

约定如下:

——字节(BYTE)的传输约定:按照字节流的方式传输;

——字(WORD)的传输约定:先传递低八位,再传递高八位;

——双字(DWORD)的传输约定:先传递低八位,然后传递高八位,再传递高16位,

最后传递高24位。

通信机制

主机查询方式

主机按照一定的时间间隔向终端发送数据帧,终端接收到数据帧后返回应答帧,终端不主动上传数据,若主机在规定时间内未接受到规定的数据帧的应答数据帧,则重发数据帧直到终端返回应答数据帧。

正常通信时序:

654bb817a1334f979b0803416c5746f4.png

异常通信时序:

fe791bdf1ccf444cb996762c0b0a7109.png

终端上传数据帧方式

正常通信时序:

243d45a61d984d6d8545d7967edec4cf.png

异常通信时序:

5b599ca44f654b93bf138e7aef91cb30.png

功能与指令

功能指令文档简介

进行福袋机/零售机串口协议对接之前,您需要先了解娃娃机的串口功能指令。

功能指令 参考文档
设备登录 查看设备登录指令文档
终端参数 查看终端参数指令文档
有屏售货机主扫支付 查看有屏售货机主扫支付指令文档
有屏售货机反扫支付 查看有屏售货机反扫支付指令文档
无屏售货机支付 查看无屏售货机支付指令文档
远程上分 查看远程上分指令文档
上传账面增量 查看上传账面增量指令文档
查询网络信号 查看查询网络信号指令文档
扩展指令 查看查看扩展指令文档
设备登录

登录流程

1e275071f1f5472d86eb77afeb8e0b50.png

指令说明——查询链接状态

支付盒子 -------------> 售货机主板

起始字节 名称 数据类型 描述 备注
0 Head(帧头) BYTE 0xAA
1 Length(长度) BYTE 0x0B
2 Index (索引) BYTE 0x01 标识盒子主机
3 CMD(命令) BYTE 0x01 查询链接状态
4 Data(数据) BYTE[8] 8位设备唯一码
12 Check(校验) BYTE 异或校验码 校验范围:Length+ Index+ CMD+ Data
13 End(帧尾) BYTE 0xDD

售货机主板 ------------->支付盒子

起始字节 名称 数据类型 描述 备注
0 Head(帧头) BYTE 0xAA
1 Length(长度) BYTE 0x05
2 Index (索引) BYTE 0x02 标识售货机主板
3 CMD(命令) BYTE 0x01 查询链接状态
4 Data(数据) WORD 登录标识 小端模式传输
6 Check(校验) BYTE 异或校验码 校验范围:Length+ Index+ CMD+ Data
7 End(帧尾) BYTE 0xDD

指令说明——同步本地通道信息

售货机主板 ------------->支付盒子

起始字节 名称 数据类型 描述 备注
0 Head(帧头) BYTE 0xAA
1 Length(长度) BYTE 0xXX 以实际情况为准
2 Index (索引) BYTE 0x02 标识售货机主板
3 CMD(命令) BYTE 0xC9 售货机特定指令
4 Data(数据) 见表1 见表1
4+n Check(校验) BYTE 异或校验码 校验范围:Length+ Index+ CMD+ Data
14 End(帧尾) BYTE 0xDD

表1支付盒子获取设备状态指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——同步本地通道信息 BYTE 0x02
Data[1-2] 通道总数 WORD 0x0000-0xFFFF;小端模式传输
Data[3-4] 通道序号 WORD 0x0000-0xFFFF;小端模式传输
Data[5-8] 购买价格 DWORD 单位:分;游戏出礼模式下置0
Data[9-12] 游戏价格 DWORD 单位:分;购买出礼模式下置0
Data[13-14] 通道货品数量 WORD 0x0000-0xFFFF;小端模式传输
Data[15-16] 通道货品容量 WORD 0x0000-0xFFFF;小端模式传输
Data[17] 通道名称字段长度 BYTE
Data[18-n] 通道名称 BYTE[n] 支持GB18030,ASCII编码 注意:本字段长度需与Data[17]中数值保持一致

支付盒子 -------------> 售货机主板

起始字节 名称 数据类型 描述 备注
0 Head(帧头) BYTE 0xAA
1 Length(长度) BYTE 0x0C
2 Index (索引) BYTE 0x01 标识盒子主机
3 CMD(命令) BYTE 0xC9 售货机特定指令
4 Data(数据) 见表2 详见表2
13 Check(校验) BYTE 异或校验码 校验范围:Length+ Index+ CMD+ Data
14 End(帧尾) BYTE 0xDD

表2支付盒子获取设备状态指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——获取设备状态 BYTE 0x01
Data[1-6] 支付唯一码 BYTE[6] 每个支付流程的支付唯一码不改变
Data[7-8] 预留 WORD 取值0x00-0xFFFF;小端模式传输

登录标识

登录标识是乐摇摇支付盒子用以识别所对接设备主板身份的标识码,每个产品都有且只有一个(请把登录标识烧录到设备中。当设备激活时,会上报到云端鉴权认证设备参数)。

标识码获取流程

(1)打开乐摇摇后台网站https://open.leyaoyao.com(推荐Chrome浏览器),输入账号密码并登录。若无账号,请先注册开发账号。

(2)登录成功后,即可进入开发者中心。

2ae47381cab54a0d995533d621d4b10b.png

(3)点击创建产品出现弹窗,请按要求完善产品信息。

908ecc04a2a04bfbaf540c0590791732.png

c4b5c8f5875c401785bada15fe4898b3.png

主板信息填写与要求:

1主板名称格式为厂家名称+设备类型,例如:乐摇摇福袋机

2上传的主板原图与接线方式图片参照上方示例,特别注意拍摄清晰保证主板与支付盒子间的接口电路,以便工作人员审核

(4)主板信息提交成功后,乐摇摇硬件工作人员将在3个工作日内对其进行审核,审核结果会同步以短信形势发送到主板厂商预留的手机号码,请注意查收。

(5)待审核通过后,即可在该页面看到该主板对应登录标识。如未通过,请留意申请反馈并与乐摇摇硬件工作人员进一步沟通。

e5aae4a30af94db192f08b481abc57da.png

(6)注意:获取到的登录标识为十进制,通信数据中需转换为16进制,并令低位在前,高位在后,以小端模式传输。如:登录标识为150,则通信中实际需传输的登录标识数据为 0x96 0x00

终端参数

指令说明——查询终端参数

支付盒子 -------------> 售货机主板

起始字节 名称 数据类型 描述 备注
0 Head(帧头) BYTE 0xAA
1 Length(长度) BYTE 0x03
2 Index (索引) BYTE 0x01 标识盒子主机
3 CMD(命令) BYTE 0x05 查询终端参数
- Data(数据) - - 不含数据区
4 Check(校验) BYTE 异或校验码 校验范围:Length+ Index+ CMD+ Data
5 End(帧尾) BYTE 0xDD

**售货机主板 ------------->**支付盒子

起始字节 名称 数据类型 描述 备注
0 Head(帧头) BYTE 0xAA
1 Length(长度) BYTE 0xXX 以自定义情况为准
2 Index (索引) BYTE 0x02 标识售货机主板
3 CMD(命令) BYTE 0x05 查询终端参数
4 Data(数据) BYTE[n] 自定义参数项 自定义方法说明见终端参数指令说明
4+n Check(校验) BYTE 异或校验码 校验范围:Length+ Index+ CMD+ Data
5+n End(帧尾) BYTE 0xDD

指令说明——设置终端参数

支付盒子 -------------> 售货机主板

起始字节 名称 数据类型 描述 备注
0 Head(帧头) BYTE 0xAA
1 Length(长度) BYTE 0xXX 以自定义情况为准
2 Index (索引) BYTE 0x01 标识盒子主机
3 CMD(命令) BYTE 0x15 设置终端参数
4 Data(数据) BYTE[n] 自定义参数项 自定义方法说明见终端参数指令说明
4+n Check(校验) BYTE 异或校验码 校验范围:Length+ Index+ CMD+ Data
5+n End(帧尾) BYTE 0xDD

售货机主板 ------------->支付盒子

起始字节 名称 数据类型 描述 备注
0 Head(帧头) BYTE 0xAA
1 Length(长度) BYTE 0xXX 视自定义情况
2 Index (索引) BYTE 0x02 标识售货机主板
3 CMD(命令) BYTE 0x15 设置终端参数
4 Data(数据) BYTE 参数设置结果 0x00:设置失败 0x01:设置成功
5 Check(校验) BYTE 异或校验码 校验范围:Length+ Index+ CMD+ Data
6 End(帧尾) BYTE 0xDD

自定义终端参数项

(1)打开乐摇摇后台网站https://open.leyaoyao.com(推荐Chrome浏览器),输入账号密码并登录开发者中心。若无账号,请先注册开发账号。

(2)在智能化产品列表中,找到需要进行自定义参数项的主板,点击“编辑”。若找不到该主板,请参照登录标识中的说明,添加需要对接的主板。

e5aae4a30af94db192f08b481abc57da.png

(3)进入主板参数配置页面,参数配置由3部分组成,包括基础参数、终端参数、故障参数。参数配置是对产品功能的抽象表示,可以通过不同功能类型定义。目前平台提供:布尔型、数值型、枚举型、故障型这四种参数类型。详情设置说明见参数配置

5734aa2340b945e894c35100265d7466.png

(4)界面预览

配置完成后,点击写一步,系统根据你配置的参数,自动生成设备参数管理界面,通过微信扫码二维码即可查看。确定功能、界面是否符合,若符合点击下一步即可,若不符合,返回参数配置界面调整。

5bd25fc8c10a4526b620407d08fe643d.png

(5)参数配置以及开发完成后,需要发布主板参数才完成入库对接。发布后,终端参数功能会显示在乐摇摇设备管理系统-设备管理模块中。

5aea59eca0664b70a6765c4bfdced908.png

abb6270dc4e142cca9ac418ab1e3464c.jpg

(6)当主板参数状态变为已发布后,即可进行对应的调试工作。若在此后修改参数项,需在修改完成后再次点击同步更新。

(7)发布后请厂商务必做好主板调试,主板调试完成,发布前请联系乐摇摇对接人员

有屏售货机反扫支付

支付流程

8b3c99fdaa1f4145b32c535395f91933.jpg

指令综述

有屏售货机反扫支付功能中所用指令属于售货机特定指令集,其CMD皆为0xC9,通过对数据区进行定制实现不同命令,利用其首位的子命令标识码区分,详情见下。其中,大部分指令已在3.3中说明,不再赘述。

通用框架

支付盒子 -------------> 售货机主板

起始字节 名称 数据类型 描述 备注
0 Head(帧头) BYTE 0xAA
1 Length(长度) BYTE 0xXX 以实际情况为准
2 Index (索引) BYTE 0x01 标识盒子主机
3 CMD(命令) BYTE 0xC9 售货机特定指令
4 Data(数据) 详见后文 详见后文
13 Check(校验) BYTE 异或校验码 校验范围:Length+ Index+ CMD+ Data
14 End(帧尾) BYTE 0xDD

售货机主板 ------------->支付盒子

起始字节 名称 数据类型 描述 备注
0 Head(帧头) BYTE 0xAA
1 Length(长度) BYTE 0xXX 以实际情况为准
2 Index (索引) BYTE 0x02 标识售货机主板
3 CMD(命令) BYTE 0xC9 售货机特定指令
4 Data(数据) 详见后文 详见后文
13 Check(校验) BYTE 异或校验码 校验范围:Length+ Index+ CMD+ Data
14 End(帧尾) BYTE 0xDD

上传扣款金额(反扫设备)

售货机主板 ------------->支付盒子上传扣款金额指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——上传扣款金额 BYTE 0x0B
Data[1-6] 随机数 BYTE[6]
Data[7-10] 本次支付总金额 DWORD 单位:分 0x0000表示支付失败

支付盒子 -------------> 售货机主板 上传扣款金额应答指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——上传扣款金额 BYTE 0x0B
Data[1-6] 随机数 BYTE[6]
无屏售货机支付

支付流程

196ebbccd4d24d4abb3da5a873ab1f88.jpg

指令综述

有屏售货机反扫支付功能中所用指令属于售货机特定指令集,其CMD皆为0xC9,通过对数据区进行定制实现不同命令,利用其首位的子命令标识码区分,详情见下。

通用框架

支付盒子 -------------> 售货机主板

起始字节 名称 数据类型 描述 备注
0 Head(帧头) BYTE 0xAA
1 Length(长度) BYTE 0xXX 以实际情况为准
2 Index (索引) BYTE 0x01 标识盒子主机
3 CMD(命令) BYTE 0xC9 售货机特定指令
4 Data(数据) 详见后文 详见后文
13 Check(校验) BYTE 异或校验码 校验范围:Length+ Index+ CMD+ Data
14 End(帧尾) BYTE 0xDD

**售货机主板 ------------->支付盒子

起始字节 名称 数据类型 描述 备注
0 Head(帧头) BYTE 0xAA
1 Length(长度) BYTE 0xXX 以实际情况为准
2 Index (索引) BYTE 0x02 标识售货机主板
3 CMD(命令) BYTE 0xC9 售货机特定指令
4 Data(数据) 详见后文 详见后文
13 Check(校验) BYTE 异或校验码 校验范围:Length+ Index+ CMD+ Data
14 End(帧尾) BYTE 0xDD

子设备状态查询

支付盒子 -------------> 售货机主板 子设备状态查询指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——子设备控制 BYTE 0x0E
Data[1-8] 控制板子设备唯一码 BYTE[8] 区分一拖多子控制机地址,若未操作从机则为主机唯一码
Data[9] 控制板命令 ——子设备状态查询 BYTE 0x01

售货机主板 ------------->支付盒子子设备状态查询应答指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——子设备控制 BYTE 0x0E
Data[1-8] 控制板子设备唯一码 BYTE[8] 区分一拖多子控制机地址,若未操作从机则为主机唯一码
Data[9] 控制板命令 ——子设备状态查询 BYTE 0x01
Data[10] 状态 BYTE 0x00:离线 0x01:在线

控制仓位

支付盒子 -------------> 售货机主板 控制仓位指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——子设备控制 BYTE 0x0E
Data[1-8] 控制板子设备唯一码 BYTE[8] 区分一拖多子控制机地址,若未操作从机则为主机唯一码
Data[9] 控制板命令 ——控制仓位 BYTE 0x02
Data[10-15] 指令唯一码 BYTE[6]
Data[16] 控制仓位总数 BYTE
Data[17] 仓位行参数 BYTE 当控制多个仓位时,需在末尾额外添加这些参数,注意与控制仓位总数对应
Data[18] 仓位列参数 BYTE
Data[19-20] 仓位控制次数 WORD

售货机主板 ------------->支付盒子控制仓位应答指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——子设备控制 BYTE 0x0E
Data[1-8] 控制板子设备唯一码 BYTE[8] 区分一拖多子控制机地址,若未操作从机则为主机唯一码
Data[9] 控制板命 ——控制仓位 BYTE 0x02
Data[10-15] 指令唯一码 BYTE[6]
Data[16] 执行结果 BYTE 0x00:执行成功 0x01:执行失败

控制板出货上传

售货机主板 ------------->支付盒子 控制板出货上传指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——子设备控制 BYTE 0x0E
Data[1-8] 控制板子设备唯一码 BYTE[8] 区分一拖多子控制机地址,若未操作从机则为主机唯一码
Data[9] 控制板命令 ——控制板出货上传 BYTE 0x03
Data[10-15] 指令唯一码 BYTE[6]
Data[16] 仓位行参数 BYTE
Data[17] 仓位列参数 BYTE
Data[18] 出货结果 BYTE 0x00:出货成功 0x01:出货失败

支付盒子 -------------> 售货机主板 控制板出货上传应答指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——子设备控制 BYTE 0x0E
Data[1-8] 控制板子设备唯一码 BYTE[8] 区分一拖多子控制机地址,若未操作从机则为主机唯一码
Data[9] 控制板命令 ——控制板出货上传 BYTE 0x03
Data[10-15] 指令唯一码 BYTE[6] 与控制仓下发码保持一致
远程上分

功能说明

本功能用以实现由商户直接控制售货机出货,日常交易中不会涉及。

指令说明——远程上分

支付盒子 -------------> 售货机主板 远程上分指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——远程上分 BYTE 0x0D
Data[1-6] 订单号 BYTE[6]
Data[7-8] 通道号 WORD 小端模式传输
Data[9] 上分模式 BYTE 0x00:游戏启动 0x01:商品出货

售货机主板 ------------->支付盒子远程上分应答指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——远程上分 BYTE 0x0D
Data[1-6] 订单号 BYTE[6]
上传账目增量

功能说明

1此功能不可去除,后台关于售货机的收益、出礼等各项经营统计,皆基于本指令中数据完成。

2其中,故障代码可根据厂商需求,在乐摇摇后台网站https://open.leyaoyao.com(推荐Chrome浏览器打开)中的主板参数配置(参考设置终端参数)页面中最下方一栏自行定义。

创建故障参数

1点击添加,然后根据实际需求填写故障情况

5474cd2ba1d24879aac0746bdc5916f4.png

2编写完成提交后,点击同步主板参数,即可进行调试。

5aea59eca0664b70a6765c4bfdced908.png

3福袋机(售货机、礼品机)主板上报故障代码后,可以在乐摇摇手机后台的消息通知中接收到对应的故障信息,如下图所示

112744ec23c142c789b10b80ff6cad52.png

指令说明——终端主动上传账目增量

售货机主板 ------------->支付盒子

起始字节 名称 数据类型 描述 备注
0 Head(帧头) BYTE 0xAA
1 Length(长度) BYTE 0x0A
2 Index (索引) BYTE 0x02 标识售货机主板
3 CMD(命令) BYTE 0x13 终端主动上传账目增量
4 Data(数据) 见表3 详见表3
11 Check(校验) BYTE 异或校验码 校验范围:Length+ Index+ CMD+ Data
12 End(帧尾) BYTE 0xDD

表3终端主动上传账目增量指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 自增码 BYTE 避免数据重复处理,新发送的上分数据自增码增加,重发的数据帧自增码不变。 自增码到达0xFF后置0,建议默认0x10
Data[1] 故障代码 BYTE 设备故障码(定制方法见上传账目增量-功能说明)
Data[2] 投币增量 BYTE 设备一段时间投币的增量
Data[3] 退礼增量 BYTE 设备一段时间退礼的增量
Data[4] 营收增量 BYTE 设备一段时间营收的增量
Data[5-6] 预留字节 WORD

支付盒子 ------------->售货机主板

起始字节 名称 数据类型 描述 备注
0 Head(帧头) BYTE 0xAA
1 Length(长度) BYTE 0x03
2 Index (索引) BYTE 0x01 标识盒子主机
3 CMD(命令) BYTE 0x13 终端主动上传账目增量
- Data(数据) - - 数据区无数据
4 Check(校验) BYTE 异或校验码 校验范围:Length+ Index+ CMD+ Data
5 End(帧尾) BYTE 0xDD
查询网络信号

功能说明

此功能可以使售货机主板主动获取到支付盒子当前的网络状态。需要注意,在开机约10分钟后,才可以正常获取到支付盒子的信号值。

指令说明——查询支付盒子网络状态

**售货机****主板 ------------->**支付盒子

起始字节 名称 数据类型 描述 备注
0 Head(帧头) BYTE 0xAA
1 Length(长度) BYTE 0x03
2 Index (索引) BYTE 0x02 标识售货机主板
3 CMD(命令) BYTE 0x19 查询支付盒子网络状态
- Data(数据) - - 不含数据区
4 Check(校验) BYTE 异或校验码 校验范围:Length+ Index+ CMD+ Data
5 End(帧尾) BYTE 0xDD

支付盒子 ------------->售货机主板

起始字节 名称 数据类型 描述 备注
0 Head(帧头) BYTE 0xAA
1 Length(长度) BYTE 0x03
2 Index (索引) BYTE 0x01 标识盒子主机
3 CMD(命令) BYTE 0x19 查询支付盒子网络状态
4 Data(数据) 见表4 详见表4
6 Check(校验) BYTE 异或校验码 校验范围:Length+ Index+ CMD+ Data
7 End(帧尾) BYTE 0xDD

表4查询支付盒子网络状态指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 信号值 BYTE 0-31种级别 数字越大,信号越强
Data[1] 链接服务器状态 BYTE 0x00:在线 0x01:离线
扩展指令

功能说明

厂商可通过此功能根据自身需求定义扩展指令,如清空当前局数,恢复出厂设置等功能。

在乐摇摇后台网站https://open.leyaoyao.com(推荐Chrome浏览器打开)中的主板参数配置(参考终端参数)页面中,新增终端操作。

5e8f637eb3814c2c9107ece3db7c6990.png

根据实际情况填写各项内容。若设置功能不含参,则该指令固定不含数据区;若设置功能含参,则需进一步设置子参数,具体可参考自定义终端参数项。设置中的功能码对应数据帧中的CMD项,数值范围0x30-0xC8(48-200)。

设置完成后,功能会显示在乐摇摇设备管理系统-设备管理模块中,右图4

abb6270dc4e142cca9ac418ab1e3464c.jpg

指令说明——扩展指令

支付盒子 ------------->售货机主板

起始字节 名称 数据类型 描述 备注
0 Head(帧头) BYTE 0xAA
1 Length(长度) BYTE 0xXX 以自定义情况为准
2 Index (索引) BYTE 0x01 标识盒子主机
3 CMD(命令) BYTE 0xXX 自定义指令
4 Data(数据) BYTE[n] 自定义参数项 自定义方法说明见扩展指令-功能说明
4+n Check(校验) BYTE 异或校验码 校验范围:Length+ Index+ CMD+ Data
5+n End(帧尾) BYTE 0xDD

售货机主板 ------------->支付盒子

起始字节 名称 数据类型 描述 备注
0 Head(帧头) BYTE 0xAA
1 Length(长度) BYTE 0xXX 以自定义情况为准
2 Index (索引) BYTE 0x02 标识售货机主板
3 CMD(命令) BYTE 0xXX 自定义指令
4 Data(数据) BYTE[n] 自定义参数项 自定义方法说明见扩展指令-功能说明
4+n Check(校验) BYTE 异或校验码 校验范围:Length+ Index+ CMD+ Data
5+n End(帧尾) BYTE 0xDD
有屏售货机主扫支付
指令综述

支付流程

09db99577804474db53a9557fe4d3341.jpg

通用框架

有屏售货机主扫支付功能中所用指令属于售货机特定指令集,其CMD皆为0xC9,通过对数据区进行定制实现不同命令,利用其首位的子命令标识码区分,详情见下

支付盒子 -------------> 售货机主板

起始字节 名称 数据类型 描述 备注
0 Head(帧头) BYTE 0xAA
1 Length(长度) BYTE 0xXX 以实际情况为准
2 Index (索引) BYTE 0x01 标识盒子主机
3 CMD(命令) BYTE 0xC9 售货机特定指令
4 Data(数据) 详见后文 详见后文
13 Check(校验) BYTE 异或校验码 校验范围:Length+ Index+ CMD+ Data
14 End(帧尾) BYTE 0xDD

售货机主板 ------------->支付盒子

起始字节 名称 数据类型 描述 备注
0 Head(帧头) BYTE 0xAA
1 Length(长度) BYTE 0xXX 以实际情况为准
2 Index (索引) BYTE 0x02 标识售货机主板
3 CMD(命令) BYTE 0xC9 售货机特定指令
4 Data(数据) 详见后文 详见后文
13 Check(校验) BYTE 异或校验码 校验范围:Length+ Index+ CMD+ Data
14 End(帧尾) BYTE 0xDD
获取二维码支付链接(主扫设备)

售货机主板 ------------->支付盒子获取二维码支付链接指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——获取二维码支付链接 BYTE 0x0A
Data[1-6] 支付唯一码 BYTE[6] 每个支付流程的支付唯一码不改变 若线下启动则随机产生唯一码
Data[7-10] 本次支付总金额 DWORD 单位:分 0x0000表示支付失败

支付盒子 -------------> 售货机主板 获取二维码支付链接应答指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——获取二维码支付链接 BYTE 0x0A
Data[1-n] 二维码链接数据 BYTE[n] 通用格式:http://m.leyaoyao.com/lyy/t/<设备号>
获取设备状态

支付盒子 -------------> 售货机主板 获取设备状态指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令——获取设备状态 BYTE 0x01
Data[1-6] 支付唯一码 BYTE[6] 每个支付流程的支付唯一码不改变
Data[7-8] 预留 WORD 0x0000-0xFFFF;小端模式传输

售货机主板 ------------->支付盒子 获取设备状态应答指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令——获取设备状态 BYTE 0x01
Data[1-6] 支付唯一码 BYTE[6] 每个支付流程的支付唯一码不改变
Data[7] 设备状态 BYTE 0x00:空闲状态 0x01:支付状态(显示二维码后进入此状态) 0x02:故障状态 0x03:游戏状态 0x04:其他状态
Data[8] 预留 BYTE
上报上分结果

售货机主板 ------------->支付盒子上报上分结果指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——上报上分结果 BYTE 0x04
Data[1-6] 支付唯一码 BYTE[6] 每个支付流程的支付唯一码不改变
Data[7-10] 支付总金额 DWORD 单位:分 0x0000表示支付失败

支付盒子 -------------> 售货机主板 上报上分结果应答指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——上报上分结果 BYTE 0x04
Data[1-6] 支付唯一码 BYTE[6] 每个支付流程的支付唯一码不改变
Data[7-10] 支付总金额 DWORD 单位:分 0x0000表示支付失败
同步支付结果

支付盒子 -------------> 售货机主板同步支付结果指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——同步支付结果 BYTE 0x03
Data[1-6] 支付唯一码 BYTE[6] 每个支付流程的支付唯一码不改变
Data[7-10] 支付总金额 DWORD 单位:分 数值为0表示支付失败
Data[11] 中奖概率 BYTE 0xFF表示无效
Data[12] 用户ID字段长度 BYTE
Data[13-n] 用户ID BYTE[n] 注意:本字段长度需与Data[12]中数值保持一致

售货机主板 ------------->支付盒子同步支付结果应答指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——同步支付结果 BYTE 0x03
Data[1-6] 支付唯一码 BYTE[6] 每个支付流程的支付唯一码不改变
Data[7-10] 核对金额结果 DWORD 单位:分 0x0000表示支付失败
上报交易结果

上报交易结果——线上支付

售货机主板 ------------->支付盒子上报交易结果(线上支付)指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——上报交易结果(线下支付) BYTE 0x09
Data[1-6] 支付唯一码 BYTE[6] 每个支付流程的支付唯一码不改变
Data[7-10] 本次支付总金额 DWORD 单位:分 0x0000表示支付失败
Data[11-14] 退款总金额 DWORD
Data[15-16] 出礼品通道个数 WORD 未出礼仍需上报,但此项置0
Data[17-18] 出礼品通道序号 WORD 未出礼则上报所选通道序号
Data[19-20] 购买礼品数量 WORD
Data[21-22] 出礼品数量 WORD 未出礼仍需上报,但此项置0
Data[23-26] 累计出礼品数量 DWORD
Data[27-30] 购买价格 DWORD 单位:分 通过游戏出礼时此项置0
Data[31-34] 游戏价格 DWORD 单位:分 通过购买出礼时此项置0

支付盒子 -------------> 售货机主板 上报交易结果(线上支付)应答指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——上报上分结果 BYTE 0x09
Data[1-6] 支付唯一码 BYTE[6] 每个支付流程的支付唯一码不改变

上报交易结果——线下支付

售货机主板 ------------->支付盒子上报交易结果(线下支付)指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——上报交易结果(线下支付) BYTE 0x06
Data[1-6] 预留 BYTE[6] 填充随机数
Data[7-10] 本次支付总金额 DWORD 单位:分 0x0000表示支付失败
Data[11-12] 出礼品通道个数 WORD 未出礼仍需上报,但此项置0
Data[13-14] 出礼品通道序号 WORD
Data[15-16] 出礼品数量 WORD 未出礼仍需上报,但此项置0
Data[17-20] 累计出礼品数量 DWORD
Data[21-24] 购买价格 DWORD 单位:分 通过游戏出礼时此项置0
Data[25-28] 游戏价格 DWORD 单位:分 通过购买出礼时此项置0
Data[29-32] 此通道支付累计金额 DWORD 单位:分

支付盒子 -------------> 售货机主板 上报交易结果(线下支付)应答指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——上报上分结果 BYTE 0x06
Data[1-6] 预留 BYTE[6]
同步本地通道信息

支付盒子 -------------> 售货机主板 同步本地通道信息指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——同步本地通道信息 BYTE 0x08
Data[1-2] 通道总数 WORD 小端模式传输
Data[3-4] 通道序号 WORD 小端模式传输
Data[5-8] 购买价格 DWORD 单位:分;小端模式传输
Data[9-12] 游戏价格 DWORD 单位:分;小端模式传输
Data[13-14] 通道货品数量 WORD 小端模式传输
Data[15-16] 通道货品容量 WORD 小端模式传输
Data[17] 通道名称字段长度 BTYE 单位:分
Data[18-n] 通道名称 BYTE[n] 支持GB18030,ASCII编码 注意:本字段长度需与Data[17]中数值保持一致

售货机主板 ------------->支付盒子 同步本地通道信息应答指令数据区说明

数据字段 名称 数据类型 备注
Data[0] 子命令 ——同步本地通道信息 BYTE 0x08
Data[1-2] 通道总数 WORD 小端模式传输
Data[3-4] 通道序号 WORD 小端模式传输

已有账号,立即登录