云打印面单接口

提供给用户自主打单的服务,传入模板,面单号,以及附言等内容,蜂巢打印好的电子面单(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