一、连接
连接id 和用户名为设备imei号
二、主题订阅
设备订阅主题为 topic/vending/client/{imei} imei:设备号
订单下发
设备端需保存多个订单信息(待出货、未同步的订单信息。服务端可能会出现上一个或未执行完执行下个订单的情况),接受到订单信息判断是否已经保存, 未保存是新订单。设置订单的状态,新建->已回复-出货->出货结果同步->同步成功。下发出货结果同步后订单才算结束,进行下个订单
消息主体:{ “action”: “vending.out.goods”,
“data”: {
“tradeNo”:”4200001216202108191214389609”,
“payTime”:”2021-08-19 09:43:58”,
“id”:”608698250414391831629337426006”,
“amount”:1,
“imei”:”869825041439183”,
“cellNo”:”1”,
“price”:1
}
}
action: 消息操作类型 vending.out.goods 执行出货
id: 订单号
payTime: 订单支付时间
amount: 订单金额 单位:分
cellNo: 货道号
- 订单回复
设备收到出货指令后,出货前立即(其他任务暂停)回复服务器,表示设备收到订单
消息主体:{
action: “vending.out.received“,
id: “订单id”
}
- 出货结果上报
消息主题:{
cellStatus: 0, // 货道状态 1:故障 0:正常
statusCode: ‘10000’, // 出货结果码
id: '608698250414391831629337426006', // 订单号
action: 'vending.out.result', // vending.out.result 订单结果通知
outTimes: 2593, // 出货耗时 单位 ms
outStatus: 1 // 出货结果 0:失败 1:成功
}
outStatus 出货结果不表示货道故障或正常,有光栅的可能出现货道正常出货失败、货道故障出货成功
outTimes 出货耗时需根据驱动板返回信息计算得出
statusCode 前三位表示电机状态:
100:电机出货正常 101:电机断线 102:电机过流 103:电机超时后2位表示光栅状态:
00:无光栅正常
01:光栅检测到出货 02:光栅故障 03:光栅未检测到出货 04:升降机故障 05:防盗版故障 06:取货门关不上其他状态码:
10500:驱动板通信故障 10501:驱动板通信故障,启动失败 10502:驱动板通信故障,查询结果超时消息主体:{
network: 1, // 网络类型 1:wifi 2:gprs 默认2
action: ‘vending.connect.info’, // vending.connect.info 设备信息上报
version: ‘1.0.0’, // 设备软件版本
connect: 1, // 串口通信状态 0:未连接 1:正常
signal: 30, // 设备信号值 0~32
cardNo: ‘’89860469101981164089”, // 流量卡号
temp: 0, // 设备温度 默认0
hardware: 1, // 设备平台信息 1:单片机 2:android
expand: 0, // 拓展板数量
pattern:0, // 光栅状态 0 未知 1:正常 2:故障
light:[ “00:00”, “00:00”], // 灯条开启、关闭时间 时:分 第一个开启时间 第二个关闭时间
}
三、设备信息更新
设备连接、重新连接后通知服务器获取设备信息, 以及空闲时间定时拉取 每隔1小时拉取一次
设备信息主体:{
action: 'vending.cell.pull', // vending.cell.pull 货道拉取
}
服务器返回:{
action: 'vending.cell.update', // vending.cell.update 设备信息更新
time: “20210821121210”, // 系统当前时间 2021-08-21 12:12:10
light:[ “00:00”, “00:00”], // 灯条开启、关闭时间 时:分 第一个开启时间 第二个关闭时间
}
四、支付二维码获取
设备选择货道, 货道可购买时请求服务器获取支付二维码,二维码分为支付宝、微信。设备端生成二维码唯一标识,根据返回标识判断返回的二维码是否是当前请求的二维码,若不一致或未收到回复提示用户重新操作。二维码获取超时时间设为3s,3s后未收到回复设备才可进行操作。
设备信息主体:{
action: 'vending.cell.sell', // vending.cell.sell 获取支付二维码
cellNo:1, // 货道号
payType: 1, // 支付方式 1:微信 2:支付宝
id: “”, // 二维码获取唯一标识
}
服务器返回:{
action: 'vending.sell.qrcode', // vending.sell.qrcode
qrcode: “二维码地址”, // 支付二维码
id: “”, // 二维码唯一标识
time: “20210821121210”, // 系统当前时间 2021-08-21 12:12:10
}
五、出货测试
测试信息主体:{
action: 'vending.setting.test', //vending.setting.test 出货测试
“data”:{
“imei”:”865242054073251”,
“value”:1,// 货道号 货道号为0 表示一键测试
“id”:1723713766394// 测试唯一标识
}
}
接受返回:{
action: 'vending.setting.<font style="color:#6a8759;">received</font>', // vending.cell.test.<font style="color:#6a8759;">received </font>接受返回
id: 1607777777, // 测试唯一标识
}
// 暂不对接结果返回
结果返回:{
action: 'vending.setting.test.result', // vending.cell.test.result 出货测试结果
id: 1607777777, // 测试唯一标识
outCode:10000, // 出货结果code 和订单状态码类似
outTime: 10000, // 出货耗时 ms
}
六、温度设置
信息主体:{
action: 'vending.setting.temp', // vending.setting.temp 温度设置 vending.setting.back 进入后台设置
value:1, // 温度值
id: 1607777777777, // 唯一标识
}
结果返回:{
action: 'vending.setting.<font style="color:#6a8759;">received</font>', // vending.setting.<font style="color:#6a8759;">received</font> 温度设置返回
id: 1607777777777, // 唯一标识
}