电子面单云打印推送结果
此接口用于云打印文件推送,将文件推送给对接的客户,客户收到返回结果后,可以进pdf文件进行打印或是处理订单的状态等 。 蜂巢开发者与蜂巢之间采用WebSocket通讯,可参照订单推送这部分,只是增加一个顺丰云打印事件。
1. 消息事件
消息topic | 说明 |
---|---|
sf_push_cloud_print_waybills | 将渲染打印完成的电子面单(pdf)格式内容,推送给蜂巢开发者 |
2. 事件处理
@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文件示例。
3 返回参数response.getData说明
{
"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"
}
3.1 字段说明
# | 属性名 | 必填 | 默认值 | 描述 |
---|---|---|---|---|
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 | 是 | 请求调用“电子面单云打印”接口时传入的值,原样返回 |
文档更新时间: 2021-09-07 11:08 作者:admin