pos android传参接口,对接调试

4、开发数据回调API接口

特别说明:商米数据云打印机的数据采集服务集成在【商米数字店铺】和【商米助手】APP中。所以只有执行了【商米助手】APP将打印机与门店进行设备绑定,打印机的打印数据才会上报到对应的门店下,然后通过本API接口将合作伙伴云与门店进行绑定,才能接收到打印机数据。

绑定前获取门店对接凭证

登录【商米数字店铺】,在【基础数据>组织管理>组织详情>获取对接凭证】中获取【对接店铺编号sunmi_shop_no】和【对接店铺密钥sunmi_shop_key】,记录下来为后续绑定接口提供参数(为了保证信息的有效性和安全性,对接凭证的有效期为24小时,过期之后可以重新获取)。

311ya997f716cd6ddccee67eae3fff892aae?Signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBcHBJRCI6IjU5Mzc3MGZmODM5NjMyMDAyZTAzNThmMSIsIl9hcHBJZCI6IjU5Mzc3MGZmODM5NjMyMDAyZTAzNThmMSIsIl9vcmdhbml6YXRpb25JZCI6IiIsImV4cCI6MTYwNDczODgxNSwiaWF0IjoxNjA0MTM0MDE1LCJyZXNvdXJjZSI6Ii9zdG9yYWdlLzMxMXlhOTk3ZjcxNmNkNmRkY2NlZTY3ZWFlM2ZmZjg5MmFhZSJ9.2jdQPyHmNv5kww_RWipCSC04YwdKICN44B7e_MKinDs

协议说明

对接的接口目前只开放HTTPS方式推送消息,所有的消息一律采用POST方式。

商米接口请求URL地址:https://store.sunmi.com/openapi

传参请求头Content-Type需要加上”application/x-www-form-urlencoded”。

以下每个接口只列出私有参数和返回结果,其他参数请求请看公共参数说明。

请求和返回内容皆为json格式数据。

字符编码均为UTF-8。

请求公共参数说明(所有请求都必须传递的参数)

参数名必填类型说明

app_id是string软件合作伙伴的唯一身份标识,同步获取的还有签名校验参数secret key

random是string随机字符串,由数字和大小写字母组成,长度范围为6-10位

sign是string签名信息,详见下文签名规则的说明

请求公共参数sign签名说明

对所有包含key的请求参数按照ASCII码顺序从小到大排序,将key value键值对依此拼接成字符串(文件参数不参与验签)

在字符串尾部拼接该软件合作伙伴独有的签名校验secret key

对字符串进行MD5加密,再将生成的MD5加密转化为32位全大写字符

示例:如果接口包含下列参数:

app_id:87F380B846C51FF7

random:289192

timestamp:1603718252

shop_id:100001

company_id:10000

shop_nam:myShop

company_name:myCompany

sunmi_shop_no:470826116009

sunmi_shop_key:MG4LJ5ERHUBDMF5XOOU8

contact_person:LiLei

phone:13166668888

则签名生成步骤为:

步骤1:按照key的ASCII码顺序从小到大排序并拼接成字符串

str1 = “app_id=87F380B846C51FF7&company_id=10000&company_name=myCompany&contact_person=LiLei&phone=13166668888&random=289192&shop_id=100001&shop_nam=myShop&sunmi_shop_key=MG4LJ5ERHUBDMF5XOOU8&sunmi_shop_no=470826116009&timestamp=1603718252”

步骤2:在字符串尾部拼接secret key

str2 = str1 + “&key=kdsofkdsnflke9382938k”

步骤3:对str2进行MD5加密,并转为32位全大写字符,就可以获得最终签名sign

sign = MD5(str2).upper() = 6413A7275DBE256D936AAEF5F1D958B9

返回公共参数说明

返回参数名类型说明

codeint返回码,参见下面常见错误代码列表

data不指定数据类型和内容详见私有返回参数data,如果有错误,返回null

msgstring结果提示信息,如果有错误返回错误信息描述

请求后,返回结果作为HTTP消息返回,如果消息签名认证失败,HTTP消息会返回 401等作为提示。

如果消息签名认证通过,则进入业务层处理,此次HTTP请求返回200 OK。

具体业务层面的操作返回JSON值在消息体中。

返回常见错误代码说明

错误码说明

0成功

5090sign校验不正确

5091timestamp的请求过期

4.1、商米云API接口-门店绑定接口

接口描述:

通过本接口调用,用户可以将第三方对接软件上的某门店与【商米数字店铺】中的门店进行绑定。

接口名:

/shop/bind

接口私有参数:

参数名称是否必须类型说明

shop_id是string第三方对接软件中门店的标识,对接的软件提供shop_id 与 sunmi_shop_no 具有一一对应关系。对于v2.0 及以后版本的所有接口,建议采用sunmi_shop_no作为店铺标识。对于已经使用shop_id作为参数的接口保持后向兼容,不需要进行修改。

company_id是string第三方对接软件中商户的标识,对接的软件提供商户是门店的上一级组织。记录商户与门店对应关系,可以据此处理后续商户级别业务,以及商户内跨门店业务。对于单商户-多门店模式的用户,建议商户-门店的对应关系在第三方对接软件和【商米数字店铺】体系中保持一致。

shop_name是string第三方对接软件中门店的门店名称

company_name是string商户名称

sunmi_shop_no是string【商米数字店铺】的门店【对接店铺编号】,可在【商米数字店铺】的【基础管理>组织管理>组织详情】中获取

sunmi_shop_key是string【商米数字店铺】的门店【对接店铺密钥】,可在【商米数字店铺】的【基础管理>组织管理>组织详情】中获取

contact_person是string联系人姓名

phone是string联系人电话

industry_id否int门店行业类别编号

industry_name否string门店行业类别名称

province否string所在省份

city否string所在市

district否string所在区县

address否string商户门店地址

mail否string联系人邮箱

format否int门店业态 0-无 1 – 餐前付款, 2 – 餐后付款,默认0

status否int门店状态 1 – 启用, 2 – 停用, 默认1

请求示例:

"method": "POST",

"url": "https://store.uat.sunmi.com/openapi/shop/bind",

"headers": {

"Content-Type": "application/x-www-form-urlencoded"

},

formData: {

"shop_id": "10096",

"shop_name": "myShop",

"sunmi_shop_no": "560279010307",

"sunmi_shop_key": "MG4LJ5ERHUBDMF5XOOU8",

"company_id": "10000",

"company_name": "myCompany",

"contact_person": "LiLei",

"phone": "13166668888",

"app_id": "LMWWQVTW4QGCC",

"timestamp": 1581383983,

"random": "5dsf6698",

"sign": "33C18A18282733A71F998BB5A5E4319D"

}

返回值:

{

"code": 0, /* 其他错误参考错误列表 */

"msg": "succeed",

"data": {}

}

错误编号列表:

错误编号错误原因

5000数据库错误

5032非法店铺

5041非法对接软件

5042对接软件中的门店已绑定

5043对接商米店铺密钥错误

4.2、商米云API接口-门店解绑接口

接口描述:

通过本接口调用,用户可以将SaaS上的某门店与【商米数字店铺】中的门店解除绑定。

接口名:

/shop/unbind

接口私有参数:

参数名称是否必须类型说明

shop_id是string第三方对接软件中门店的标识,对接的软件提供

company_id否string第三方对接软件中商户的标识,对接的软件提供

sunmi_shop_no否string【商米数字店铺】的门店【对接店铺编号】

请求示例:

"method": "POST",

"url": "https://store.uat.sunmi.com/openapi/shop/unbind",

"headers": {

"Content-Type": "application/x-www-form-urlencoded"

},

formData: {

"shop_id": "10096",

"app_id": "LMWWQVTW4QGCC",

"timestamp": 1581383983,

"random": "5dsf6698",

"sign": "33C18A18282733A71F998BB5A5E4319D"

}

返回值:

{

"code": 0, /* 其他错误参考错误列表 */

"msg": "succeed",

"data": {}

}

错误列表:

错误编号错误原因

5032非法店铺

5041非法对接软件

5000数据库错误

4.3、合作伙伴云API接口-数据接收接口

接口描述:

当商米云收到打印机的小票数据并完成解析后,会调用软件合作方提供的一个接口发送数据。在合作伙伴云端开发完成了本数据接收接口以后,还需要将本接口的【回调URL地址】和【消息类型event】告诉商米对接技术人员;商米后台设置以后才会回传数据到合作伙伴云。

接口名:

/uploaddata

接口私有参数:

参数名必填类型说明

sunmi_shop_no是string【商米数字店铺】平台门店的唯一编号

shop_id是string店铺在对接软件体系下的唯一标识

event是int触发消息的类型,具体请参考下文

payload是string消息的具体格式(根据消息不同会有不同的json),具体请参考下文

注意:如果回调消息发送失败,会触发重传机制。一共会触发4次重传,时间间隔分别为15秒, 30 秒, 1分钟和2分钟。

数据事件和消息event

1、event=6001 未经处理的文字小票上传消息

报文格式: application/x-www-form-urlencoded;param=value;charset=UTF-8

消息体格式:

{

"app_id": 'CSJGYI6T8P237', //唯一标识接入身份,联系商米数字店铺提供

"event": '6002', // 触发消息的类型

"payload": '{

"id":"70dcd2f600e45736e1", // 系统生成的小票ID

"sn":"N302D9WZC0064", // 打印设备SN

"text": "abc" // 文字小票内容

}',

"random": 'NDL8GXR', // 随机字符串,由数字和字母组成,长度范围为6-10位

"shop_id": '29203', // 店铺在SaaS软件体系下的唯一标识, 没有或者不需要则为空

"sign": '738D9FF2482D59E5DC1FB32B6F445464', //签名校验

"sunmi_shop_no": '28393437387', // 商米数字店铺平台门店唯一编号, 没有或者不需要则为空

"timestamp": '1604567375' //当前的unix timestamp,精度到秒级,10位数字

}

备注:payload字段对应的值为string类型,解析对此string类型内容进行json解析

2、event=6002 未经处理的图片小票上传消息

报文格式: application/x-www-form-urlencoded;param=value;charset=UTF-8

消息体格式:

{

"app_id": 'CSJGYI6T8P237', //唯一标识接入身份,联系商米数字店铺提供

"event": '6002', // 触发消息的类型

"payload": '{

"id":"70dcd2f600e45736e1", // 系统生成的小票ID

"sn":"N302D9WZC0064", // 打印设备SN

"base64_image":"DKJOIFDNLKSDJLSJDISDNLKFJDLSLDJF==", // 图片小票的base64 encoded string

}',

"random": 'NDL8GXR', // 随机字符串,由数字和字母组成,长度范围为6-10位

"shop_id": '29203', // 店铺在SaaS软件体系下的唯一标识, 没有或者不需要则为空

"sign": '738D9FF2482D59E5DC1FB32B6F445464', //签名校验

"sunmi_shop_no": '28393437387', // 商米数字店铺平台门店唯一编号, 没有或者不需要则为空

"timestamp": '1604567375' //当前的unix timestamp,精度到秒级,10位数字

}

备注:payload字段对应的值为string类型,解析对此string类型内容进行json解析

3、event=6003 经过处理的小票消息

报文格式: application/x-www-form-urlencoded;param=value;charset=UTF-8

消息体格式:

{

"app_id": 'CSJGYI6T8P237', //唯一标识接入身份,联系商米数字店铺提供

"event": '6003', // 触发消息的类型

"payload": '{

"id":"70dcd2f600e45736e1", // 系统生成的小票ID

"sn":"N302D9WZC0064", // 打印设备SN

"order_time":"2020-11-05 17:45:00", // 小票生成时间

"order_id":"202011051707", // 小票上的订单ID

"order_received_amount":"20", // 小票金额

"sales_detail_list":[ // 明细列表

{ "amount":"4", // 商品单价

"item":"维他柠檬茶", // 商品名字

"quantity":"1" // 商品数量

},

{"amount":"7","item":"梅汤","quantity":"1"},

{"amount":"6","item":"旺仔牛奶","quantity":"1"},

{"amount":"3","item":"罐","quantity":"1"}

]

}',

"random": 'NDL8GXR', // 随机字符串,由数字和字母组成,长度范围为6-10位

"shop_id": '29203', // 店铺在SaaS软件体系下的唯一标识, 没有或者不需要则为空

"sign": '738D9FF2482D59E5DC1FB32B6F445464', //签名校验

"sunmi_shop_no": '28393437387', // 商米数字店铺平台门店唯一编号, 没有或者不需要则为空

"timestamp": '1604567375' //当前的unix timestamp,精度到秒级,10位数字

}

备注:payload字段对应的值为string类型,解析对此string类型内容进行json解析

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值