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

sf.sdk

sf

1.0

system

${project.basedir}/src/main/resources/lib/SF-CSIM-EXPRESS-SDK-V1.6.jar

需要从丰桥获取的参数:

@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 params) {

StringBuilder strBuilder = new StringBuilder();

strBuilder.append("");

strBuilder.append("

" + params.get("clientCode") + "");

strBuilder.append("

");

strBuilder.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("");

strBuilder.append("

");

strBuilder.append("");

strBuilder.append("");

return strBuilder.toString();

}

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

/**

* 获取顺丰订单结果查询接口xml

*

* @param params

* @return

*/

public static String getOrderSearchServiceRequestXml(Map params) {

String orderNo = params.get("orderNo");

StringBuilder strBuilder = new StringBuilder();

strBuilder.append("");

strBuilder.append("

" + params.get("clientCode") + "");

strBuilder.append("

");

strBuilder.append("

strBuilder.append("orderid='" + orderNo + "'").append(" /> ");

strBuilder.append("");

strBuilder.append("");

return strBuilder.toString();

}

除了下单接口参数略多一下,其他接口大致相同

查询物流信息接口

/**

* 获取顺丰路由查询接口xml

*

* @param params

* @return

*/

public static String getRouteServiceRequestXml(Map params) {

StringBuilder strBuilder = new StringBuilder();

strBuilder.append("");

strBuilder.append("

" + params.get("clientCode") + "");

strBuilder.append("

");

strBuilder.append("

strBuilder.append("tracking_type='1'").append(" ");

strBuilder.append("method_type='1'").append(" ");

strBuilder.append("tracking_number='" + params.get("mailno") + "'").append(" >");

strBuilder.append("

");

strBuilder.append("");

strBuilder.append("");

return strBuilder.toString();

}

取消订单接口

/**

* 取消订单

*

* @param params

* @return

*/

public static String getConfirmRequestXml(Map params) {

StringBuilder strBuilder = new StringBuilder();

strBuilder.append("");

strBuilder.append("

").append(params.get("clientCode")).append("");

strBuilder.append("

");

strBuilder.append("

strBuilder.append("orderid='").append("orderNo").append("' ");

strBuilder.append("dealtype='2'>").append(" ");

strBuilder.append("

");

strBuilder.append("");

strBuilder.append("");

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 cs 顺丰运单_JAVA接入顺丰快递相关推荐

  1. 接口调用-【1】顺丰运单查询

    1.目的:批量调用顺丰运单路由接口,更新最新物流状态 [1]到顺丰开放平台-服务与支持-开放规范-API-SDK使用-直接下载SDK [2]开通正式接口必须要完成沙盒的3次成功调用. 2.这里有个坑, ...

  2. java工程师的终极书单_Java 9 –终极功能列表

    java工程师的终极书单 这篇文章将针对即将到来的Java 9版本进行更新,新增功能 ( 最新更新:2014年 9月9日 ) OpenJDK开发正在加快速度:2014年3月Java 8发布后,我们预计 ...

  3. JAVA接入顺丰快递

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

  4. 顺丰java_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免费对接物流快递鸟单号查询接口API

    快递查询接口是指快递查询网对外开放的应用程序接口,开发人员能够通过调用该接口与快递查询网进行交互,并基于该接口开发自己的快递查询应用程序. 技术文档请参考快递鸟官网api:免费查询快递接口_100%安 ...

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

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

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

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

  9. JavaWeb企业级项目中接入顺丰官方API实现物流实时查询(亲测有效)

    由于现在顺丰与快递100闹掰了,所以使用快递一百已经查不到顺丰的物流信息了,包括快递鸟等,现在想要在项目中实现顺丰快递的物流查询只能用顺丰官方API来查询,然而这个官方的API并没有快递一百那些接口那 ...

最新文章

  1. 算法之【仿竖式算法】
  2. eclipse spring boot项目搭建_spring-boot-plus项目配置文件(四)
  3. hadoop2.x常用端口及定义方法
  4. 步进电机的单双极驱动
  5. stm32之 GPIO_Remap_SWJ_Disable之后无法使用swd下载 程序解决方法
  6. 00后都选哪些大厂?数据盘点00后入职情况,字节跳动门槛低?
  7. 【NLP】图解Transformer(完整版)
  8. 阿里云文件上传工具类
  9. 动态规划之一最长上升子序列LIS
  10. Java处理某些图片红色问题
  11. dart系列之:在dart中使用数字和字符串
  12. [编程入门]宏定义之闰年判断:给年份year,定义一个宏,以判别该年份是否闰年。提示:宏名可以定义为LEAP_YEAR,形参为y,既定义宏的形式为 #define LEAP_YEAR(y) (读者设计
  13. 一个servlet,多个dwr.xml配置文件
  14. nginx+uwsgi 部署
  15. 第三周练习 part3 --- 文件的操作
  16. 中国要做物联网技术的强国,而非大国
  17. Fitts’ Law / 菲茨定律
  18. java 基于jave2实现视频处理 截屏,加水印,压缩,获取时长
  19. python大文件去重_python3 大文件去重的方法
  20. ReferenceError: request is not defined

热门文章

  1. 【微机原理与接口技术】实验5 可编程并行接口(8255)
  2. 墨客 去中心化平台的商业逻辑
  3. 苹果批Meta高额抽成行为:暴露了其虚伪面孔
  4. 前端基础篇之CSS世界
  5. Mybatis Maven依赖
  6. Java项目酒店管理系统(java+SSM+Maven+LayUI+mysql)
  7. reason:The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zo
  8. MarkDown基本语法使用教程
  9. Unity正在将云渲染市场拱手相让!
  10. 电脑pdf怎么转换成excel表格呢?