子单号申请接口

客户在下单成功后 ,因业务场景需要可以调用此接口获取更多的子单号数。但不能超过配置的最大数/1200个。

1.请求参数:

POST https://kf.fw199.com/gateway/sfexpress/order/getsubmailno

参数名 类型 说明 示例
appid String 合作伙伴AppId uwkahf@jfs92
timestamp String 当前时间戳
request_data String json格式的业务参数 见下表1.1
client_code String 顺丰的客户编码
check_word String 顺丰的校验码
sign String 接口签名 如何计算生成见示例代码
1.1 参数request_data 的说明
# 属性名 类型(约束) 必填 默认值 描述
1 orderId String(64) 客户订单号
2 parcelQty Integer 子单号数

2. 请求示例代码(Java)

 /**
     * 子单号申请接口
     * @throws Exception
     */
    @Test
    public void getSubMailNo() throws Exception {

        String result =""; 
        // dealType:2表示取消
        String jsonData  = "{" +
                "    \"orderId\": \"QIAO-20200618-108\"," +
                "    \"parcelQty\": 3" +
                "}"; 
        CloseableHttpClient httpclient = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost( Config.SFExpressGetSubMailNosUrl ); 
        //业务参数
        Map<String, String> data = new HashMap<String, String>();
        data.put("appid",  Config.AppId);
        data.put("request_data", jsonData);
        data.put("client_code",  Config.SFClientCode);
       data.put("check_word",  Config.SFCheckWord);
        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": "00017A8A28A8E03FD93F21C183CB463F",
        "apiResultCode": "A1000",
        "apiResultData": "{\"success\":true,\"errorCode\":\"S0000\",\"errorMsg\":null,\"msgData\":{\"orderId\":\"QIAO-20200618-201\",\"waybillNoInfoList\":[{\"waybillType\":2,\"waybillNo\":\"SF2040562934581\"},{\"waybillType\":2,\"waybillNo\":\"SF2040562934590\"},{\"waybillType\":2,\"waybillNo\":\"SF2040562934606\"},{\"waybillType\":1,\"waybillNo\":\"SF1328425290964\"}]}}"
    },
    "trace_id": "bovpGGuNRZ4EhffgBFTc"
}

说明: code为0表示成功,非0为失败,message会包含失败原因。

4. 元素<响应> apiResultData

# 属性名 类型(约束) 必填 默认值 描述
1 success boolean 返回状态 true/false
2 errorCode Integer 条件 错误代码
3 errorMsg String 条件 错误详细信息
4 msgData Object 条件 如果success为true,这个字段代表筛单结果;Success为false时,此字段为空
4.1 返回参数msgData说明:
# 属性名 类型(约束) 必填 默认值 描述
1 orderId String(64) 客户订单号
2 parcelQty Integer 子单号数
3 waybillNoInfoList List 运单号
4.2 返回参数waybillNoInfoList的说明

waybillType :运单号类型 , 1:母单 2 :子单 3 : 签回单

文档更新时间: 2023-03-14 17:06   作者:admin