云打印机CP事件及消息示例

1 事件列表

event取值说明
6001未经处理的文字小票上传消息
6002未经处理的图片小票上传消息
6003经过处理的小票消息

2 事件消息示例

2.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.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解析

2.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解析

附录:签名sign生成规则

2.1 协议说明

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

2.2 签名规则

对于所有的接入者,数字店铺开放平台会分配以下内容:

  • app_id: 唯一标识接入身份
  • secret_key: 该用户独有的签名校验

签名规则应用于对HTTP请求中的参数进行MD5签名,规则顺序如下:

  1. 参数必须包含random字段,为一个随机字符串,由数字和字母组成,长度范围为6-10位
  2. 参数必须包含timestamp字段 ,为当前的unix timestamp,精度到秒级,10位数字, 格式可以参考 https://tool.chinaz.com/tools/unixtime.aspx
  3. 参数必须包含app_id字段
  4. 首先对于所有包含key的传递参数按照ASCII码顺序从小到大排序,将key-value键值对依此组成字符串 (文件参数不参与验签)
  5. 在字符串尾部拼接该SaaS厂商独有的签名校验secret_key值,拼接方法见例子详述
  6. 对字符串进行MD5签名
  7. 对生成的MD5签名转化为全大写