电子面单云打印推送结果
此接口用于云打印文件推送,将文件推送给对接的客户,客户收到返回结果后,可以进pdf文件进行打印或是处理订单的状态等 。 蜂巢开发者与蜂巢之间采用WebSocket通讯,可参照订单推送这部分,只是增加一个顺丰云打印事件。
一、消息事件
| 消息topic | 说明 |
|---|---|
| sf_push_cloud_print_waybills | 将渲染打印完成的电子面单(pdf)格式内容,推送给蜂巢开发者 |
二、事件处理
@Override public void onMessageEvent(String message) {
System.out.println("onMessageEvent:" + message); SyncTradeResponse syncTradeResponse = JSON.parseObject(message, SyncTradeResponse.class); if (syncTradeResponse.getCode() == 0) {
if (syncTradeResponse.getTopic().equals("tb_push_wait_seller_send_trade")) { // 这里处理待发货订单的业务逻辑 SyncTrade syncTrade = JSON.parseObject(syncTradeResponse.getData(), SyncTrade.class); System.out.println("收到待发订单,sellerNick:"+ syncTrade.getSellerNick() +",订单号:" + syncTrade.getTid() );
} else if (syncTradeResponse.getTopic().equals("sf_push_cloud_print_waybills")){ sfPushCloudPrintWaybills(syncTradeResponse); }
// 如果是需要确认的消息,则确认此消息,否则服务端消息将会重发。 if ( syncTradeResponse.getUuid() != null && !syncTradeResponse.getUuid().equals("")){ send("{\"cmd\":\"ack_sync_data\", \"seq\":\"" + syncTradeResponse.getUuid() + "\"}"); }
} else { System.out.println("服务端返回业务错误:"+ syncTradeResponse.getMsg()); }
System.out.println("========onMessageEvent=========== \n " + message + "\n" ); }
/** * 将电子面单写入到文件,文件格式为Pdf * @param response */ private void sfPushCloudPrintWaybills(SyncTradeResponse response ) { try {
Base64.Decoder decoder = Base64.getDecoder(); SFCloudPrintWaybill sfCloudPrintWaybill = JSON.parseObject(response.getData(), SFCloudPrintWaybill.class); // 在下面单请求传入custom_data时,会原样返回过来 System.out.println("customData:" + sfCloudPrintWaybill.getCustomData()); System.out.println("运单号:" + sfCloudPrintWaybill.getWaybillNo()); String fileName = sfCloudPrintWaybill.getFileName(); File file = new File(fileName); OutputStream os = new FileOutputStream(file,true); byte[] data = decoder.decode(sfCloudPrintWaybill.getContent()); os.write(data, 0, data.length); os.flush(); os.close(); System.out.println("生成文件成功");
} catch (Exception ex) { ex.printStackTrace(); }
}生成的电子面单pdf文件示例。
三、返回参数
{ "areaNo": "1", "content" : "这里是base64编码的文件内容", "fileName": "ZLXXKWh_qPhFpmyDxXPmH0X1cqAi_SF7444432055982_fm_76130_standard_ZLXXKWh_1_1_1.pdf", "fileType": "pdf", "pageNo": "1", "seqNo": "1", "templateCode": "fm_76130_standard_ZLXXKWh", "waybillNo": "SF7444432055982", "custom_data": "112233ks"}三(一)、字段说明
| # | 属性名 | 必填 | 默认值 | 描述 |
|---|---|---|---|---|
| 1 | content | 是 | 文件数据,base64.encode后的数据 | |
| 2 | waybillNo | 是 | 顺丰运单号(子母单为子单号) | |
| 3 | fileName | 是 | 文件名(规则:clientCode+””+requestID+””+templateCode+””+单号+””+业务数据列表序号+””+联号+””+页号) | |
| 4 | fileType | 是 | 文件类型(pdf) | |
| 5 | seqNo | 是 | 面单序号(批量打印场景,为documents的序号) | |
| 6 | areaNo | 是 | 联编号(大客户面单为固定值:1) | |
| 7 | pageNo | 是 | 每联的页号(大客户面单为固定值:1) | |
| 8 | templateCode | 是 | 模板编码 | |
| 9 | custom_data | 是 | 请求调用“电子面单云打印”接口时传入的值,原样返回 |
附件