外卖云打印机聚合接口。
如果你只是需要 API 的简单封装,可以考虑使用 Cloud Printing Api。
- 芯烨;
- 飞鹅;
- 商鹏。
注意:这些厂商各自都有常规打印机与云打印机系列,只有云打印机型号才被支持
CloudApi cloud1 = new FeieCloud(new CloudAuth("飞鹅账号", "飞鹅账号sceret")); // 飞鹅
CloudApi cloud2 = new XpyunCloud(new CloudAuth("芯烨云账号", "芯烨云账号sceret"));// 芯烨云
CloudApi cloud3 = new SpyunCloud(new CloudAuth("商鹏云账号", "商鹏云账号sceret"));// 商鹏云
有的厂商支持打印回调,如果你需要配置打印回调地址,则需要在创建 CloudApi 对象的时候指定:
CloudApi cloud1 = new FeieCloud(new CloudAuth("飞鹅账号", "飞鹅账号sceret"), "对调地址配置"); // 飞鹅
CloudApi cloud2 = new XpyunCloud(new CloudAuth("芯烨云账号", "芯烨云账号sceret"), "对调地址配置");// 芯烨云
Device device = new Device("551506419")
.setKey("t7rrdvax");
其他支持属性参见 Device.java
不同厂商的属性差异较大,暂时只取属性交集。
//创建一个打印单
Order order = new Order()
.setContent("初始化成功");
其他支持属性参见 Order.java
不同厂商的属性差异较大,暂时只取属性交集。
//查询指定设备
CloudResponse<Device> cloudResponse = cloud.queryDevice(device);
if(cloudResponse.isSuccess()){// 是否成功查询
cloudResponse.getSuccessEntity().isOnline(); // 打印机 是否在线
cloudResponse.getSuccessEntity().getStatus(); // 打印机 具体状态
}else{
Logger.error("失败原因", cloudResponse.getFailMessage());
}
//打印小票单
CloudResponse<Order> cloudResponse = cloud.printMsgOrder(device, order);
if(cloudResponse.isSuccess()){// 是否成功查询
Order order = cloudResponse.getEntity();
order.getId();//得到小票单的服务器id
}else{
Logger.error("失败原因", cloudResponse.getFailMessage());
}
//根据订单 Id 查询订单的打印情况
CloudResponse<Order> orderRes = cloud.queryOrder(order);
if(orderRes.isSuccess()){// 是否成功查询
cloudResponse.getSuccessEntity().isPrinted(); // 此订单是否打印成功
}else{
Logger.error("失败原因", orderRes.getFailMessage());
}
小票机只能打印小票订单,标签机只能打印标签订单,如果打印失败,优先检查型号是否正确。
参见 CloudApi 接口定义:CloudApi.java
服务端打印回调 差异:
平台差异 | 飞鹅 | 商鹏云 | 芯烨云 |
---|---|---|---|
服务器回调 | 支持 | 不支持 | 支持 |
常规接口 差异:
接口 | 飞鹅 | 商鹏云 | 芯烨云 |
---|---|---|---|
打印小票 | 支持 | 支持 | 支持 |
打印标签 | 支持 | 不支持 | 支持 |
打印超时 | 支持接口配置,最长24小时 | 固定48小时 | 支持接口配置,最长24小时 |
添加设备 | 支持 | 支持 | 支持 |
删除设备 | 支持 | 支持 | 支持 |
修改设备 | 支持 | 支持 | 支持 |
查询订单 | 支持 | 支持 | 支持 |
清空订单 | 支持 | 支持 | 支持 |
修改声音 | 不支持 | 支持 | 支持 |
配置切刀 | 不支持 | 支持 | 不支持 |
依赖项:
httpclient5 发送 http 请求
jackson 解析云商接口响应
因此,需要添加对应的依赖:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.14.0</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
<version>5.2.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.5</version>
</dependency>
如果你只想修改 httpclient5 的选项,可以自定义一个 CloseableHttpClient:
CloseableHttpClient cusomHttpClient = HttpClients.custom().build();
SimpleRequestClient newRequestClient = new SimpleRequestClient(cusomHttpClient)
CloudApi cloud = new FeieCloud(new CloudAuth("xxx", "yyy")).setRequestClient(newRequestClient);
如果你想完全替换掉 httpclient5,那就根据你自己所选择的 http 支持库,实现 RequestClient 接口 即可:
RequestClient newRequestClient = new CustomRequestClient()
CloudApi cloud = new FeieCloud(new CloudAuth("xxx", "yyy")).setRequestClient(newRequestClient);
由于 JSON 解析比较单一,所以没有提供配置的空间,如果你想配置,实现 ResponseParser 接口 即可:
ResponseParser newResponseParser = new CustomResponseParser()
CloudApi cloud = new FeieCloud(new CloudAuth("xxx", "yyy")).setResponseParser(newResponseParser);
- 通用请求支持。