我们公司是做电商平台的,之前有接到过需求是对接顺丰快递,主要是用于查询物流信息以及预计派送时间。我这边经过查询相关资料整理出了以下代码。

对接顺丰快递是通过丰桥api实现的,首先需要到顺丰开放平台注册一个账号。

网址如下,大家自行注册:顺丰开放平台

注册成功以后点击控制台选择开发者对接

第一次进来是需要创建一个自己的应用的具体的细节可以参考一下文档,我这边就不在进行讲解了:顺丰开放平台

因为我这边用到的是查物流状态和预计派送信息所以就只签约了这些。其它的对接起来都是差不多的,只是传入的参数和返回的值不一样,你们只需要根据要求传参和接收对应返回值即可。我这边就直接上代码咯。

一、下载SDK

目前官方提供SDK只有jar包,不知道是不是因为我还没有找到,官方的SDK文档如下:顺丰开放平台

将下载好的项目里面的jar导入到自己的项目里面。如果是boot项目大家可以把jar发布到自己的本地仓库里面 :第三方jar上传本地仓库_批量上传jar到三方库_超哥带你上王者的博客-CSDN博客

二、顺丰配置类

/*** @author lihao* @create 2023-03-01 13:29* @desc 顺丰快递 丰桥接口配置类**/
@Data
public class ShunFenConfig {public static String CLIENT_CODE = "";  //此处替换为您在丰桥平台获取的顾客编码public static String CHECK_WORD = "";//生产校验码public static String CHECK_WORD_BOX = "";//沙箱校验码//沙箱环境的地址 -PROpublic static String CALL_URL_BOX = "https://sfapi-sbox.sf-express.com/std/service";//生产环境的地址 -PROpublic static String CALL_URL_PROD = "https://sfapi.sf-express.com/std/service";}

三、核心业务代码

/**
* 查询顺丰路由信息
* @param id 顺丰快递单号
* @param phone 收件人手机号后四位
* @return
* @throws UnsupportedEncodingException
*/
private JSONObject sfRoutes(String id,String phone) throws UnsupportedEncodingException{//IServiceCodeStandard standardService = ExpressServiceCodeEnum.EXP_RECE_CREATE_ORDER; //下订单// IServiceCodeStandard standardService = ExpressServiceCodeEnum.EXP_RECE_SEARCH_ORDER_RESP; //查订单//  IServiceCodeStandard standardService = ExpressServiceCodeEnum.EXP_RECE_UPDATE_ORDER;//订单取消//   IServiceCodeStandard standardService = ExpressServiceCodeEnum.EXP_RECE_FILTER_ORDER_BSP;//订单筛选IServiceCodeStandard standardService = ExpressServiceCodeEnum.EXP_RECE_SEARCH_ROUTES;//查路由//    IServiceCodeStandard standardService = ExpressServiceCodeEnum.EXP_RECE_GET_SUB_MAILNO;//子单号//  IServiceCodeStandard standardService = ExpressServiceCodeEnum.EXP_RECE_QUERY_SFWAYBILL;//查运费// IServiceCodeStandard standardService = ExpressServiceCodeEnum.EXP_RECE_REGISTER_ROUTE;//注册路由// IServiceCodeStandard standardService = ExpressServiceCodeEnum.EXP_RECE_CREATE_REVERSE_ORDER;//退货下单//   IServiceCodeStandard standardService = ExpressServiceCodeEnum.EXP_RECE_CANCEL_REVERSE_ORDER;//退货消单//   IServiceCodeStandard standardService = ExpressServiceCodeEnum.EXP_RECE_WANTED_INTERCEPT;//截单转寄//   IServiceCodeStandard standardService = ExpressServiceCodeEnum.EXP_RECE_QUERY_DELIVERTM;//时效标准及价格查询//  IServiceCodeStandard standardService = ExpressServiceCodeEnum.COM_RECE_CLOUD_PRINT_WAYBILLS;//面单打印//  IServiceCodeStandard standardService = ExpressServiceCodeEnum.EXP_RECE_UPLOAD_ROUTE;//路由上传//   IServiceCodeStandard standardService = ExpressServiceCodeEnum.EXP_RECE_SEARCH_PROMITM;//预计派送时间查询//  IServiceCodeStandard standardService = ExpressServiceCodeEnum.EXP_EXCE_CHECK_PICKUP_TIME;//揽件服务时间查询//  IServiceCodeStandard standardService = ExpressServiceCodeEnum.EXP_RECE_VALIDATE_WAYBILLNO;//运单号合法性校验CallExpressServiceTools tools=CallExpressServiceTools.getInstance();// set common headerMap<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", ShunFenConfig.CLIENT_CODE);  // 顾客编码 ,对应丰桥上获取的clientCodeparams.put("requestID", UUID.randomUUID().toString().replace("-", ""));params.put("serviceCode",standardService.getCode());// 接口服务码params.put("timestamp", timeStamp);params.put("msgData", msgData);params.put("msgDigest", tools.getMsgDigest(msgData,timeStamp,ShunFenConfig.CHECK_WORD));long startTime = System.currentTimeMillis();log.debug("====调用实际请求:" + params);String result = HttpClientUtil.post(ShunFenConfig.CALL_URL_PROD, params);log.debug("====调用丰桥的接口服务代码:" + (standardService.getCode()) + " 接口耗时:"+ (System.currentTimeMillis()-startTime)+"====");log.debug("===调用地址 ==="+ShunFenConfig.CALL_URL_PROD);log.debug("===顾客编码 ==="+ShunFenConfig.CLIENT_CODE);log.debug("===返回结果:" +result);JSONObject apiResultData =JSONObject.parseObject(JSONObject.parseObject(result).getString("apiResultData"));if(!apiResultData.getBoolean("success")){throw new CommonException(apiResultData.getString("errorMsg"));}JSONObject resultMsgData = JSONObject.parseObject(apiResultData.getString("msgData"));JSONArray routeResps = JSONArray.parseArray(resultMsgData.getString("routeResps"));JSONObject routeRespsObj = routeResps.getJSONObject(0);return routeRespsObj;}
/**
* 查询顺丰快递预计派送时间
* @param id 顺丰快递单号
* @param phone 手机后四位
* @return
*/
private String arrivalTime(String id,String phone) throws UnsupportedEncodingException {IServiceCodeStandard standardService = ExpressServiceCodeEnum.EXP_RECE_SEARCH_PROMITM;//预计派送时间查询CallExpressServiceTools tools=CallExpressServiceTools.getInstance();// set common headerMap<String, String> params = new HashMap<String, String>();String timeStamp = String.valueOf(System.currentTimeMillis());String msgData ="{\"searchNo\":\""+id+"\",\"checkType\":1,\"checkNos\":[\""+phone+"\"]}";//无月结卡号通过运单和手机号params.put("partnerID", ShunFenConfig.CLIENT_CODE);  // 顾客编码 ,对应丰桥上获取的clientCodeparams.put("requestID", UUID.randomUUID().toString().replace("-", ""));params.put("serviceCode",standardService.getCode());// 接口服务码params.put("timestamp", timeStamp);params.put("msgData", msgData);params.put("msgDigest", tools.getMsgDigest(msgData,timeStamp,ShunFenConfig.CHECK_WORD));long startTime = System.currentTimeMillis();log.debug("====调用实际请求:" + params);String result = HttpClientUtil.post(ShunFenConfig.CALL_URL_PROD, params);log.debug("====调用丰桥的接口服务代码:" + (standardService.getCode()) + " 接口耗时:"+ (System.currentTimeMillis()-startTime)+"====");log.debug("===调用地址 ==="+ShunFenConfig.CALL_URL_PROD);log.debug("===顾客编码 ==="+ShunFenConfig.CLIENT_CODE);log.debug("===返回结果:" +result);JSONObject apiResultData =JSONObject.parseObject(JSONObject.parseObject(result).getString("apiResultData"));if(!apiResultData.getBoolean("success")){log.debug(apiResultData.getString("errorMsg"));return "";}JSONObject resultMsgData = JSONObject.parseObject(apiResultData.getString("msgData"));String promiseTm = resultMsgData.getString("promiseTm");return promiseTm;}

JAVA对接顺丰快递(丰桥API)相关推荐

  1. java对接顺丰(丰桥)官方接口查询物流附小程序物流模板

    java对接顺丰接口查询物流 前提 丰桥是没有客服的,旁边的客服和群都是摆设,"同性交友会"罢了 准备 注册丰桥账号,申请开发者权限,这个的话是秒过,然后去申请接口 申请之后,如果 ...

  2. java 对接顺丰快递进行寄件操作 (使用RestTemplate 请求)

    相关资料 顺丰统一接入平台 :https://freight.sf-express.com/api/api.html#id=28 顺丰在线查询物流信息地址: https://www.sf-expres ...

  3. java对接顺丰(丰桥)查询物流接口

    我这边只对接了顺丰的查询路由的接口.因为我公司下单是通过顺丰公司下单的.就是他们的快递员下单.我们的人员贴着快递单号.没有订单号.查询的时候也是通过物流单去查询的.本来准备用快递鸟去查询.但是快递鸟查 ...

  4. java接入顺丰快递api(有可运行demo)(包括下单、路由查询、路由推送、查询订单状态、取消订单)

    故事发生的背景: 公司快递业务这一块之前接入的是快递100,由于快递100的推送的实时性没有达到公司的要求,而且公司全都用的顺丰快递,所以直接接入了顺丰快递的api.demo文章最后下载(新增了jso ...

  5. 微信小程序对接顺丰(丰桥)物流查询接口

    如果看了上篇文章就知道.我先是用java去对接了丰桥物流接口.老本行对接还是快.毕竟java涉猎时间最长的.对接时间也是最短的.java对接成功以后.就开始转移到小程序.因为手里已经上线的是微信小程序 ...

  6. 对接顺丰(丰桥)查询物流信息

    一.简介 市面上快递查询整合的平台非常多,但是在有每天几千上万次的查询量时(比如做电商平台的),就需要收费.可以通过直接接入官网的平台进行对接.截止至2022-3-18日,顺丰的限制为500000 / ...

  7. JAVA接入顺丰快递

    丰桥地址 下载到项目中后放到lib文件夹下,引入: <dependency><groupId>sf.sdk</groupId><artifactId>s ...

  8. c# 中通快递对接_C# 实现快递鸟API接口签名 快递查询对接更高效

    /// ///字符串MD5加密/// ///要加密的字符串 ///编码方式 ///密文 private string MD5(string str, stringcharset) {byte[] bu ...

  9. 顺丰快递单号查询接口物流路由跟踪信息快递鸟api对接教程

    目录 1.完成前期准备工作 2.API接口 3.请求参数(Headers) 4.请求参数(Body) 5.返回参数(Return) 6.请求完整报文(示例) 7.成功返回报文(示例) 8.失败返回报文 ...

最新文章

  1. 上传图片到第三方服务器
  2. linux rpm包解压到当前目录
  3. 关于SQL Tuning的知识体系
  4. 20000赫兹的声音试听下载_好听又不贵,DLC球顶双面镀铍动圈:七赫兹i99
  5. vue双向数据绑定的原理
  6. linux 进程通信机制,linux的进程通信机制小结
  7. HTML---初识HTML
  8. (5)verilog语言编写呼吸灯
  9. iframe标签里面的页面元素只读
  10. 中介者模式android,Android[高级教程] 设计模式之六 中介者模式(二)
  11. Crackme015
  12. hadoop hive集群_大数据专栏 | Hive 安装初体验
  13. NoSQL数据库的四大分类及分析
  14. Excel精度问题。
  15. JS技能点--日期时间格式化
  16. 制作透明背景的微信头像
  17. 复习330+天,我总结了一份对大多数人都适用的复习经验
  18. PNAS | 朱永官院士团队单细胞拉曼结合靶向宏基因组揭示土壤活性抗生素耐药组...
  19. 微信小程序day01
  20. 强化学习适合解决什么样的问题

热门文章

  1. 【转】UML建模系列文章总结
  2. 制作出与众不同的报表
  3. 分享一下韩寒的经典语录
  4. 《一、企业级SVN运维实战:SVN服务部署》
  5. python 微信小程序签到系统_微信小程序签到功能
  6. python 的numpy库中的mean()函数用法
  7. mysql密码修改失败问题解决
  8. i386 和amd64 的意思
  9. Dubbo的负载均衡策略
  10. 美团技术分享:深度解密美团的分布式ID生成算法