java查询顺丰路由(物流详情)信息

(参考了 https://www.cnblogs.com/lihao1017/p/17361972.html 这篇文章)

最终返回的参数如图:
在这里插入图片描述
写一下自己的笔记~

1.先在“顺丰开放平台”注册账号并进行实名认证

顺丰开放平台:https://open.sf-express.com/
不会的还可以跟着教程去操作,非常详细
在这里插入图片描述
认证成功后可以得到 顾客编码、沙箱验证码、生产校验码:
在这里插入图片描述

2.去业务中心创建开发者应用并测试以及上线

在这里插入图片描述
创建自己的应用,然后点进去关联API
选择自己需要的API 这里我只需要查询物流的信息,于是只需要关联“路由查询接口”
在这里插入图片描述
然后点后面的“测试”,注意不要自己去点到那个测试页面进行测试,一定是从这里点进去!
在这里插入图片描述

测试的那个校验码就是你的沙箱校验码,请求参数就用它默认的参数不用改
参数就用它默认的参数,不用改

测试好了之后也要记得回到上面那个地方还要测试一遍,记得也是从后面那个测试按钮点进去,后面这一遍测试的校验码是生产校验码了
最后还要回到这个地方,点击“上线”,这样你的接口就可以用了
【!!!注意,如果没有点击上线的话,接口会报没有权限!】
上线之后是这样的:
在这里插入图片描述
至此,这里就配置好了,接下来准备自己的项目部分

3.下载SDK,然后将jar包导进自己的项目里

SDK下载地址:https://open.sf-express.com/developSupport/976720?activeIndex=399112
直接下载最新版本就行
然后打开下载下来的压缩包,点进去找到里面的jar包,导进自己的项目里
在这里插入图片描述
将jar包导进项目的方法可参考:https://blog.csdn.net/m0_73900214/article/details/131400180
这一步也可以替换成引入依赖:

        <!--顺丰-->
        <dependency>
            <groupId>com.sf.csim</groupId>
            <artifactId>SF-CSIM-EXPRESS-SDK</artifactId>
            <version>0.0.1</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/SF-CSIM-EXPRESS-SDK-V2.1.7.jar</systemPath>
        </dependency>

4.开始写代码

1.顺丰配置类

/**
 * @author 
 * @date 
 * @desc 顺丰快递 丰桥接口配置类
 */
@Data
public class ShunFengConfig {
    public static String CLIENT_CODE = "";  //此处替换为您在丰桥平台获取的顾客编码
    public static String CHECK_WORD = "";//生产校验码
    public static String CHECK_WORD_BOX = "";//沙箱校验码

    //沙箱环境的地址 -PRO
    public static String CALL_URL_BOX = "https://sfapi-sbox.sf-express.com/std/service";
    //生产环境的地址 -PRO
    public static String CALL_URL_PROD = "https://sfapi.sf-express.com/std/service";
}

2.核心业务代码

/**
     * 查询顺丰路由信息
     * @param id 顺丰快递单号
     * @param phone 收件人手机号后四位
     * @return
     * @throws UnsupportedEncodingException
     */
    public JSONObject sfRoutes(String id, String phone) throws UnsupportedEncodingException {
        IServiceCodeStandard standardService = ExpressServiceCodeEnum.EXP_RECE_SEARCH_ROUTES;//查路由

        // set common header
        Map<String, String> params = new HashMap<String, String>();
        String timeStamp = String.valueOf(System.currentTimeMillis());
        String msgData ="{\"trackingType\":1,\"trackingNumber\":[\""+id+"\"],\"checkPhoneNo\":\""+phone+"\"}";//无月结卡号通过运单和手机后4位即可
        params.put("partnerID", ShunFengConfig.CLIENT_CODE);  // 顾客编码 ,对应丰桥上获取的clientCode
        params.put("requestID", UUID.randomUUID().toString().replace("-", ""));
        params.put("serviceCode",standardService.getCode());// 接口服务码
        params.put("timestamp", timeStamp);
        params.put("msgData", msgData);
        params.put("msgDigest", CallExpressServiceTools.getMsgDigest(msgData,timeStamp,ShunFengConfig.CHECK_WORD));

        long startTime = System.currentTimeMillis();

        log.debug("====调用实际请求:" + params);
        String result = HttpClientUtil.post(ShunFengConfig.CALL_URL_PROD, params);

        log.debug("====调用丰桥的接口服务代码:" + (standardService.getCode()) + " 接口耗时:"+ (System.currentTimeMillis()-startTime)+"====");
        log.debug("===调用地址 ==="+ShunFengConfig.CALL_URL_PROD);
        log.debug("===顾客编码 ==="+ShunFengConfig.CLIENT_CODE);
        log.debug("===返回结果:" +result);
        JSONObject apiResultData = JSONUtil.parseObj(JSONUtil.parseObj(result).get("apiResultData"));
        if(!apiResultData.getBool("success")){
            throw new BizException(ResultStatus.Common.ERROR_ADD_FAIL);
        }
        JSONObject resultMsgData = JSONUtil.parseObj(apiResultData.get("msgData"));
        JSONArray routeResps = JSONUtil.parseArray(resultMsgData.get("routeResps"));
        JSONObject routeRespsObj = routeResps.getJSONObject(0);
        return routeRespsObj;
    }

3.接口调用

    @ApiOperation(value = "获取顺丰快递物流")
    @PostMapping("/sfRoutes")
    public JSONObject sfRoutes(@RequestBody QuerySfRoutesReq req) throws UnsupportedEncodingException {
        return service.sfRoutes(req.getTrackingNumber(), req.getPhone());
    }
@Data
public class QuerySfRoutesReq {

    @ApiModelProperty("快递单号")
    private String trackingNumber;
    @ApiModelProperty("手机号码后四位")
    private String phone;
}

4.测试
在这里插入图片描述
搞定!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值