云打印面单接口
提供给用户自主打单的服务,传入模板,面单号,以及附言等内容,蜂巢打印好的电子面单(PDF文件)会直接推送(WebSocket)给蜂巢开发者 。 如何处理推送结果见文档
1.请求参数:
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 | 接口签名 | 如何计算生成见示例代码 |
1.1 参数request_data 的说明
# | 属性名 | 字段含义 | 必选 | 类型 | 说明 |
---|---|---|---|---|---|
1 | templateCode | 模板编码 | 是 | String | 模板编码 |
2 | documents | 业务数据 | 是 | array | 字段定义参考 1.3 模板固定字段 |
3 | version | 版本号 | 是 | String | 版本号,传固定值:1.0 |
4 | fileType | 生成面单文件格式 | 否 | String | pdf格式 |
1.2 参数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 | 查看 |
1.3 参数documents模板固定字段
固定字段名 | 类型 | 必 传 | 描述 | 值说明 |
---|---|---|---|---|
masterWaybillNo | String | 是 | 主运单号 | |
branchWaybillNo | String | 否 | 子运单号 | 单票运单时不填 |
backWaybillNo | String | 否 | 签回单号 | 打印签回单时,masterWayBillNo和branchWaybillNo为空 |
seq | String | 否 | 该运单号打印时对应的顺序号,母运单序号=1,子运单号时递增该值 | 单票运单时不填,当打印子母单时必填 |
sum | String | 否 | 子母件运单总数 | 单票运单时不填,当打印子母单时必填 |
isPrintLogo | String | 否 | 如热敏贴纸上已印刷LOGO及服务电话则不需打印。如未印刷则需打印。 true:热敏纸上无印刷需要打印 | 不需要打印则不填 |
remark | String | 否 | 自定义区域备注 |
2. 请求示例代码(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);
}
3. 成功时返回结果如下:
{
"code": 0,
"message": "ok",
"data": {
"apiErrorMsg": "",
"apiResponseID": "00017A8974A5113FD3B0FFA235CC5A3F",
"apiResultCode": "A1000",
"apiResultData": "{\"requestId\":\"5jE0kkXBcWHWpmVtnypf\",\"success\":true}"
},
"trace_id": "Eftq41kKxoBRRRwIG51Z"
}
说明: code为0表示成功,非0为失败,message会包含失败原因。
4. 失败时返回结果如下:
{
"apiErrorMsg": "auth_error:partnerID:test010d_is_not_exist",
"apiResponseID": "00016ABEC9ECCB3FE1C04106BA87EF3F",
"apiResultCode": "A1011",
"apiResultData": "{***}"
}
文档更新时间: 2023-03-14 17:06 作者:admin