丰桥地址

下载到项目中后放到lib文件夹下,引入:

 <dependency><groupId>sf.sdk</groupId><artifactId>sf</artifactId><version>1.0</version><scope>system</scope><systemPath>${project.basedir}/src/main/resources/lib/SF-CSIM-EXPRESS-SDK-V1.6.jar</systemPath></dependency>

需要从丰桥获取的参数:

    @Value("${sf.clientCode}")private String clientCode;    //商户号@Value("${sf.checkword}")private String checkword;    //验证码@Value("${sf.custid}")private String custid;        //月付id 我这里使用的是寄付月结

顺丰使用xml做数据交互,这里贴一些简单的转换工具类
具体的字段含义查看顺丰的文档
快速下单转换xml方法:

 public static String getOrderServiceRequestXml(Map<String, String> params) {StringBuilder strBuilder = new StringBuilder();strBuilder.append("<Request service='OrderService' lang='zh-CN'>");strBuilder.append("<Head>" + params.get("clientCode") + "</Head>");strBuilder.append("<Body>");strBuilder.append("<Order").append(" ");strBuilder.append("orderid='" + params.get("orderid") + "'").append(" ");//返回顺丰运单号strBuilder.append("express_type='1'").append(" ");//寄件方信息strBuilder.append("j_province='" + params.get("j_province") + "'").append(" ");strBuilder.append("j_city='" + params.get("j_city") + "'").append(" ");strBuilder.append("j_company='" + params.get("j_company") + "'").append(" ");strBuilder.append("j_contact='" + params.get("j_contact") + "'").append(" ");strBuilder.append("j_tel='" + params.get("j_tel") + "'").append(" ");strBuilder.append("j_address='" + params.get("j_address") + "'").append(" ");//收件方信息strBuilder.append("d_province='" + params.get("d_province") + "'").append(" ");strBuilder.append("d_city='" + params.get("d_city") + "'").append(" ");strBuilder.append("d_county='" + params.get("d_county") + "'").append(" ");strBuilder.append("d_company='" + params.get("d_company") + "'").append(" ");strBuilder.append("d_tel='" + params.get("d_tel") + "'").append(" ");strBuilder.append("d_contact='" + params.get("d_contact") + "'").append(" ");strBuilder.append("d_address='" + params.get("d_address") + "'").append(" ");//货物信息strBuilder.append("parcel_quantity='1'").append(" ");strBuilder.append("pay_method='3'").append(" ");strBuilder.append("custid ='" + params.get("custid") + "'").append(" ");strBuilder.append("customs_batchs=''").append(" ");strBuilder.append("cargo='服装'").append(">");strBuilder.append("<AddedService name='COD' value='1.01' value1='7551234567' />");strBuilder.append("</Order>");strBuilder.append("</Body>");strBuilder.append("</Request>");return strBuilder.toString();}

订单查询接口是在下单后没有返回运单号时主动查询运单号使用的,这里我一开始理解为查询物流信息的接口了 ̄□ ̄||

  /*** 获取顺丰订单结果查询接口xml** @param params* @return*/public static String getOrderSearchServiceRequestXml(Map<String, String> params) {String orderNo = params.get("orderNo");StringBuilder strBuilder = new StringBuilder();strBuilder.append("<Request service='OrderSearchService' lang='zh-CN'>");strBuilder.append("<Head>" + params.get("clientCode") + "</Head>");strBuilder.append("<Body>");strBuilder.append("<OrderSearch").append(" ");strBuilder.append("orderid='" + orderNo + "'").append(" /> ");strBuilder.append("</Body>");strBuilder.append("</Request>");return strBuilder.toString();}

除了下单接口参数略多一下,其他接口大致相同
查询物流信息接口

  /*** 获取顺丰路由查询接口xml** @param params* @return*/public static String getRouteServiceRequestXml(Map<String, String> params) {StringBuilder strBuilder = new StringBuilder();strBuilder.append("<Request service='RouteService' lang='zh-CN'>");strBuilder.append("<Head>" + params.get("clientCode") + "</Head>");strBuilder.append("<Body>");strBuilder.append("<RouteRequest").append(" ");strBuilder.append("tracking_type='1'").append(" ");strBuilder.append("method_type='1'").append(" ");strBuilder.append("tracking_number='" + params.get("mailno") + "'").append(" >");strBuilder.append("</RouteRequest>");strBuilder.append("</Body>");strBuilder.append("</Request>");return strBuilder.toString();}

取消订单接口

    /*** 取消订单** @param params* @return*/public static String getConfirmRequestXml(Map<String, String> params) {StringBuilder strBuilder = new StringBuilder();strBuilder.append("<Request service='OrderConfirmService' lang='zh-CN'>");strBuilder.append("<Head>").append(params.get("clientCode")).append("</Head>");strBuilder.append("<Body>");strBuilder.append("<OrderConfirm").append(" ");strBuilder.append("orderid='").append("orderNo").append("' ");strBuilder.append("dealtype='2'>").append(" ");strBuilder.append("</OrderConfirm>");strBuilder.append("</Body>");strBuilder.append("</Request>");return strBuilder.toString();}

传入参数得到拼接好的xml数据后开始请求顺丰:

  public String callSf(String xmlStr) {CallExpressServiceTools client = CallExpressServiceTools.getInstance();log.info("开始调用顺丰接口下单,请求报文:{}", xmlStr);String respXml = client.callSfExpressServiceByCSIM(null, xmlStr, clientCode, checkword);log.info("请求完成,返回报文:{}", respXml);return respXml;}

得到报文后在进行解析即可
总体来说使用顺丰新的sdk接入还是非常方便的。
记录下代码,方面下次使用。

JAVA接入顺丰快递相关推荐

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

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

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

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

  3. JAVA对接顺丰快递(丰桥API)

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

  4. java cs 顺丰运单_JAVA接入顺丰快递

    下载到项目中后放到lib文件夹下,引入: sf.sdk sf 1.0 system ${project.basedir}/src/main/resources/lib/SF-CSIM-EXPRESS- ...

  5. 顺丰java_JAVA接入顺丰快递

    下载到项目中后放到lib文件夹下,引入: sf.sdk sf 1.0 system ${project.basedir}/src/main/resources/lib/SF-CSIM-EXPRESS- ...

  6. 顺丰快递代码表java_JAVA接入顺丰快递

    下载到项目中后放到lib文件夹下,引入: sf.sdk sf 1.0 system ${project.basedir}/src/main/resources/lib/SF-CSIM-EXPRESS- ...

  7. JAVA快递寄件下单api接口一次性接入顺丰,中通,圆通,申通,韵达,京东,德邦,百世,天天

    为了让各位更快地接入顺丰,中通,圆通,申通,韵达,京东,德邦,百世,天天等主流快递公司,大家可以把源码复制到你的项目上,将源码里的参数改成自己的账户参数就能直接使用了. ​ 此篇java demo方便 ...

  8. 顺丰快递商家寄件发货接口API类型和接入流程方案【快递100接口Demo】

    顺丰快递对于商家和个人的隐私保护较为严格,对于操作频次高的用户会进行多次验证码确认信息和服务安全.如果需要大量地邮寄顺丰快递以及查询顺丰的快递物流轨迹信息,必须对接顺丰官方的寄件和查询API接口.企业 ...

  9. php快递查询接口,一次接入顺丰、京东、申通、圆通、韵达、中通、天天、百世、邮政、EMS等主流快递公司

    快递100php快递查询接口-一次性接入顺丰.京东.申通.圆通.韵达.中通.天天.百世.邮政.EMS等主流快递公司,只需要复制源码,并将部分参数修改为您的账户参数即可. 此php接口demo目录内容包 ...

最新文章

  1. Oracle记录被另一个用户锁住
  2. 服务器无法显示大内存的处理办法
  3. [linux] tcpdump抓包案例
  4. oracle dg物理和逻辑,Oracle DG 物理Standby环境搭建
  5. xdebug 远程调试
  6. 关于css 的AST 语法树的理解
  7. 【转】Java学习---内存溢出的排查经历
  8. mp4 视频在网页上播放不了
  9. mnist数据集python导入_关于Pytorch的MNIST数据集的预处理详解
  10. JavaScript(JS)网页--动态生成表格
  11. 为防止已存储信息的u盘感染计算机病毒应该,为防止插入U盘后,通过U盘自动播放功能,被感染计算机病毒,应该将计算机中“自 - 问答库...
  12. 暴走欧洲之旅行的经验杂记
  13. 【转载】mysql view prevents operation处理
  14. foxmail远程主机强迫关闭了一个现有的连接
  15. 背包问题贪心算法求解
  16. 如何定义 Symbian WINS模拟器的内存配置
  17. C#之敲击回车键触发Button的Click事件
  18. openGauss 简介
  19. 类图中类与类之间的关系重点区分
  20. “人不知而不愠”-当别人不理解我们时,怎样保持好心情?

热门文章

  1. 26、ADS使用记录之基于低通滤波匹配的超宽带功率放大器设计
  2. win7锁定计算机后断网,win7系统自动锁屏断网的解决方法
  3. source deactivate xxx:bash deactivate:没有那个文件或目录
  4. 谷歌驱动下载和配置(RobotFramework)
  5. 中国电信2019笔试题——求前后重叠的最长子字符串长度,基于java语言
  6. 拼题A ——2021 跨年挑战赛
  7. 拼题A基础篇32 计算圆周率
  8. Redis 击穿、穿透和雪崩的理解
  9. 3DMAX高级弯曲插件使用教程
  10. 考研英语 大作文模板