电子面单云打印
云打印面单接口
提供给用户自主打单的服务,传入模板,面单号,以及附言等内容,蜂巢打印好的电子面单(PDF文件)会直接推送(WebSocket)给蜂巢开发者 。 如何处理推送结果见文档
一、请求参数
POST https://kf.fw199.com/gateway/sfexpress/waybill/cloudprint
| 参数名 | 类型 | 说明 | 示例 |
|---|---|---|---|
| appid | String | 合作伙伴AppId | uwkahf@jfs92 |
| timestamp | String | 当前时间戳 | |
| request_data | String | json格式的业务参数 | 见下表1.1 |
| custom_data | String | 蜂巢开发自定义传入的数据,蜂巢将面单打印完成后,将原样返回此字段的值。 | |
| sign | String | 接口签名 | 如何计算生成见示例代码 |
一(一)、参数request_data 的说明
| # | 属性名 | 字段含义 | 必选 | 类型 | 说明 |
|---|---|---|---|---|---|
| 1 | templateCode | 模板编码 | 是 | String | 模板编码 |
| 2 | documents | 业务数据 | 是 | array | 字段定义参考 1.3 模板固定字段 |
| 3 | version | 版本号 | 是 | String | 版本号,传固定值:1.0 |
| 4 | fileType | 生成面单文件格式 | 否 | String | pdf格式 |
一(二)、参数templateCode模板编码说明
| # | 模板编码 | 模板说明 | 样例 |
|---|---|---|---|
| 1 | fm_150_standard_ZLXXKWh | 丰密二联面单100mm*150mm | 查看 |
| 2 | fm_180_standard_ZLXXKWh | 丰密二联面单100mm*180mm | 查看 |
| 3 | fm_210_standard_ZLXXKWh | 丰密三联面单100mm*210mm | 查看 |
| 4 | fm_76130_standard_ZLXXKWh | 丰密二联面单76mm*130mm | 查看 |
| 5 | fm_150_international_ZLXXKWh | 丰密二联国际面单100mm*150mm | 查看 |
| 6 | fm_210_international_ZLXXKWh | 丰密三联国际面单100mm*210mm | 查看 |
一(三)、参数documents模板固定字段
| 固定字段名 | 类型 | 必 传 | 描述 | 值说明 |
|---|---|---|---|---|
| masterWaybillNo | String | 是 | 主运单号 | |
| branchWaybillNo | String | 否 | 子运单号 | 单票运单时不填 |
| backWaybillNo | String | 否 | 签回单号 | 打印签回单时,masterWayBillNo和branchWaybillNo为空 |
| seq | String | 否 | 该运单号打印时对应的顺序号,母运单序号=1,子运单号时递增该值 | 单票运单时不填,当打印子母单时必填 |
| sum | String | 否 | 子母件运单总数 | 单票运单时不填,当打印子母单时必填 |
| isPrintLogo | String | 否 | 如热敏贴纸上已印刷LOGO及服务电话则不需打印。如未印刷则需打印。 true:热敏纸上无印刷需要打印 | 不需要打印则不填 |
| remark | String | 否 | 自定义区域备注 |
二、请求示例代码
Java
/** * 云打印面单打印 * @throws Exception */ @Test public void cloudPrintWayBill() throws Exception {
String result ="";
// 单个订单时的示例 String jsonData = "{\"templateCode\": \"fm_76130_standard_ZLXXKWh\", \"version\":\"1.0\",\"fileType\":\"pdf\",\"documents\": [{\"masterWaybillNo\": \"SF1303262056675\" , \"isPrintLogo\":true,\"remark\":\"下午3点后再送1\"}]}";
// 子母件时示例// String jsonData = "{" +// " \"templateCode\": \"fm_76130_standard_ZLXXKWh\"," +// " \"version\": \"1.0\"," +// " \"fileType\": \"pdf\"," +// " \"documents\": [{" +// " \"masterWaybillNo\": \"SF7444432055982\"," +// " \"seq\": \"1\"," +// " \"sum\": \"2\"" +// " }, {" +// " \"masterWaybillNo\": \"SF7444432055982\"," +// " \"branchWaybillNo\": \"SF7444510471516\"," +// " \"seq\": \"2\"," +// " \"sum\": \"2\"" +// " } ]" +// "}";
CloseableHttpClient httpclient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost( Config.SFExpressCloudPrintWayBillUrl );
//业务参数 Map<String, String> data = new HashMap<String, String>(); data.put("appid", Config.AppId); data.put("custom_data", "112233ks");// 自定义数据,推送时会原样返回 data.put("request_data", jsonData); Long timestamp = System.currentTimeMillis() / 1000; data.put("timestamp", timestamp.toString());
// 参数签名 data.put("sign", Utils.Sign(data,Config.AppSecret)); List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>(); for (Map.Entry<String, String> entry : data.entrySet()) { params.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); } //发起POST请求 try { httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); HttpResponse httpResponse = httpclient.execute(httpPost); if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { result = EntityUtils.toString(httpResponse.getEntity()); } else { result = ("doPost Error Response: " + httpResponse.getStatusLine().toString()); } } catch (Exception e) { e.printStackTrace();
}
System.out.println(result);
}三、成功时返回结果
{ "code": 0, "message": "ok", "data": { "apiErrorMsg": "", "apiResponseID": "00017A8974A5113FD3B0FFA235CC5A3F", "apiResultCode": "A1000", "apiResultData": "{\"requestId\":\"5jE0kkXBcWHWpmVtnypf\",\"success\":true}" }, "trace_id": "Eftq41kKxoBRRRwIG51Z" }说明: code为0表示成功,非0为失败,message会包含失败原因。
四、失败时返回结果
{ "apiErrorMsg": "auth_error:partnerID:test010d_is_not_exist", "apiResponseID": "00016ABEC9ECCB3FE1C04106BA87EF3F", "apiResultCode": "A1011", "apiResultData": "{***}" }