1 接口规则
1.1 接入准备
通过对接人获取渠道编号channel_code和密钥key
1.2 协议规则
提交方式 | 采用POST方法提交 |
数据格式 | 请求和返回数据均为json格式 |
字符编码 | 统一采用UTF-8字符编码 |
签名算法 | MD5 |
1.3 接入方式
第三方按照本接口协议,调用接口,往接口推送相关数据。
1.4 签名算法
生成签名有两个步骤。
- 将请求参数(除签名以外)按参数名ASCII码从小到大排序并且以键值对(即key1=value1&key2=value2&key3=value3…)拼接方式拼接成原始字符串stringA。
- 在stringA最后拼接上密钥key得到stringSignTemp字符串,并对stringSignTemp进行md5,并将得到的字符串转为大写,即可得到签名的值sign。
举例:
假设传送的参数如下:
request_number 10002304
timestamp 1501463464
channel_code XS0000000001
app_id A223340002
device_info 10002
第一步按键值对拼接字符串,并且以ASCII码排序
stringA=”app_id=A223340002&channel_code=XS0000000001&device_info=10002& request_number=10002304& timestamp=1501463464”
第二步拼接密钥key,md5之后转大写
stringSignTemp=stringA+”&key=290987730b4c09247ec02edce67sc9d2″
sign=MD5(stringSignTemp).toUpperCase()=”DB09F317E6E76A7E7F2083BE9F446910″
2 API列表
2.1 上传门店信息
联调地址http://test.webapi.engine.sunmi.com/software/postStore
正式地址 http://webapi.engine.sunmi.com/software/postStore
接口名称 postStore
说明:将商米渠道下的店铺基础信息上传此接口(不同时间重复上传上传时会返回原来的门店编号),返回一个门店编号存储下来,将此门店编号跟软件商自己的门店进行绑定关联,上传交易数据时请求参数需带上门店编号。如果门店信息有修改可以带上门店编号上传此接口进行同步(也可不做)。
注意:门店只需上传一次,拿到门店编号即可,避免同时重复上传!
传入参数
字段名 | 变量名 | 是否必传 | 类型 | 描述 |
渠道编号 | channel_code | 是 | String(10) | 标识第三方 |
请求流水号 | request_number | 是 | String(20) | 用来匹配请求的 唯一 |
时间戳 | timestamp | 是 | UInt(10) | 当前unix时间戳 |
签名 | sign | 是 | String(32) | 请求签名用来验证请求的合法性 |
门店名称 | store_name | 是 | String(255) | |
手机号 | mobile | 是 | String(11) | 联系手机号 |
联系人 | contactor | 是 | String(50) | 门店联系人姓名 |
所在省 | province | 否 | String(50) | 例:浙江省 |
所在市 | city | 否 | String(50) | 例:杭州市 |
门店地址 | address | 是 | String(255) | 门店的详细地址 |
状态 | status | 是 | Uint | 0 停用 1启用 |
扩展字段 | ext_data | 否 | JsonString | 备用【非必须】 |
门店编号 | store_code | 否 | String(20) | 商米的门店编号。某店铺首次上传无需传;第二次及后续上传需要带上此门店编号也就是走店铺信息修改。 |
注:非必填字段为空时该字段不要传。
返回参数
字段名 | 变量名 | 类型 | 示例 | 描述 |
请求流水号 | request_number | String | 请求参数传过来的流水号 | |
状态码 | code | Int | 0 | 公共错误码。0表示成功,其他值表示失败 |
状态码说明 | message | String | 请求不合法 | 错误信息描述 |
门店编号 | store_code | 是 | String(20) | 分配的店铺号,唯一标识 |