logo 开放平台
管理后台

平台介绍

  • 平台简介
  • 开放平台管理规则

开发者对接说明

  • 对接步骤
  • RESTful API介绍

接口列表

  • 添加打印机
  • 获取打印机信息
  • 修改打印机信息
  • 修改打印机配置参数
  • 删除打印机
  • 打印订单
  • 清空待打印订单
  • 查询打印订单状态
  • 查询打印机历史打印订单数
  • (重要)签名生成算法

SDK 示例下载

  • SDK 示例下载

常见问题

  • 常见问题

平台介绍

平台简介

商鹏云打印开放平台,为开发者提供各行业的云打印解决方案,致力于成为国内最安全、稳定的云打印服务平台。
平台日均打印小票超过一百万,云打印解决方案可以有效提升商家经营效率、降低经营成本、提升市场竞争力、提高消费者的服务体验。
商鹏云打印开放平台提供完善的API开发文档以及示例,还有免费的技术支持服务。
接入商鹏云打印开放平台,让你的应用马上具备云打印功能,随时随地打印,不受距离限制。

云打印流程

开放平台运营管理规则

1.相关定义

商鹏云打印开放平台:商鹏云打印开放平台(以下简称“开放平台”),商鹏,为第三方提供:技术文档、应用程序等相关服务,帮助其使用商鹏云打印服务。

第三方:指与开放平台合作的任何第三方,包括但不限于个人开发者、企业开发者、以及个人或企业开发者的关联公司、合作方。

2.开放平台接入流程

接入指南

第一步:注册(开发者的账号密码具有唯一性,开发者需对账号下的一切操作承担全部责任与法律后果);

第二步:阅读并确认了解《商鹏云打印开放平台服务条款》;

第三步:完善第三方信息;

第四步:根据接口文档进行开发;

第五步:开发测试;

第六步:上线;

3.免责声明

条款

(1)对于使用了开放平台提供服务的第三方,必须遵守法律法规,如有违反,第三方同意独立承担所有的风险和后果。

(2)第三方将使用了开放平台提供服务后的系统提供给最终用户使用时,应充分告知其相关注意事项。因任何人使用第三方开发或运营的系统所产生的任何问题、事故或纠纷,均由第三方自行承担全部责任,开放平台对此不承担责任。

(3)开放平台因本条前述事由受到损失或者被要求承担责任的,有权要求相应第三方赔偿开放平台因此受到的损失和/或要求该开发者承担相关责任。

开发者接入API步骤如下,更多详情请加入: 商鹏云QQ 2群:686838578 (新群)


第一步:注册开发者账号

到 http://developer.spyun.net (以下统称‘商鹏云管理后台’)注册开发者账号。


第二步:对接API

注意:必须先调用添加打印机接口,然后才能调用打印接口进行打印。所有API接口都是https协议


第三步:测试打印

测试打印之前,请确保打印机在线,并且纸张正常。如调试打印模板有问题,请加入商鹏云开发交流QQ群

RESTful API介绍

RESTful API本质就是发送 HTTP 请求,只不过大家常用的可能是 HTTP GET 和 HTTP POST 请求,但是在 RESTful API里面还经常用到 HTTP PUT 、HTTP PACTCH、 HTTP DELETE。
在 RESTful API中,把这五种操作称之为动词,可以(但不是特别准确)想象成增删改查。客户端发送到服务端的数据类型为:application/x-www-form-urlencoded,服务器返回的数据类型为:applicstion/json,数据编码为:UTF-8。
RESTful API 接口调用成功时返回 HTTP 状态码为 200,如调用错误会返回除 200 之外的其他 HTTP 状态码,可根据返回数据中的 errorcode和errormsg 字段判断具体错误。
常见HTTP错误状态码如下:

HTTP 返回码(Status Code) 说明(Description)
400 (错误请求)服务器不理解请求的语法。
401 (未授权)请求要求身份验证。对于需要sign的接口,服务器可能返回此响应。
403 (禁止)服务器拒绝请求。
404 (未找到)服务器找不到请求的接口。
408 (请求超时)服务器等候请求时发生超时。
413 (请求体过大),拆成更小的请求体重试即可。
500 (服务器内部错误)服务器遇到错误,无法完成请求。
501 (尚未实施)服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。
502 (错误网关)服务器作为网关或代理,从上游服务器收到无效响应。
503 (服务不可用)请求接口超过调用频率限制,即接口被限流。
504 (网关超时)服务器作为网关或代理,但是没有及时从上游服务器收到请求。
更多 RESTful API 背景知识可以参考RESTful API 设计指南。

全局errorcode如下:

errorcode 说明(Description)
0 成功
-1 appid为空
-2 appid不存在
-3 时间戳为空
-4 签名错误
大于0 错误码大于0时每个接口返回不一样,具体请看各个接口

添加打印机

请求url:

https://open.spyun.net/v1/printer/add

请求方法:

POST

请求数据说明:

客户端发送到服务端的数据类型为:application/x-www-form-urlencoded,服务器返回的数据类型为:applicstion/json,数据编码为:UTF-8。

请求体body:

参数名 类型 是否必须 说明
appid string 是 用户唯一凭证
timestamp int 是 请求时unix时间戳(10位数字,精确到秒)
sn string 是 打印机编号(查看打印机底部标签)
pkey string 是 打印机KEY(查看打印机底部标签)
name string 是 打印机名称/备注
sign string 是 签名,详见签名生成算法

成功返回:

{"errorcode":0}

失败返回:

  1. {
  2. "errorcode":-1,
  3. "errormsg":"appid为空"
  4. }

本接口errorcode说明:

errorcode 说明(Description)
1 打印机编号为空
2 打印机KEY为空
3 打印机名称为空
4 打印机编号或KEY错误
5 此打印机已添加,不能重复添加
6 系统繁忙

获取打印机信息

请求url:

https://open.spyun.net/v1/printer/info

请求方法:

GET

请求数据说明:

客户端发送到服务端的数据类型为:application/x-www-form-urlencoded,服务器返回的数据类型为:applicstion/json,数据编码为:UTF-8。

请求URL参数:

参数名 类型 是否必须 说明
appid string 是 用户唯一凭证
timestamp int 是 请求时unix时间戳(10位数字,精确到秒)
sign string 是 签名,详见签名生成算法
sn string 是 打印机编号

成功返回:

                                    
  1. {
  2. "errorcode":0,
  3. "sn":"sp11222333", // 打印机编号
  4. "name":"name", // 打印机名称
  5. "online":1, // 是否在线,1:在线:0:离线
  6. "status":0, // 状态,0:正常,1:异常
  7. "sqsnum":1, // 待打印订单数
  8. "model":"xxx", // 机型
  9. "auto_cut":1, // 自动切刀开关,1:开,0:关
  10. "voice":"U", // 语音开关信息 N:关,Y:滴滴滴,U:小语音,V:中语音,W:大语音
  11. "imsi":"xxx" // 流量卡号码,wifi机型该值为空
  12. }

失败返回:

  1. {
  2. "errorcode":-1,
  3. "errormsg":"appid为空"
  4. }

本接口errorcode说明:

errorcode 说明(Description)
1 打印机编号SN不正确
2 打印机不存在

修改打印机信息

请求url:

https://open.spyun.net/v1/printer/update

请求方法:

PATCH

请求数据说明:

客户端发送到服务端的数据类型为:application/x-www-form-urlencoded,服务器返回的数据类型为:applicstion/json,数据编码为:UTF-8。

请求体body:

参数名 类型 是否必须 说明
appid string 是 用户唯一凭证
timestamp int 是 请求时unix时间戳(10位数字,精确到秒)
sn int 是 打印机编号
name string 否 打印机名称
sign string 是 签名,详见签名生成算法

成功返回:

{"errorcode":0}

失败返回:

  1. {
  2. "errorcode":-1,
  3. "errormsg":"appid为空"
  4. }

本接口errorcode说明:

errorcode 说明(Description)
1 打印机编号SN不正确
2 打印机不存在
3 系统繁忙

修改打印机配置参数

请求url:

https://open.spyun.net/v1/printer/setting

请求方法:

PATCH

请求数据说明:

客户端发送到服务端的数据类型为:application/x-www-form-urlencoded,服务器返回的数据类型为:applicstion/json,数据编码为:UTF-8。

请求体body:

参数名 类型 是否必须 说明
appid string 是 用户唯一凭证
timestamp int 是 请求时unix时间戳(10位数字,精确到秒)
sn int 是 打印机编号
auto_cut int 否 自动切刀开关,1:开,0:关
voice string 否 语音开关,N:关,Y:滴滴滴,U:小语音,V:中语音,W:大语音
sign string 是 签名,详见签名生成算法

成功返回:

{"errorcode":0}

失败返回:

  1. {
  2. "errorcode":-1,
  3. "errormsg":"appid为空"
  4. }

本接口errorcode说明:

errorcode 说明(Description)
1 打印机编号SN不正确
2 打印机不存在
3 该打印机为语音限制机,不能设置真人语音
4 系统繁忙

删除打印机

请求url:

https://open.spyun.net/v1/printer/delete

请求方法:

DELETE

请求数据说明:

客户端发送到服务端的数据类型为:application/x-www-form-urlencoded,服务器返回的数据类型为:applicstion/json,数据编码为:UTF-8。

请求体body:

参数名 类型 是否必须 说明
appid string 是 用户唯一凭证
timestamp int 是 请求时unix时间戳(10位数字,精确到秒)
sn string 是 打印机编号
sign string 是 签名,详见签名生成算法

成功返回:

{"errorcode":0}

失败返回:

  1. {
  2. "errorcode":-1,
  3. "errormsg":"appid为空"
  4. }

本接口无特别errorcode。

打印订单

请求url:

https://open.spyun.net/v1/printer/print

请求方法:

POST

请求数据说明:

客户端发送到服务端的数据类型为:application/x-www-form-urlencoded,服务器返回的数据类型为:applicstion/json,数据编码为:UTF-8。

请求URL参数:

参数名 类型 是否必须 说明
appid string 是 用户唯一凭证
timestamp int 是 请求时unix时间戳(10位数字,精确到秒)
content string 是 打印内容,最大支持5000字节
sn string 是 打印机编号
times int 否 打印次数,默认为1,范围为1-5
sign string 是 签名,详见签名生成算法

注意:发过来的打印订单会缓存12小时,超时没有打印的订单将会自动清空

排版控制标签说明:(详情请参考SDK示例)

  1. <BR> :换行符
  2. <CUT> :切刀指令(主动切纸,仅限切刀打印机使用才有效果)
  3. <IMAGE> :打印图片指令(前提是预先在机器内置图片,出厂时设置好)
  4. <L1></L1>:放大一倍
  5. <L2></L2>:放大两倍
  6. <C></C>:居中,该标签可以与DL,L,H,W嵌套
  7. <C><L1></L1></C>:居中放大一倍(可嵌套)
  8. <H></H>:字体变高一倍
  9. <W></W>:字体变宽一倍
  10. <R></R>:右对齐
  11. <B></B>:字体加粗
  12. <QRCODE></QRCODE>:二维码,单个订单只能打印一个二维码
  13. <BC128_A></BC128_A>:条形码(一维条码),数字字母混合条形码,最多支持14位数字大写字母混合
  14. <BC128_C></BC128_C>:条形码(一维条码),数字条形码,最多支持22位数字

  15. 说明:来订单时默认播放新来单语音,若使用“申请退单”或“申请取消订单”的语音,请使用以下指令:
  16. <AUDIO-REFUND> :申请退单语音指令。播报内容为:有用户申请退单了
  17. <AUDIO-CANCEL> :申请取消订单语音指令。播报内容为:有用户申请取消订单了

成功返回:

  1. {
  2. "errorcode":0,
  3. "id":"5c1af88568e417349343b942", // 打印订单ID,查询订单状态时需要用到
  4. "create_time":"2019-01-01 00:00:00" // 订单接收时间
  5. }

失败返回:

  1. {
  2. "errorcode":-1,
  3. "errormsg":"appid为空"
  4. }

本接口errorcode说明:

errorcode 说明(Description)
1 打印机编号SN不正确
2 打印内容为空
3 打印内容超过5000字节
4 打印次数范围不为1-5
5 打印机不存在
6 系统繁忙

清空待打印订单

请求url:

https://open.spyun.net/v1/printer/cleansqs

请求方法:

DELETE

请求数据说明:

客户端发送到服务端的数据类型为:application/x-www-form-urlencoded,服务器返回的数据类型为:applicstion/json,数据编码为:UTF-8。

请求URL参数:

参数名 类型 是否必须 说明
appid string 是 用户唯一凭证
timestamp int 是 请求时unix时间戳(10位数字,精确到秒)
sn string 是 打印机编号
sign string 是 签名,详见签名生成算法

成功返回:

  1. {
  2. "errorcode":0, "cleannum":10 //清空的订单数
  3. }

失败返回:

  1. {
  2. "errorcode":-1,
  3. "errormsg":"appid为空"
  4. }

本接口errorcode说明:

errorcode 说明(Description)
1 打印机编号SN不正确
2 打印机不存在

查询打印订单状态

请求url:

https://open.spyun.net/v1/printer/order/status

请求方法:

GET

请求数据说明:

客户端发送到服务端的数据类型为:application/x-www-form-urlencoded,服务器返回的数据类型为:applicstion/json,数据编码为:UTF-8。

请求URL参数:

参数名 类型 是否必须 说明
appid string 是 用户唯一凭证
timestamp int 是 请求时unix时间戳(10位数字,精确到秒)
id string 是 打印订单ID,由"打印订单"接口返回
sign string 是 签名,详见签名生成算法

成功返回:

  1. {
  2. "errorcode":0,
  3. "status":true,// 打印状态,true:已打印,false:未打印
  4. "print_time":"2019-01-01 00:00:00" // 打印时间
  5. }

失败返回:

  1. {
  2. "errorcode":-1,
  3. "errormsg":"appid为空"
  4. }

本接口无特别errorcode。

查询打印机历史打印订单数

请求url:

https://open.spyun.net/v1/printer/order/number

请求方法:

GET

请求数据说明:

客户端发送到服务端的数据类型为:application/x-www-form-urlencoded,服务器返回的数据类型为:applicstion/json,数据编码为:UTF-8。

请求URL参数:

参数名 类型 是否必须 说明
appid string 是 用户唯一凭证
date string 是 查询日期,格式YYYY-MM-DD,如:2018-12-20
sn string 是 打印机编号
timestamp int 是 请求时unix时间戳(10位数字,精确到秒)
sign string 是 签名,详见签名生成算法

成功返回:

  1. {
  2. "errorcode":0,
  3. "number":18 // 已打印订单数
  4. }

失败返回:

  1. {
  2. "errorcode":-1,
  3. "errormsg":"appid为空"
  4. }

本接口errorcode说明:

errorcode 说明(Description)
1 打印机编号SN不正确
2 打印机不存在
3 查询日期不正确

签名生成算法


签名生成的通用步骤如下:

第一步:设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。


特别注意以下重要规则:

◆ 参数名ASCII码从小到大排序(字典序);
◆ 如果参数的值为空不参与签名,注意为空指空字符串,"0"不为空字符串,需参与签名;
◆ 参数名区分大小写;
◆ 验证调用返回或微信主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。

第二步:在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。

举例:

假设传送的参数如下:

  1. {
  2. "appid":"sp5c1314095ed15",
  3. "timestamp":"1544765945",
  4. "sn":"111111111",
  5. "pkey":"22222222",
  6. "name":"test"
  7. }

第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:

stringA="appid=sp5c1314095ed15&name=test&pkey=22222222&sn=111111111&timestamp=1544765873";

第二步:拼接API密钥:

stringSignTemp="stringA&appsecret=735aa25a15b75e6c1e0760823a22346a"
sign=MD5(stringSignTemp).toUpperCase()="3C24E50A3F1E0B4AB60FFA3A78E19E18"

注意:appid 和 appsecret 的值,请登陆管理后台查看开发者信息

商鹏云API-PHP版

点击下载

商鹏云API-Java版

点击下载

商鹏云API-NodeJS版

点击下载

商鹏云API-微信小程序版

点击下载

商鹏云API-Python版

点击下载

飞鹅云API-C#版

点击下载

如有其他技术问题,请加入商鹏云QQ群2:686838578
1、打印机单行打印多少个字符
商鹏58mm系列云打印机,一行打印16个汉字/32个字母
2、如何设置订单小票格式
参考开发文档,“打印订单”接口
3、二维码的大小是否可以调整
大小不能调整,根据内容的长度,动态生成
4、4G型号机器需要充值吗
要,机器从购买日起,送一年的4G流量费,过期后需要充值。
5、无线打印机断网了,订单会漏吗
不会漏单,由于网络异常情况导致打印机离线,打印机会不断的自动重连,订单是缓存在服务器上面的,机器重新联网后会继续打印之前未打印的订单。
6、打印订单的时候,刚好没纸了,会自动补打吗
会,重新装上纸后,会重新补打一份。
7、机器出现故障如何保修
先电话或微信咨询客服,确认问题,非人为因素机器免费保修一年。人为因素要收取一定维修费用。维修统一寄回工厂处理。
Copyright © 2023 ShangPeng Inc. All rights reserved 粤ICP备19003614号

暂无提供下载

说明书更新中,敬请期待!