查看“安卓型自动销售设备通讯协议”的源代码
←
安卓型自动销售设备通讯协议
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
== 描述 == === 规约 === 本文档所述的协议是用于东骏科技有限公司物联网服务平台和安卓型自动销售设备的数据交互。 === 客服(技术)联系方式 === 杭州东骏科技有限公司 电话:0571-87017551 手机:18657108036 === 兼容性 === 仅适用于授权设备。 === 缩略语 === * PDU(Protocol Data Unit) 协议数据单元 * ADU(Application Data Unit) 应用数据单元 * IOTCU(IOT Control Unit) 物联网控制单元 * IOT(internet of things) 物联网 * MB(Main Board) 本文特指售货机主板 * IPC(Industrial Personal Computer) 本文特指安卓工控机 * Server 本文特指东骏波塞冬物联网平台 == 通讯协议 == 本章节内容定义通讯模块和服务器之间的通讯协议 === 通讯方式 === * 数据上报:String * 指令数据:定长报文 * 通讯网络协议:TCP === 协议框架 === ==== 命令结构 ==== 定义:服务器发送,通讯模块接收的数据报文。 {| class="wikitable" |- |①|| ② || ③ || ④ || ⑤ || ⑥ || ⑦ |} ①开始标识(1byte)“_”<br> ②报文长度(3byte)(ASCII数字)<br> ③命令(3byte)(英文大写,第一字节A未保留字段)<br> ④会话ID(6byte)(第一字节0x00-0x3D之间数字+迁移量0x31)<br> ⑤分隔符(1byte)“/”<br> ⑥参数(如果没有则没有该部分)<br> ⑦结束标识(2byte)(0x0D 0x0A) ==== 响应结构 ==== 定义:通讯模块发送,服务器接收的报文 {| class="wikitable" |- |①|| ② || ③ || ④ || ⑤ || ⑥ || ⑦ |} ①开始标识(1byte)“_”<br> ②响应类型(2byte) PG-ping,DV-设备号(IMEI),ID-SIM卡ICCID号,CM-客户端命令,RP-数据上报,RS-命令响应, RJ-Json数据上报<br> ③命令(3byte)(大写英文,回传服务器请求的命令,如果没有服务器请求则为AAA)<br> ④会话ID(6byte)(无服务器会话ID则返回”000000”)<br> ⑤内容长度(3byte)(ASCII数字)的长度<br> ⑥内容(内容长度可以为空)<br> ⑦结束标识(2byte)(0x0D 0x0A) ==== 命令限制 ==== # ADV(设备号IMEI号) AID(SIM卡ICCID号) AXT(心跳) AAA(空指令) 为系统内置命令不能用于其他接口 # 业务级别的接口命令不得用 A 开头 === 业务协议 === ==== 下发设备二维码 ==== {| class="wikitable" |- | 发送方 || Server |- | 说明 || 消费者可通过扫描该链接的生成的二维码进行购买。补货人员可通过扫描该链接生成的二维码进行补货。 |- | 开始标识(1byte) || _ |- | 报文长度(3byte) || 不定长 |- | 命令(3byte) || BAF |- | 会话ID(6byte) || 服务器生成 |- | 分隔符(1byte) || / |- | 参数 || 格式: <nowiki> https://qa-wechart.poseidong.com/web-wechart/wechart/combo/choose?deviceNo=865501040780034 </nowiki> |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例: _106 BAF XAzu57 / <nowiki>https://qa-wechart.poseidong.com/web-wechart/wechart/combo/choose?deviceNo=865501040780034</nowiki> \r\n ==== 设备获取图片广告 ==== {| class="wikitable" |- | 发送方 || IPC |- | 说明 || 设备向平台请求平台上设置的关联设备的广告信息。 |- | 开始标识(1byte) || _ |- | 响应类型(2byte) || RP |- | 命令(3byte) || UAF |- | 会话ID(6byte) || A60022 |- | 内容长度(3byte) || 不定长 |- | 内容(1byte) || 1 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例: _ RP UAF A60022 001 1 \r\n ==== 平台图片广告下发 ==== {| class="wikitable" |- | 发送方 || Server |- | 说明 || 服务器下发广告信息。 |- | 开始标识(1byte) || _ |- | 报文长度(3byte) || 不定长 |- | 命令(3byte) || SAF |- | 会话ID(6byte) || 服务器生成 |- | 分隔符(1byte) || / |- | 参数 || 格式: 标志位#/#image1#/#image2#/#image3 说明 标志位:F-删除原有图片,采用默认图片 S-更新图片信息。 image1、image2、image3:平台图片url。 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} _106 BAF XAzu57 / S#/#image1#/#image2#/#image3 \r\n ==== 批量下发商品信息 ==== {| class="wikitable" |- | 发送方 || 服务器 |- | 说明 || 服务器将派样商品的条码下发给设备 |- | 开始标识 (1byte) || _ |- | 报文长度 (3byte) || 不定长 |- | 命令 (3byte) || BAE |- | 会话ID (6byte) || 服务器生成 |- | 分隔符 (1byte) || / |- | 内容 ||JSON对象: {"products":[{"ch":"货道号","bar":"商品条码","qty":库存数,"price":商品售价,"status":货道状态,"name":"商品名称","pic":"图片的路径","tmallProduct":"是否天猫派样商品","remark":"描述","adUrl":"线上商城二维码"}]}<br> 说明:<br> 货道号:字符串,货道的编号。<br> 商品条码:字符串,设备中存储的商品条码。<br> 库存数:整数,apk中当前的货道库存。<br> 商品售价:整数,apk中存储的商品售价,以分为单位。<br> 货道状态:整数枚举,0-正常,1-货空,2-未启用,3-不存在,4-故障。<br> 商品名称: 字符串,商品的名称。<br> 图片的路径:字符串,安卓工控主板用来向HTTP服务器索取图片的路径<br> 是否天猫派样商品:字符串,Y-是天猫派样商品,N|无该属性-非天猫派样商品<br> 线上商城二维码:图片路径 |- | 结束标识(2byte) || \r \n (0x0D 0x0A) |} ==== 批量下发商品应答 ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 设备收到派样商品后响应结果 |- | 开始标识 (1byte) || _ |- | 响应类型 (2byte) || RS |- | 命令 (3byte) || BAE |- | 会话ID (6byte) || 服务器下发的会话id |- | 内容长度 (3byte) || 不定长 |- | 内容(30Byte)||JSON对象: {”result”:[{“ch”:”货道号”,“status”:更新成功与否,“reason”:错误原因}]}<br> 说明:<br> 货道号:字符串,货道的编号。<br> 更新成功与否:枚举值,0-更新成功,1-更新失败。<br> 错误原因:正数枚举,0-正常,1-库存不合规则,2-货道不存在,3-保存失败,4-图片无法取得 |- | 结束标识(2byte) || \r \n (0x0D 0x0A) |} ==== 格子机设备开柜门 ==== {| class="wikitable" |- | 发送方 || Server |- | 说明 || 用于安卓型格子机开柜门,不需要响应,如果遇到柜门未打开的,进行重试。应用场景:补货人员补货时开柜门。 |- | 开始标识 (1byte) || _ |- | 报文长度 (3byte) || 不定长 |- | 命令 (3byte) || SAJ |- | 会话ID (6byte) || 服务器生成 |- | 分隔符 (1byte) || / |- | 内容 ||JSON对象: ["货道号1","货道号2","货道号3"]......<br> 说明:<br> 货道号:字符串,货道的编号。<br> |- | 结束标识(2byte) || \r \n (0x0D 0x0A) |} 示例: 开柜门100和101<br> _023 SAJ XAzu57 / ["100","101"] \r\n ==== 设置每天重启时间 ==== {| class="wikitable" |- | 发送方 || Server |- | 说明 || 服务器设置设备的每天重启时间,目前只支持设置每天的重启时间,单位到分钟。 |- | 开始标识(1byte) || _ |- | 报文长度(3byte) || 不定长 |- | 命令(3byte) || SYA |- | 会话ID(6byte) || 服务器生成 |- | 分隔符(1byte) || / |- | 参数 || 格式: 小时#/#分钟 说明 小时:00-23 分钟:00-59 如果只下发#/#表示需要删除每天重启的时间。 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例: 每天凌晨00:50重启设备 会话id:123456,小时:00,分钟:50 _ 017 SYA 123456 / 00#/#50 \r\n ==== 设置每天重启时间应答 ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 设备收到设置信息后响应结果 |- | 开始标识 (1byte) || _ |- | 响应类型 (2byte) || RS |- | 命令 (3byte) || UYA |- | 会话ID (6byte) || 服务器下发的会话id |- | 内容长度 (3byte) || 不定长 |- | 内容(30Byte)||S 或 F S:成功 F:失败 |- | 结束标识(2byte) || \r \n (0x0D 0x0A) |} 示例: 成功 _ RS UYA 下发的会话id 001 S \r \n ==== 设备请求货道商品信息 ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 设备向服务器获取商品信息,服务器收到后反馈设备二维码和商品货道信息。 |- | 开始标识(1byte) || _ |- | 响应类型(2byte) || RP |- | 命令(3byte) || BAJ |- | 会话ID(6byte) || A60009 |- | 内容长度(3byte) || 不定长 |- | 内容(1byte) || JSON对象:{“chNo”: 货道号,”bar“:条码}<br> 货道号:货道编号<br> 条码:商品条码 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例: _ RP BAJ A60009 001 1 \r\n ==== 设备请求货道商品信息(含优惠码信息) ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 安卓工控机(主板类型:ANDRIOD)和单片机(主板类型:MCU)向服务器获取设备二维码,商品信息和商品优惠码信息。 |- | 开始标识(1byte) || _ |- | 响应类型(2byte) || RP |- | 命令(3byte) || BAK |- | 会话ID(6byte) || A60013 |- | 内容长度(3byte) || 不定长 |- | 内容(1byte) || JSON对象:{“type”: "主板类型"}<br> 主板类型:ANDRIOD或MCU |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例:<br> 如安卓设备:ANDRIOD<br> _ RP BAK A60013 007 ANDRIOD \r\n ==== 设备二维码下发 ==== {| class="wikitable" |- | 发送方 || 服务器 |- | 说明 || 服务器下发设备二维码url,设备需自行将其生成二维码。 |- | 开始标识(1byte) || _ |- | 报文长度(3byte) || 不定长 |- | 命令(3byte) || BAF |- | 会话ID(6byte) || 服务器生成 |- | 分隔符(1byte) || / |- | 参数 || 格式:二维码url |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例: _084 BAF XAzu57 / <nowiki>http://test.poseidong.cn/web-wechart/wechart/combo/choose?deviceNo=12233455677856596</nowiki> \r\n ==== 开关门下发 ==== {| class="wikitable" |- | 发送方 || 服务器 |- | 说明 || 安卓型设备控制继电器开关门 |- | 开始标识(1byte) || _ |- | 报文长度(3byte) || 不定长 |- | 命令(3byte) || BKG |- | 会话ID(6byte) || 服务器生成 |- | 分隔符(1byte) || / |- | 参数 || 格式:继电器号 操作<br> 继电器号:0-所有;1- 1号继电器;2- 2号继电器<br> 操作:1-开,2-关<br> 情况如下:<br> 01:2个继电器同时开<br> 02:2个继电器同时关<br> 11:1号继电器开<br> 12:1号继电器关<br> 21:2号继电器开<br> 22:2号继电器关 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例: 开1号继电器 _002 BKG XAzu57 / 11 \r\n ==== 开关门应答 ==== {| class="wikitable" |- | 发送方 || 服务器 |- | 说明 || 安卓类型设备开关门应答 |- | 开始标识 (1byte) || _ |- | 响应类型 (2byte) || RS |- | 命令 (3byte) || BKG |- | 会话ID (6byte) || 服务器下发的会话id |- | 内容长度 (3byte) || 不定长 |- | 内容(30Byte)|| 1号继电器结果 2号继电器结果<br> 结果:1-成功 0-失败<br> 情况如下:<br> 00:1、2号继电器操作失败<br> 01:1号失败,2号成功<br> 10:1号成功,2号失败<br> 11:1、2号都成功 |- | 结束标识(2byte) || \r \n (0x0D 0x0A) |} 示例: 成功<br> _ RS BKG 下发的会话id 002 11 \r \n ==== 单品下单 ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 设备向平台上报用户选择的商品。 |- | 开始标识(1byte) || _ |- | 响应类型(2byte) || RJ |- | 命令(3byte) || DAB |- | 会话ID(6byte) || A60001 |- | 内容长度(3byte) || 不定长 |- | 内容(1byte) || JSON格式:<br> {“ch”:“货道号”,“bar”:”条码”,“qty”:购买数量,“price”:销售价格,“payMethod”:支付方式}<br> 货道号:字符串,货道的编号<br> 条码:字符串,下单商品的条码<br> 购买数量:整数,商品购买的数量<br> 销售价格:整数,用户所看到的商品价格<br> 支付方式:整数枚举,0-线上支付(因为微信支付宝二维码需要同时显示,所以线上支付方式统一为0),2-钱包支付(米泉不用),3-银联闪付,4-现金,5-RFID充值卡,6-会员卡。 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例:<br> _ RJ DAB A60001 099 {"ch":"123","bar":"1542583208503","qty":1,"price":1,"payMethod":0,"pay":0,"payResult":0,"result":0} \r\n ==== 单品购买二维码下发 ==== {| class="wikitable" |- | 发送方 || 服务器 |- | 说明 || 服务器向设备下发二维码 |- | 开始标识(1byte) || _ |- | 报文长度(3byte) || 不定长 |- | 命令(3byte) || BBF |- | 会话ID(6byte) || 服务器生成 |- | 分隔符(1byte) || / |- | 参数 || JSON格式: {"deviceNo":"设备号",“bill”:”订单号”,"ch":"货道号","bar":"商品条码","qty":数量,“aliqr”:”支付宝二维码链接字符串”,“weixinqr”:微信二维码链接字符串}<br> 说明<br> 设备号:字符串,设备IMEI<br> 订单号:字符串,平台生成的订单号<br> 商品条码:字符串,商品在平台上的编号<br> 数量:整型,购买数量 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例: _ 228 BBF RLuSTO / {"deviceNo":"12233455677856596","bill":"20190520152411061474253","ch":"123","bar":"1542583208503","qty":1,"aliqr":"<nowiki>https://qr.alipay.com/bax019938fuyutv3pk5p8080</nowiki>","weixinqr":"weixin://wxpay/bizpayurl?pr=UgQhKxw"} ==== 单品优惠码下单 ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 用户在设备上选择商品,并输入优惠码,设备上报相关信息到平台。 |- | 开始标识(1byte) || _ |- | 响应类型(2byte) || RJ |- | 命令(3byte) || DAP |- | 会话ID(6byte) || A60012 |- | 内容长度(3byte) || 不定长 |- | 内容(1byte) || JSON格式:<br> {“ch”:“货道号”,“bar”:”条码”,“qty”:购买数量,“price”:销售价格,“payMethod”:支付方式,”dstCode”:优惠码}<br> 货道号:字符串,货道的编号<br> 条码:字符串,下单商品的条码<br> 购买数量:整数,商品购买的数量<br> 销售价格:整数,用户所看到的商品价格<br> 支付方式:整数枚举,0-线上支付(因为微信支付宝二维码需要同时显示,所以线上支付方式统一为0),2-钱包支付(米泉不用),3-银联闪付,4-现金,5-RFID充值卡,6-会员卡。<br> 优惠码:字符串,客户自己输入的获取到的优惠码。 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例:<br> 优惠码:1234567<br> _ RJ DAP A60012 112 {"ch":"123","bar":"1542583208503","qty":1,"price":1,"payMethod":0,"dstCode":"1234567","pay":0,"payResult":0,"result":0} \r\n ==== 单品优惠码购买二维码下发 ==== {| class="wikitable" |- | 发送方 || 服务器 |- | 说明 || 服务器向设备下发优惠码购买二维码 |- | 开始标识(1byte) || _ |- | 报文长度(3byte) || 不定长 |- | 命令(3byte) || BBQ |- | 会话ID(6byte) || 服务器生成 |- | 分隔符(1byte) || / |- | 参数 || JSON格式: {"deviceNo":"设备号",“bill”:”订单号”,"ch":"货道号","bar":"商品条码","qty":数量,"errorCode":"错误码"“aliqr”:”支付宝二维码链接字符串”,“weixinqr”:微信二维码链接字符串}<br> 说明<br> 设备号:字符串,设备IMEI<br> 订单号:字符串,平台生成的订单号<br> 商品条码:字符串,商品在平台上的编号<br> 数量:整型,购买数量<br> 错误码:字符串,0-处理成功;1-获取支付宝失败;2-获取微信失败;3-支付宝微信都失败;4-其他 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例: _ 244 BBQ R5Y3xs / {"deviceNo":"12233455677856596","bill":"20190520152411061579726","ch":"123","bar":"1542583208503","qty":1,"errorCode":"0","aliqr":"<nowiki>https://qr.alipay.com/bax01928iin0o7nlggf66022</nowiki>","weixinqr":"weixin://wxpay/bizpayurl?pr=pbHhWN6"} \r\n ==== 统一付款码订单上报 ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 用户在设备上下单后, 设备上报下单信息给服务器, 服务器生成订单及二维码。 |- | 开始标识(1byte) || _ |- | 响应类型(2byte) || RP |- | 命令(3byte) || UAH |- | 会话ID(6byte) || A60024 |- | 内容长度(3byte) || 不定长 |- | 内容(1byte) || 格式:<br> 唯一码 #/# 货道号 #/# 条码 #/# 数量 #/# 价格 #/# 优惠码 #/# 手机号<br> 说明:<br> #/#为分隔符<br> 唯一码:字符串,用于区分下发二维码对应的上报记录<br> 货道号: 字符串, 与后台设置一致的货道编号<br> 条码: 字符串, 下单商品的条码<br> 数量: 正整数, 下单数量<br> 价格: 正整数, 下单当时的商品单价, 以分为单位<br> 优惠码: 字符串, 可以为空, 为空时前部的分隔符不能省<br> 手机号: 字符串, 可以为空, 为空时前部的分隔符可省略。不为空时,必须与优惠码同时使用,否则会导致字段错位问题。 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例:<br> 唯一码:abc<br> 货道号:123<br> 条码:1542583208503<br> 数量:1<br> 单位:1分<br> 优惠码:1234567<br> 手机号:15311112222<br> _ RP UAH A60024 036 abc#/#123#/#1542583208503#/#1#/#1#/#1234567#/#15311112222 ==== 收钱吧订单上报 ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 用户在设备上下单后, 设备上报下单信息给服务器, 服务器生成订单及二维码。 |- | 开始标识(1byte) || _ |- | 响应类型(2byte) || RP |- | 命令(3byte) || UAH |- | 会话ID(6byte) || A60061 |- | 内容长度(3byte) || 不定长 |- | 内容(1byte) || 格式:<br> 唯一码 #/# 货道号 #/# 条码 #/# 数量 #/# 价格 #/# 优惠码<br> 说明:<br> #/#为分隔符<br> 唯一码:字符串,用于区分下发二维码对应的上报记录<br> 货道号: 字符串, 与后台设置一致的货道编号<br> 条码: 字符串, 下单商品的条码<br> 数量: 正整数, 下单数量<br> 价格: 正整数, 下单当时的商品单价, 以分为单位<br> 优惠码: 字符串, 可以为空, 为空时前部的分隔符不能省 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例:<br> 唯一码:abc<br> 货道号:123<br> 条码:1542583208503<br> 数量:1<br> 单位:1分<br> 优惠码:1234567<br> _ RP UAH A60061 036 abc#/#123#/#1542583208503#/#1#/#1#/#1234567 ==== 统一付款码下发 ==== {| class="wikitable" |- | 发送方 || 服务器 |- | 说明 || 工控机接收到服务器下发的出货指令并确定能够处理时立即返回响应 |- | 开始标识(1byte) || _ |- | 报文长度(3byte) || 不定长 |- | 命令(3byte) || SAH |- | 会话ID(6byte) || 服务器生成 |- | 分隔符(1byte) || / |- | 参数 || 唯一码#/#结果#/#订单号#/#支付二维码地址<br> 说明:<br> <nowiki>#/#</nowiki>为分隔符<br> 结果: <br> 0 – 处理成功, 1 – 二维码错误, 2 – 优惠码错误<br> 方便客户端判断服务器出码处理的结果<br> 订单号: 支付的订单号<br> 支付二维码地址为正常网址, 设备根据该网址生成二维码展示在页面上, 供消费者扫码支付<br> <nowiki>*</nowiki>注意网址中不得带有特殊字符和中文<br> |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例: _ 161 SAH SSbP3y / abc#/#0#/#20190520181827542622500#/#<nowiki>https://rolooc.poseidong.com/web-wechart/mobile/oa/20170818019kLQ6vMkj/ivem/pay/union/20190520181827542622500</nowiki> ==== 下发统一付款码响应 ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 设备收到二维码后响应结果 |- | 开始标识 (1byte) || _ |- | 响应类型 (2byte) || RS |- | 命令 (3byte) || UAH |- | 会话ID (6byte) || 服务器下发的会话id |- | 内容长度 (3byte) || 不定长 |- | 内容(30Byte)||S 或 F S: 成功 F: 失败 |- | 结束标识(2byte) || \r \n (0x0D 0x0A) |} 示例: 成功 _ RS UAH 下发的会话id 001 S \r\n ==== 平台请求出货 ==== {| class="wikitable" |- | 发送方 || 服务器 |- | 说明 || 服务器接收到销售订单并且支付成功后向通讯模块下发出货命令,要求设备出货。 |- | 开始标识(1byte) || _ |- | 报文长度(3byte) || 不定长 |- | 命令(3byte) || ICH |- | 会话ID(6byte) || 服务器生成 |- | 分隔符(1byte) || / |- | 参数 || 格式:<br> 货道号 #/# 出货数量 #/# 订单号 说明<br> <nowiki>#/#</nowiki>为分隔符 货道号: 一定和同步下来的货道号一致<br> 出货数量: 和订单中的下单数量一致, 大于0小于当前库存<br> 订单号: 系统生成订单的唯一标识 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例: 货道110, 出货1个, 订单号12345678901234567890123 _ 049 ICH WZa6HV / 110#/#1#/#12345678901234567890123 \r\n ==== 出货接收响应 ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 设备接收到服务器下发的出货指令并确定能够处理时立即返回响应 |- | 开始标识 (1byte) || _ |- | 响应类型 (2byte) || RS |- | 命令 (3byte) || ICH |- | 会话ID (6byte) || 服务器下发的会话id |- | 内容长度 (3byte) || 不定长 |- | 内容(30Byte)|格式: <br> 响应结果<br> 说明:<br> 结果: S-成功,F-失败 |- | 结束标识(2byte) || \r \n (0x0D 0x0A) |} 示例: 接收成功 _ RS ICH 123456 001 S \r \n ==== 出货结果上报 ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 设备出货完成后,通知服务器出货结果。 |- | 开始标识(1byte) || _ |- | 响应类型(2byte) || RP |- | 命令(3byte) || ICH |- | 会话ID(6byte) || A60010 |- | 内容长度(3byte) || 不定长 |- | 内容(1byte) || 格式: 出货结果 #/# 出货数量 #/# 服务器下发的订单号<br> 说明:<br> <nowiki>#/#</nowiki>分隔符 出货结果: S-全部出货,F-失败,A-部分出货<br> 成功出货数量:成功出货的数量, 出一个累加一个, 范围在0-总出货数量 之间<br> 当出货结果为S时, 此数量=总出货数量<br> 当出货结果为F时, 此数量=0, 一定是没有出货<br> 当出货结果为A时, 此数量>0并且<总出货数量<br> 订单号: 必须和出货指令下发的订单号一致 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例<br> 出货结果: 成功<br> 货道: 110<br> 订单号: 12345678901234567890123<br> _ RP ICH A60010 033 S#/#110#/#12345678901234567890123 \r\n ==== 出货结果上报响应 ==== {| class="wikitable" |- | 发送方 || 服务器 |- | 说明 || 服务器收到出货结果上报后回应设备, 如果没收到回应设备需要重新尝试上报出货结果 |- | 开始标识(1byte) || _ |- | 报文长度(3byte) || 不定长 |- | 命令(3byte) || ICX |- | 会话ID(6byte) || 服务器生成 |- | 分隔符(1byte) || / |- | 参数 || 格式:<br> 订单号#/#反馈结果<br> 说明<br> <nowiki>#/#</nowiki>为分隔符<br> 订单号: 系统生成订单的唯一标识<br> 反馈结果:S - 成功 或者 F - 失败 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例<br> 订单号: 12345678901234567890123<br> 反馈结果: 成功<br> _ 043 ICX 123456 / 12345678901234567890123#/#S \r\n ==== 设备上报GPS信息 ==== {| class="wikitable" |- | 发送方|| 工控机 |- | 说明 || 设备将获取到的当前经纬度信息上报平台,设备启动时主动上报,每隔1小时上报一次。 |- | 开始标识 || _ |- | 响应类型 (2byte) || RP |- | 报文长度(3byte) || 不定长 |- | 命令(3byte) || TNS |- | 会话ID (6byte) || A60031 |- | 内容长度 (3byte) || 001 |- | 内容(1Byte) || 字符串;<br> 数据以':'分割, 纬度:经度 |- | 结束标识 (2byte) || \r \n (0x0D 0x0A) |} ==== 设备请求平台广告计划 ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 设备请求平台广告计划,每个小时请求下一个小时的广告计划。 |- | 开始标识(1byte) || _ |- | 响应类型(2byte) || RP |- | 命令(3byte) || UAO |- | 会话ID(6byte) || A60030 |- | 内容长度(3byte) || 不定长 |- | 内容(1byte) || JSON:[{ "webPage": "homePage", "position": "top", "version": "", "requestDate": 1551173539285 }, { "webPage": "homePage", "position": "left", "version": "112111", "requestDate": 1551173539286 }] 说明:<br> requestDate:Date类型 请求的广告计划时间(下一个小时)<br> webPage:String类型 homepage-首页;productList-商品列表页面;pay-支付页面;paySuccess-支付成功页面;<br> position:String类型 top-上;left-左;mid-中;right-右;bottom-下<br> version: String类型 广告计划版本第一次为空,获取到平台下发的版本后,下次就使用平台下发的版本。 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} ==== 平台广告计划响应 ==== {| class="wikitable" |- | 发送方 || Server |- | 说明 || 响应工控机请求广告计划。 |- | 开始标识(1byte) || _ |- | 报文长度(3byte) || 不定长 |- | 命令(3byte) || SAO |- | 会话ID(6byte) || 服务器生成 |- | 分隔符(1byte) || / |- | 参数 || 格式:JSON <nowiki>{ "deviceNo": "设备号", "adPlanListForPush": [{ "name": "计划名称", "cd": "编号", "webPage": "页面", "position": "在页面上的位置", "lastTime": 停留时长, "intervalPush": "时段", "startTime": 投放开始时间, "endTime": 投放结束时间, "fileType": "广告文件类型", "version": "版本号", "adList": [{ "name": "素材名称", "fileName": "图片名称", "fileType": "文件类型", "httpPath": "文件请求路径", "repo": "存储方式" }, { "name": "素材名称", "fileName": "图片名称"", "fileType": "文件类型", "httpPath": "文件请求路径", "ossKey": "文件osskey", "repo": "存储方式" }], "versionResult": "版本比对结果" }, { "webPage": "页面", "position": "在页面上的位置", "version": "版本号", "versionResult": "版本比对结果" }] }</nowiki> <br> '''说明:'''<br> name 字符串类型 广告计划名称<br> cd 字符串类型 广告计划cd<br> webpage 字符串类型 homePage-首页;productList-商品列表页面;pay-支付页面;paySuccess-支付成功页面;<br> position 字符串类型 top-上;left-左;mid-中;right-右;bottom:下;<br> lastTime 数字类型 广告停留时长<br> intervalPush 字符串类型 时段:0,1,2,……22,23<br> startTIme 日期类型 投放开始时间<br> endTime 日期类型 投放结束时间<br> fileType 字符串类型 广告文件类型:image-图片;video-视频<br> version 字符串 版本号<br> versionResult 字符串 版本比对结果:error-错误;clear-清空;same-版本一致;update-更新<br> adList.name 字符串类型 素材名称<br> adList.filename 字符串类型 图片名称<br> adList.httpPath 字符串类型 请求路径<br> adList.ossKey 字符串类型 文件的ossKey,参看阿里云OSS相关文档<br> adList.repo 字符串类型 存储方式:ftp|oss<br> adList.remark 字符串类型 说明 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} ==== 购物车订单下单 ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 用户通过设备选择多个商品(建议商品总量不超过6个,总类型不超过3种)下单,设备上报服务器并由服务器生成订单。 |- | 开始标识(1byte) || _ |- | 响应类型(2byte) || RJ |- | 命令(3byte) || SAP |- | 会话ID(6byte) || A60028 |- | 内容长度(3byte) || 不定长 |- | 内容(1byte) || JSON格式:<br> {“payMethod”:支付方式,”dstCode”:优惠码,”identify”:识别码,”qrType”:请求二维码类型,”cartList”:[“ch”:货道号,”bar”:条码,”qty”:购买数量,”price”:销售价格]}<br> 说明:<br> 支付方式:整数枚举,0-线上支付(因为微信支付宝二维码需要同时显示,所以线上支付方式统一为0),2-钱包支付(米泉不用),3-银联闪付,4-现金,5-RFID充值卡,6-会员卡。<br> 优惠码:字符串,客户自己输入的优惠码,不能超过13位。<br> 识别码:必填。<br> 请求二维码类型:ONE-一码支付,TWO-支付宝微信两个码。<br> cartList:订单列表<br> 货道号:字符串,货道的编号。<br> 条码:字符串,下单商品的条码。<br> 购买数量:整数,商品购买的数量。<br> 销售价格:整数,用户所看到的商品价格,以分为单位。 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} ==== 购物车订单验证优惠码 ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 发送订单数据验证优惠码是否可用。 |- | 开始标识(1byte) || _ |- | 响应类型(2byte) || RJ |- | 命令(3byte) || SAP |- | 会话ID(6byte) || A60028 |- | 内容长度(3byte) || 不定长 |- | 内容(1byte) || JSON格式:<br> {“dstCode”:优惠码,”identify”:识别码,”cartList”:[“ch”:货道号,”bar”:条码,”qty”:购买数量,”price”:销售价格]}<br> 说明:<br> 优惠码:字符串,客户自己输入的优惠码,不能超过13位。<br> 识别码:必填。<br> cartList:订单列表<br> 货道号:字符串,货道的编号。<br> 条码:字符串,下单商品的条码。<br> 购买数量:整数,商品购买的数量。<br> 销售价格:整数,用户所看到的商品价格,以分为单位。 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} ==== 购物车订单优惠码验证结果下发 ==== {| class="wikitable" |- | 发送方 || Server |- | 说明 || 购物车优惠码信息上报后下发验证结果。 |- | 开始标识(1byte) || _ |- | 报文长度(3byte) || 不定长 |- | 命令(3byte) || SAF |- | 会话ID(6byte) || 服务器生成 |- | 分隔符(1byte) || / |- | 参数 || JSON格式:<br> {“dstCode”:优惠码,”identify”:识别码,”successFlag”:优惠码是否可用,”message”:详情,”amount”:总价,”discountAmount”:优惠金额,”“resultList”:[“bar”:条码,”qty”:数量,”ch”:货道号,”price”:单价,”amount”:总价,” discountAmount”:优惠金额] }<br> '''说明'''<br> 优惠码是否可用:布尔值,优惠码可用为true。<br> 详情:如果不可用告知不可用原因。<br> 总价:浮点数,单位元<br> 优惠金额:浮点数,单位元<br> resultList:购物车单项信息,注意price整数单位为分 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} ==== 购物车订单出货通知 ==== {| class="wikitable" |- | 发送方 || Server |- | 说明 || 购物车优惠码信息上报后下发验证结果。 |- | 开始标识(1byte) || _ |- | 报文长度(3byte) || 不定长 |- | 命令(3byte) || SAF |- | 会话ID(6byte) || 服务器生成 |- | 分隔符(1byte) || / |- | 参数 || JSON格式:<br> {“dstCode”:优惠码,”identify”:识别码,”successFlag”:优惠码是否可用,”message”:详情,”amount”:总价,”discountAmount”:优惠金额,”“resultList”:[“bar”:条码,”qty”:数量,”ch”:货道号,”price”:单价,”amount”:总价,” discountAmount”:优惠金额] }<br> '''说明'''<br> 订单号:字符串,本次下货关联的订单的编号。<br> list:出货明细列表<br> 货道号:字符串,货道的编号。<br> 条码:字符串,订单购买的商品条码。<br> 购买数量:字符串,商品订单的商品数量。 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} ==== 购物车订单上报出货结果上报 ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 设备出货完成后,通知服务器出货结果。 |- | 开始标识(1byte) || _ |- | 响应类型(2byte) || RP |- | 命令(3byte) || SAP |- | 会话ID(6byte) || A60029 |- | 内容长度(3byte) || 不定长 |- | 内容(1byte) || JSON格式: {“bill”:订单号,”list”:[ “ch”:货道号,”qty”:成功出货的数量,”result”:出货结果]}<br> 说明:<br> <nowiki>#/#</nowiki>分隔符 订单号:出货所关联的货道。<br> list:出货结果列表<br> 货道号:字符串,货道的编号。<br> 成功出货的数量:整数,成功出货的商品数量。<br> 出货结果:整数枚举,0-出货成功,1-部分出货成功,2-货道空失败,3-出货电机故障,4-出货电机堵转,5-出货电机掉线,6-货道不存在,7-限位异常(到位开关问题),8-升降电机故障,9-出货通道堵塞,10-从机通讯失败,11-其他失败。 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} ==== 纸巾机获取动态二维码 ==== {| class="wikitable" |- | 发送方 || IPC |- | 说明 || 设备向平台请求消费者扫描动态二维码。 |- | 开始标识(1byte) || _ |- | 响应类型(2byte) || RP |- | 命令(3byte) || SAW |- | 会话ID(6byte) || A60053 |- | 内容长度(3byte) || 不定长 |- | 内容(1byte) || 1 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例: _ RP SAW A60053 001 1 \r\n ==== 下发纸巾机动态二维码 ==== {| class="wikitable" |- | 发送方 || Server |- | 说明 || 消费者可通过扫描该链接的生成的二维码操作出纸。 |- | 开始标识(1byte) || _ |- | 报文长度(3byte) || 不定长 |- | 命令(3byte) || SAW |- | 会话ID(6byte) || 服务器生成 |- | 分隔符(1byte) || / |- | 参数 || 格式: <nowiki> https://qa-wechart.poseidong.com/web-wechart/mobile/oa/{appid}/ivem/tissue/scan?nonce=*********** </nowiki> |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例: _106 SAW XAzu57 / <nowiki>https://qa-wechart.poseidong.com/web-wechart/mobile/oa/{appid}/ivem/tissue/scan?nonce=***********</nowiki> \r\n ==== 下发上传设备日志指令 ==== {| class="wikitable" |- | 发送方 || 服务器 |- | 说明 || 服务器下发指令给设备,设备上传日志到指定的ftp服务器 |- | 开始标识 (1byte) || _ |- | 报文长度 (3byte) || 不定长 |- | 命令 (3byte) || SAV |- | 会话ID (6byte) || 服务器生成 |- | 分隔符 (1byte) || / |- | 内容 ||JSON对象: {"host":"主机","port":"端口","username":"用户名","password":"密码","path":"路径","time":"时间(格式为yyyyMMdd)"} |- | 结束标识(2byte) || \r \n (0x0D 0x0A) |} ==== 下发上传设备日志指令应答 ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 设备收到上传设备日志指令后响应结果 |- | 开始标识 (1byte) || _ |- | 响应类型 (2byte) || RS |- | 命令 (3byte) || SAV |- | 会话ID (6byte) || 服务器下发的会话id |- | 内容长度 (3byte) || 不定长 |- | 内容(30Byte)||JSON对象: {"result":"结果"}<br> 说明:1-成功<br>2-本地未查询到服务端下发的文件<br>3-ftp客户端连接失败 |- | 结束标识(2byte) || \r \n (0x0D 0x0A) |} ==== 纸巾机下发出纸指令 ==== {| class="wikitable" |- | 发送方 || 服务器 |- | 说明 || 服务器下发给设备出纸指令 |- | 开始标识(1byte) || _ |- | 报文长度(3byte) || 不定长 |- | 命令(3byte) || SJA |- | 会话ID(6byte) || 服务器生成 |- | 分隔符(1byte) || / |- | 参数 || 格式:json对象<br> length(出纸长度,厘米):int类型 billCd(订单号):string类型 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例: 出纸长度10cm, 订单号12345678901234567890123 _ 049 SJA WZa6HV / {"length": 10, "billCd": "12345678901234567890123"} \r\n ==== 纸巾机下发出纸指令响应 ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 设备接收到服务器下发的出纸指令并确定能够处理时立即返回响应 |- | 开始标识 (1byte) || _ |- | 响应类型 (2byte) || RS |- | 命令 (3byte) || SJA |- | 会话ID (6byte) || 服务器下发的会话id |- | 内容长度 (3byte) || 不定长 |- | 内容(30Byte)||格式: <br> 说明:<br> 结果: S-成功,F-失败 |- | 结束标识(2byte) || \r \n (0x0D 0x0A) |} 示例: 接收成功 _ RS SJA 123456 001 S \r \n ==== 纸巾机缺纸上报 ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 设备出货完成后,通知服务器出货结果。 |- | 开始标识(1byte) || _ |- | 响应类型(2byte) || RP |- | 命令(3byte) || SAJ |- | 会话ID(6byte) || A60090 |- | 内容长度(3byte) || 不定长 |- | 内容(1byte) || 格式:无 说明: |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例<br> _ RP SAJ A60090 033 *** \r\n ==== 纸巾机下发补纸指令 ==== {| class="wikitable" |- | 发送方 || 服务器 |- | 说明 || 服务器下发给设备补纸指令 |- | 开始标识(1byte) || _ |- | 报文长度(3byte) || 不定长 |- | 命令(3byte) || SJB |- | 会话ID(6byte) || 服务器生成 |- | 分隔符(1byte) || / |- | 参数 || 无 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例: _ 049 SJB WZa6HV / \r\n ==== 纸巾机下发补纸指令响应 ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 设备接收到服务器下发的补纸指令并确定能够处理时立即返回响应 |- | 开始标识 (1byte) || _ |- | 响应类型 (2byte) || RS |- | 命令 (3byte) || SJB |- | 会话ID (6byte) || 服务器下发的会话id |- | 内容长度 (3byte) || 不定长 |- | 内容(30Byte)||格式: <br> 说明:<br> 结果: S-成功,F-失败 |- | 结束标识(2byte) || \r \n (0x0D 0x0A) |} 示例: 接收成功 _ RS SJB 123456 001 S \r \n ==== 纸巾机补纸成功上报 ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 设备补纸成功后,通知服务器补纸结果。 |- | 开始标识(1byte) || _ |- | 响应类型(2byte) || RP |- | 命令(3byte) || SJB |- | 会话ID(6byte) || A60091 |- | 内容长度(3byte) || 不定长 |- | 内容(1byte) || 格式:无 说明: |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例<br> _ RP SAJ A60091 033 *** \r\n ==== 安卓下发商品优惠码信息 ==== {| class="wikitable" |- | 发送方 || Server |- | 说明 || 批量下发商品优惠码信息 |- | 开始标识(1byte) || _ |- | 报文长度(3byte) || 不定长 |- | 命令(3byte) || BAL |- | 会话ID(6byte) || 服务器生成 |- | 分隔符(1byte) || / |- | 参数 || 格式: {"products":[{"bar":"商品条码","disCodes":["优惠码","优惠码"……]]} |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例: _ 146 BAL HzkNan / {"deviceNo":"123123123","products":[{"bar":"1556429702499","disCodes":["0010304","0010305","0010301","0010302","0010303"]}]} \r\n ==== 安卓设备下发商品优惠码信息应答 ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 服务器批量向安卓工控机下发商品优惠码信息后安卓工控机应答服务器 |- | 开始标识 (1byte) || _ |- | 响应类型 (2byte) || RS |- | 命令 (3byte) || BAL |- | 会话ID (6byte) || 服务器下发的会话id |- | 内容长度 (3byte) || 不定长 |- | 内容(30Byte)||格式: <br> 响应结果<br> {"result":[{"bar":商品条码,"status":更新成功与否,"reason":错误原因}]}<br> 说明:<br> 商品条码:服务器下发的商品信息<br> 更新成功与否:枚举值,0-更新成功,1-更新失败。<br> 错误原因:正数枚举,0-正常,1-参数格式错误;2-商品不存在,3-其他错误 |- | 结束标识(2byte) || \r \n (0x0D 0x0A) |} 示例:_ RS SJA 123456 055 {"result":[{"bar":"1556429702499","reason":0,"status":0}]} \r\n ==== 支付宝人脸支付设备请求商户信息 ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 设备发起人脸支付前,先向服务器请求商户信息 |- | 开始标识(1byte) || _ |- | 响应类型(2byte) || RP |- | 命令(3byte) || UAC |- | 会话ID(6byte) || A60019 |- | 内容长度(3byte) || 不定长 |- | 内容(1byte) || #<br> 说明:无特殊意义,直接设置成字符串“#”即可 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例:<br> _ RP UAC A60019 001 # \r\n ==== 支付宝人脸支付设备请求商户信息响应 ==== {| class="wikitable" |- | 发送方 || Server |- | 说明 || 响应安卓设备请求支付宝人脸支付商户信息。 |- | 开始标识(1byte) || _ |- | 响应类型(2byte) || RS |- | 报文长度(3byte) || 不定长 |- | 命令(3byte) || SAC |- | 会话ID(6byte) || 服务器生成 |- | 分隔符(1byte) || / |- | 参数 || 格式:String<br> <nowiki>合作者信息#/#合作者信息</nowiki> <br> '''说明:'''<br> 合作者信息 对应的支付宝PID<br> |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例:<br> _ 051 SAC RaWt2o / 20884213XXXXXXXX#/#20884213XXXXXXXX \r\n ==== 支付宝人脸付请求获取zimId和zimInitClientData ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 设备发起人脸支付前,向服务器请求获取zimId和zimInitClientData |- | 开始标识(1byte) || _ |- | 响应类型(2byte) || RP |- | 命令(3byte) || UAE |- | 会话ID(6byte) || A60020 |- | 内容长度(3byte) || 不定长 |- | 内容(1byte) || 格式:JSON <nowiki> { "apdidToken":apdidToken, "appName":"com.alipay.zoloz.smile", "appVersion":"4.0.0.534", "bioMetaInfo":"4.5.0:287358976,32770", "deviceModel":"MC-Android", "deviceType":"android", "machineInfo":{ "cameraColorResolution":"640*480", "cameraDriveVer":"RD107E-007", "cameraModel":"AstraPro2", "cameraName":"AstraPro2", "cameraVer":"18031620100", "ext":"", "group":"", "machineCode":"Xug9XyS9++QDAHJuMo6N+c27", "machineModel":"MC-Android", "machineVer":"5.1.1", "sn":"DBF6PBVO0I" }, "merchantInfo":{ "appId":appId, "brandCode":brandCode, "deviceMac":deviceMac, "deviceNum":deviceNum, "merchantId":merchantId, "partnerId":partnerId }, "osVersion":"5.1.1", "remoteLogID":"65b4cb02e7ef44eabcbaaa1e34741d3984919880", "zimVer":"1.0.0" } </nowiki> 该信息通过安卓设备调用支付宝接口获取,参考地址:https://opendocs.alipay.com/open/20180402104715814204/cgxcze <br> 信息说明:<br> appId:平台appid<br> brandCode:平台商品编号<br> deviceMac:平台设备编号<br> deviceNum:平台设备编号<br> merchantId:支付宝pId<br> partnerId:支付宝pId<br> |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例:<br> _ RP UAE A60020 813 {"apdidToken":"rQwc4Oi6r4DjIJHfeH17o_02rkwi6uAp0oFzFbvCUPH9yt74xxxxxxxx","appName":"com.alipay.zoloz.smile","appVersion":"4.0.0.534","bioMetaInfo":"4.5.0:287358976,32770","deviceModel":"MC-Android","deviceType":"android","machineInfo":{"cameraColorResolution":"640*480","cameraDriveVer":"RD107E-007","cameraModel":"AstraPro2","cameraName":"AstraPro2","cameraVer":"18031620100","ext":"","group":"","machineCode":"Xug9XyS9++QDAHJuMo6N+c27","machineModel":"MC-Android","machineVer":"5.1.1","sn":"DBF6PBVO0I"},"merchantInfo":{"appId":"2017051807xxxxxx","brandCode":"6901285xxxxxx","deviceMac":"862810049xxxxxx","deviceNum":"862810049xxxxxx","merchantId":"20884213xxxxxxxx","partnerId":"20884213xxxxxxxx"},"osVersion":"5.1.1","remoteLogID":"65b4cb02e7ef44eabcbaaa1e34741d39xxxxxxxx","zimVer":"1.0.0"} \r\n ==== 支付宝人脸支付设备请求商户信息响应 ==== {| class="wikitable" |- | 发送方 || Server |- | 说明 || 响应安卓设备请求支付宝人脸支付商户信息。 |- | 开始标识(1byte) || _ |- | 响应类型(2byte) || RS |- | 报文长度(3byte) || 不定长 |- | 命令(3byte) || SAE |- | 会话ID(6byte) || 服务器生成 |- | 分隔符(1byte) || / |- | 参数 || 格式:String <nowiki>标识位#/#请求内容#/#zimId#/#zimInitClientData#/#订单号</nowiki> <br> '''说明:'''<br> 标识位 获取信息成功或失败 S-成功 F-失败<br> 请求内容 请求时携带的内容 <br> zimId 服务端向支付宝请求获取到的参数<br> zimInitClientData 服务端向支付宝请求获取到的参数,该参数下发设备时会经过base64编码处理,设备端需要解码处理。<br> 订单号 平台生成的订单号 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例:<br> 成功:<br> _ 999 SAE RaW3XJ / S#/#{"apdidToken":"rQwc4Oi6r4DjIJHfeH17o_02rkwi6uAp0oFzFbvCUPH9yt74xxxxxxxx","appName":"com.alipay.zoloz.smile","appVersion":"4.0.0.534","bioMetaInfo":"4.5.0:287358976,32770","deviceModel":"MC-Android","deviceType":"android","machineInfo":{"cameraColorResolution":"640*480","cameraDriveVer":"RD107E-007","cameraModel":"AstraPro2","cameraName":"AstraPro2","cameraVer":"18031620100","ext":"","group":"","machineCode":"Xug9XyS9++QDAHJuMo6N+c27","machineModel":"MC-Android","machineVer":"5.1.1","sn":"DBF6PBVO0I"},"merchantInfo":{"appId":"2017051807xxxxxx","brandCode":"6901285xxxxxx","deviceMac":"862810049xxxxxx","deviceNum":"862810049xxxxxx","merchantId":"20884213xxxxxxxx","partnerId":"20884213xxxxxxxx"},"osVersion":"5.1.1","remoteLogID":"65b4cb02e7ef44eabcbaaa1e34741d39xxxxxxxx","zimVer":"1.0.0"}#/#78151bf3e53732e52dc109042bd88b4ec80s#/#Q0dRU0FCb2tOemd4TlRGaVpqTmxOVE0zTXpKbE5USmtZekV3T1RBME1tSmtPRGhpTkdWak9EQnpJ#/#20200628153647900622078 \r\n<br> 失败:<br> _ 999 SAE RaW3XJ / F#/#{"apdidToken":"rQwc4Oi6r4DjIJHfeH17o_02rkwi6uAp0oFzFbvCUPH9yt74xxxxxxxx","appName":"com.alipay.zoloz.smile","appVersion":"4.0.0.534","bioMetaInfo":"4.5.0:287358976,32770","deviceModel":"MC-Android","deviceType":"android","machineInfo":{"cameraColorResolution":"640*480","cameraDriveVer":"RD107E-007","cameraModel":"AstraPro2","cameraName":"AstraPro2","cameraVer":"18031620100","ext":"","group":"","machineCode":"Xug9XyS9++QDAHJuMo6N+c27","machineModel":"MC-Android","machineVer":"5.1.1","sn":"DBF6PBVO0I"},"merchantInfo":{"appId":"2017051807xxxxxx","brandCode":"6901285xxxxxx","deviceMac":"862810049xxxxxx","deviceNum":"862810049xxxxxx","merchantId":"20884213xxxxxxxx","partnerId":"20884213xxxxxxxx"},"osVersion":"5.1.1","remoteLogID":"65b4cb02e7ef44eabcbaaa1e34741d39xxxxxxxx","zimVer":"1.0.0"} \r\n ==== 支付宝人脸付发起付款请求 ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 设备向平台发起人脸支付请求 |- | 开始标识(1byte) || _ |- | 响应类型(2byte) || RP |- | 命令(3byte) || UAI |- | 会话ID(6byte) || A60021 |- | 内容长度(3byte) || 不定长 |- | 内容(1byte) || 格式:String <nowiki> ftoken#/#订单号#/#商品编码#/#购买数量#/#货道号#/#单价 </nowiki> 信息说明: ftoken:该参数设备通过支付宝api获取,参考地址:https://opendocs.alipay.com/open/20180402104715814204/cgxcze <br> 订单号:平台生成的订单号<br> 商品编码:平台商品编码<br> 购买数量:单次购买数量<br> 货道号:订单对应的货道号<br> 单价:商品价格,单位:分 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例:<br> _ RP UAI A60021 109 fp1aef2d92e7c37a635d3ab5788exxxxxxx#/#20200628153647900622078#/#6901285991219#/#1#/#001#/#1 \r\n ==== 支付宝人脸支付设备请求商户信息响应 ==== {| class="wikitable" |- | 发送方 || Server |- | 说明 || 响应安卓设备请求支付宝人脸支付商户信息。 |- | 开始标识(1byte) || _ |- | 响应类型(2byte) || RS |- | 报文长度(3byte) || 不定长 |- | 命令(3byte) || SAI |- | 会话ID(6byte) || 服务器生成 |- | 分隔符(1byte) || / |- | 参数 || 格式:String <nowiki>标识位#/#订单号</nowiki> <br> '''说明:'''<br> 标识位 成功或失败 S-成功 F-失败<br> 订单号 上报的订单号 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例:<br> 成功:<br> _ 043 SAI RavCpl / S#/#20200628153647900622078 \r\n<br> 失败:<br> _ 043 SAI RavCpl / F#/#20200628153647900622078 \r\n ==== 勤美屏幕版APK获取信息上报 ==== {| class="wikitable" |- | 发送方 || 设备 |- | 说明 || 勤美屏幕版APK获取信息。 |- | 开始标识(1byte) || _ |- | 响应类型(2byte) || RP |- | 命令(3byte) || SUK |- | 会话ID(6byte) || A60034 |- | 内容长度(3byte) || 不定长 |- | 内容(1byte) || 格式: 服务器下发的设备号<br> 说明:<br> 设备号: 设备cd |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例<br> 设备号: 2020090411080017<br> _ RP SUK A60034 002 34 \r\n ==== 勤美屏幕版APK自定义信息下发 ==== {| class="wikitable" |- | 发送方 || 服务器 |- | 说明 || 勤美屏幕版APK上需要显示设备的名称以及售后手机号码,由平台自动获取。 |- | 开始标识(1byte) || _ |- | 响应类型(2byte) || RS |- | 命令(3byte) || SUK |- | 会话ID(6byte) || A60034 |- | 内容长度(3byte) || 不定长 |- | 内容(1byte) || JSON格式:<br> {"deviceNo":"2020090411080017","qinMeiApkVO":{"cd":"设备号","name":"设备名称","place":"场地信息","status":"设备状态","cphone":"售后电话","snumber":"序列号"}}<br> 设备号:字符串,设备号<br> 设备名称:字符串,需要base64解码<br> 场地信息:字符串,需要base64解码<br> 设备状态:字符串,枚举<br> 售后电话:字符串。 序列号:字符串,设备序列号。 |- | 结束标识(2byte) || \r\n (0x0D 0x0A) |} 示例:<br> {"deviceNo":"2020090411080017","qinMeiApkVO":{"cd":"2020090411080017","name":"ZHVhbiB5dQ==","place":"5LiK5rW35biC5LiK5rW35biC5Y2X5rGH5Yy65rWL6K+VMDAx","status":"5q2j5bi45ZCv55So","cphone":"18698575030","snumber":"2020090411080017"}}
返回至
安卓型自动销售设备通讯协议
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息