首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >对接第三方顺丰丰桥下单Api接口实战教程java[通俗易懂]

对接第三方顺丰丰桥下单Api接口实战教程java[通俗易懂]

作者头像
全栈程序员站长
发布于 2022-10-05 04:20:03
发布于 2022-10-05 04:20:03
1.8K10
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

对接第三方顺丰丰桥下单接口实战

前言

在接入第三方顺丰Api之前要先登录LaaS开放平台,如果您是首次与顺丰合作,可通过注册平台账号后登录。 如果您已有开放平台账号,可直接使用账号密码登录。如果您已有月结管家/速打平台/数据灯塔账号,可选择对应登录方式直接登录。如果您是顺丰内部员工,可选择顺丰工号登录方式完成域账号登录。 登录完成后需要进行个人认证或企业认证,如何进行认证小伙伴在顺丰控制台首页认证,认证完成后,需要审核月结卡号哦,如果已经有月结卡号就自行绑定即可,把这些相关信息都完成了,就可以对接顺丰接口啦,话不多说,接下来直接上代码。如果不还有不了解的可以给博主留言哦

pom文件顺丰依赖

pom文件引入顺丰sdk依赖,如何引入外部依赖到内部maven仓库之前的文件有教程,不懂如何引入外部依赖的可以去看我其他文章

Controller层

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/** * 生成顺丰丰桥快递订单 * @param keys * @return */
	@PostMapping("createSfOrder")
	public Result<FhhzdH> createSfOrder (@RequestBody List<Long> keys) throws UnsupportedEncodingException { 
   
		return service.createSfOrder(keys);
	}

Service层

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/** * 生成顺丰丰桥快递订单 * @param keys * @return * @throws UnsupportedEncodingException */
	Result<FhhzdH> createSfOrder (List<Long> keys) throws UnsupportedEncodingException;

ServiceImpl实现类层

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	/** * 生成订单 */
@SuppressWarnings("static-access")
@Override
@Transactional
public Result<FhhzdH> createSfOrder(List<Long> keys) throws UnsupportedEncodingException { 

if (keys == null || keys.size() == 0) { 

return new Result<FhhzdH>().setCode(BussErrorCode.ARGUMENT_NOT_VALID).setReason("请求参数不能为空!");
}
for (int i = 0; i < keys.size(); i++) { 

Long key = keys.get(i);
FhhzdH fhhzdH = mapper.selectByPrimaryKey(key);
if (Common.isNull(fhhzdH)) { 

return new Result<FhhzdH>().setCode(BussErrorCode.ARGUMENT_NOT_VALID)
.setReason("单号为" + key + "发货汇总单数据不存在!");
}
if (Common.isNotEmpty(fhhzdH.getKddh())) { 

throw new RuntimeException(
String.format("单据号为[%s],快递单号为[%s]已发货", fhhzdH.getDjh(), fhhzdH.getKddh()));
}
//读取顺丰配置文件
loadSfProperties();
// 获取发货人信息
FhrywhH fhrywhH = Common.requiredFirst(fhrywhHMapper.select(new RmFhrywhHQuery().letBm(fhhzdH.getFhr())),
String.format("该%s编码发货人员配置不存在!", fhhzdH.getFhr()));	
// 封装下单信息
String msgData = orderInfo(fhhzdH, fhrywhH, SF_CARD_NO);
CallExpressServiceTools tools = CallExpressServiceTools.getInstance();
Map<String, String> params = new HashMap<String, String>();
String timeStamp = String.valueOf(System.currentTimeMillis());
// String msgData =tools.packageMsgData(standardService);
params.put("partnerID", CLIENT_CODE); // 顾客编码 ,对应丰桥上获取的clientCode
params.put("requestID", UUID.randomUUID().toString().replace("-", ""));
params.put("serviceCode", EXP_RECE_CREATE_ORDER);// 接口服务码
params.put("timestamp", timeStamp);
params.put("msgData", msgData);
params.put("msgDigest", tools.getMsgDigest(msgData, timeStamp, CHECK_WORD));
String result = HttpClientUtil.post(CALL_URL_BOX, params);
ShunFengResponse res = new Gson().fromJson(result, ShunFengResponse.class);
String apiResultData = res.getApiResultData();
ResultData data = new Gson().fromJson(apiResultData, ResultData.class);
if (data.getSuccess() == true) { 
// 成功
String sfdh = data.getMsgData().getWaybillNoInfoList().get(0).getWaybillNo();// 顺丰单号
FhhzdH temp = new FhhzdH();
temp.setDjlsh(key);
temp.setKddh(sfdh);//顺丰下单返回的顺丰单号更新到自己的数据库,方便后续查询订单
mapper.updateByPrimaryKeySelective(temp);
} else { 

throw new RuntimeException(String.format("单据号为[%s],[%s]", fhhzdH.getDjh(), data.getErrorMsg()));
}
}
return new Result<FhhzdH>().setCode(BussErrorCode.SUCCESS).setReason("顺丰下单成功!");
}

封装请求参数

我自己是使用json格式,也可以使用xml格式,这个可以根据实际情况使用即可,请求参数不需要都要和我的一样,可根据实际开发需要去定义,这只是一个范例,有不了解的小伙伴可留言

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
**
* 顺丰丰桥下单请求参数
* @param fhhzdH
* @param fhrywhH
* @param sfCardNo
* @return
*/
private String orderInfo(FhhzdH fhhzdH, FhrywhH fhrywhH,String sfCardNo) { 

SfOrderParam param = new SfOrderParam();
List<CargoDetail> cargoList = new ArrayList<CargoDetail>();
CargoDetail cargo = new CargoDetail();//拖寄物信息
cargo.setName("工艺品");//货物名称,如果需要生成电子运 单,则为必填。
cargo.setCount(1L);//货物数量 跨境件报关需要填写
cargo.setUnit("件");//货物单位,如:个、台、本,跨境 件报关需要填写。
cargoList.add(cargo);	
param.setCargoDetails(cargoList);//拖寄物信息 
List<ContactInfo> contactInfoList = new ArrayList<ContactInfo>();
ContactInfo info = new ContactInfo();
// 获取发货方 省份,城市,县
Map<String, String> map = addressResolution(fhrywhH.getJfdz());
info.setContactType(1L);//地址类型: 1,寄件方信息 2,到件方信息
info.setAddress(fhrywhH.getJfdz());//详细地址
info.setCity(map.get("city"));
info.setCompany(fhrywhH.getGsmc());
info.setContact(fhrywhH.getJjr());// 联系人
info.setCounty(map.get("county"));//所在县/区级行政区名称
info.setMobile(fhrywhH.getJfdh());//寄方电话
info.setProvince(map.get("province"));//所在省级行政区名称 
contactInfoList.add(info);
map.clear();
// 获取收货方 省份,城市,县
map = addressResolution(fhhzdH.getShdz());
ContactInfo contactInfo = new ContactInfo();
contactInfo.setContactType(2L);//地址类型: 1,寄件方信息 2,到件方信息
contactInfo.setAddress(fhhzdH.getShdz());//详细地址收货地址
contactInfo.setCity(map.get("city"));
contactInfo.setCompany(fhhzdH.getMdmc());
contactInfo.setContact(fhhzdH.getShouhr());// 收货人
contactInfo.setCounty(map.get("county"));//所在县/区级行政区名称
contactInfo.setMobile(fhhzdH.getLxdh());//收 联系电话
contactInfo.setProvince(map.get("province"));//所在省级行政区名称
contactInfoList.add(contactInfo);	
param.setContactInfoList(contactInfoList);//收寄双方信息 
param.setExpressTypeId(2L);
param.setIsOneselfPickup(0L);//快件自取,支持以下值: 1:客户同意快件自取 0:客户不同意快件自取
param.setLanguage("zh-CN");//语言
param.setOrderId(fhhzdH.getDjh());//客户订单号
param.setParcelQty(1L);//包裹数
if ("1".equals(fhhzdH.getSfby())) { 
//付款方式,支持以下值: 1:寄方付 2:收方付 3:第三方付
param.setPayMethod(1L); //包邮寄方付
}else { 

param.setPayMethod(2L); //不包邮收方付
}		
param.setMonthlyCard(sfCardNo);//月结卡号
param.setRemark(fhhzdH.getBz());	
String msgData = new Gson().toJson(param).toString(); //把请求参数转成json格式
log.info("顺丰丰桥下单请求参数:{}", msgData);
return msgData;
}

下单请求参数json参数示例

顺丰丰桥下单响应参数

拿到响应参数需要自己处理,因为顺丰返回的是json对象需要自己处理成自己需要的数据,就不一一演示了

以上代码看起来很多很复杂,其实是很简单的,实际还可以优化,如果对您有帮助劳烦帮忙点个赞,收藏关注一下,可以相互学习共同进步。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月14日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
大神,食品级物流有没有兴趣,京东都是当天送达,这里面就涉及到一个问题,怎么对接市面上可能出现的需求
大神,食品级物流有没有兴趣,京东都是当天送达,这里面就涉及到一个问题,怎么对接市面上可能出现的需求
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
【快递员上门取件API接口对接-退换货下单预约取件接口】
发现一个非常好用的上门取件 API 接口——快递 100 商家寄件 API。通过这个接口提交寄件请求,可以直接下单至各快递公司,实现快递员上门取件,下单还可以享运费折扣
kwan的解忧杂货铺
2024/12/20
2410
使用SpringBoot RestTemplate实现第三方接口对接
实现对接第三方接口,可以使用HttpClient(年岁较久),也可以使用SpringBoot RestTemplate(新生代)。可根据个人喜好选择适当的方式进行对接,相比较HttpClient个人推荐使用SpringBoot RestTemplate。
全栈程序员站长
2022/09/02
1.1K0
使用SpringBoot RestTemplate实现第三方接口对接
微信扫码支付(模式一)遇到的那些坑
在这个二维码风起云涌的时代,在线支付已经成为潮流,没事扫一扫,打赏一下我也不介意。 timg.jpg 酝酿 谈坑之前先聊一聊模式一的大体流程,模式一的适用场景一般为自助售卖机或者固定价格的商品的线下交
小柒2012
2018/04/16
5K2
微信扫码支付(模式一)遇到的那些坑
顺丰快递单号查询api接口免费对接参数以及demo
顺丰快递对物流信息的管控较为严格,官网上也加上了由腾讯云提供的滑动验证码进行保护,如果需要大批量查询顺丰的物流信息,必须要对接顺丰官方的路由查询接口。注意,对接接口必须要有顺丰月结账户,对接成功后只能查询自己发货的物流单号的路由信息。
app玩家
2019/08/13
4.8K0
顺丰快递单号查询api接口免费对接参数以及demo
快递100-电商商家寄件下单API接口案例代码-非第三方集成
https://poll.kuaidi100.com/order/borderapi.do
快递100API
2021/05/24
1.4K0
WebService系列之使用Axis调用第三方wsdl接口
WebService系列之使用Axis调用第三方wsdl接口 测试工具下载soapui测试 http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsd
SmileNicky
2020/12/21
1.6K0
WebService系列之使用Axis调用第三方wsdl接口
快递100电商快递物流电子面单图片接口API案例代码
通过快递公司或网点、菜鸟与淘宝提供的电子面单账号,提交生成电子面单;通过管理后台模板配置,选择面单模板并可进行编辑,生成图片输出,可自选方式打印。
快递100API
2021/05/19
1.2K0
快递100电商快递物流电子面单图片接口API案例代码
快递物流公司接入查询API接口调用示例
业务需求:就是做做商城,卖卖东西。然后需要做个物流跟踪的功能,然后可能需要一个或者多个物流快递对接,像主流的顺丰快递、中通快递、圆通快递、韵达快递、申通快递、百世快递、天天快递、优速快递、安能物流、德邦物流、极兔快递、丰网速运及海外的TNT、UPS等国际物流快递,那就需要一个快递鸟物流查询接口进行对接使用了。
app玩家
2021/05/25
1.7K1
3步接入顺丰快递单号查询API接口【快递100API接口】
顺丰目前提供了两种对接方式: 一种是开发者自助对接,需要注册丰桥账户后,申请成为开发者,再根据顺丰要求对接,整个流程较为繁琐; 还有一种方式就是通过第三方快递单号查询API接口服务商对接(例如快递100API),如果对接公司数量超过3家,对接起来会比直接对接顺丰简单。
快递100API
2021/06/16
3.8K0
3步接入顺丰快递单号查询API接口【快递100API接口】
Java调用第三方接口示范
【1】准备工作:在项目的工具包下导入HttpClientUtil这个工具类,或者也可以使用Spring框架的restTemplate来调用,上面有调用接口的方法【分为Get和Post方式的有参和无参调用】:
Java廖志伟
2021/01/29
1.5K0
顺丰快递接口免费接入java-demo【快递100API】
物流轨迹查询-使用的物流单号和快递单号即可实现查询物流信息。 对接在电商网站、SaaS系统或ERP系统上之后,使用者只需要输入快递单号就可以查询物流,不需要物流编码。整个流程是通过快递100API的两个接口实现的,一个是快递物流查询接口,一个是智能单号识别的接口,其中智能单号识别接口是免费使用的。
快递100API
2021/08/10
2.4K1
顺丰快递接口免费接入java-demo【快递100API】
商品下单对接支付宝/微信支付
之前我们实现了ChatGPT项目的核心问答业务, 接着为了实现项目的商业化服务和引流, 对接微信公众号实现用户扫码关注、获取验证码登录等一系列的用户引入公众号进行登录。 这样的实现让我们的项目接入微信的广大用户群体,对于以后项目的商业化发展奠定了基调。 接着, 为了项目不让有心人恶意利用以及我们自己的apiKey的额度也是有限的, 所以进行了一系列的规则过滤操作。 这样的规则过滤让我们的项目向商业化的道路上又迈进了一步。 但是, 虽然我们做了用户限流限频的操作,但是还是相当于免费的产品 。这可不是一个商业化产品应该具有的操作。 如果用户后续还想使用我们的产品, 那当然免不了给钱咯。 所以, 本章节我们通过对于ChatGPT核心业务的扩展,实现了用户支付下单的操作。 并且, 基于DDD架构, 让我们的项目变得可拓展性非常好。 我们都知道ChatGPT的更新迭代是非常快的, 所以项目的可拓展性变得至关重要了。 所以使用DDD架构的优点就体现的一览无余。
用户11097514
2024/05/31
2580
商品下单对接支付宝/微信支付
四通一达,百世,邮政,顺丰,德邦等快递电子面单接口免费接入
快递100API电子面单接口可支持45+家快递公司(四通一达、百世、邮政、顺丰、德邦等)。并且可与顺丰对接,与顺丰对接时可选择使用顺丰的电子面单服务或者快递100API的电子面单服务。
快递100API
2021/08/10
1.7K0
四通一达,百世,邮政,顺丰,德邦等快递电子面单接口免费接入
3步接入顺丰快递云打印电子面单接口API【快递100接口Java Demo】
在顺丰丰桥上先注册账户后,申请成为开发者后,再根据顺丰的文档要求对接。然而,这种方式面单审核期长,整个流程较为繁琐,并且需要开发者长期维护接口,顺丰接口提供给用户自主打单的服务也仅提返回面单的pdf文件。
快递100API
2022/09/02
3.9K0
3步接入顺丰快递云打印电子面单接口API【快递100接口Java Demo】
C#打印丰密面单 顺丰电子面单
丰密面单,就是隐藏了用户个人信息的顺丰快递面单。该面单可将寄、收件人名字、手机、地址等部分信息隐藏,让个人信息不再直接暴露。
技术爱好520
2020/04/19
4K2
C#打印丰密面单 顺丰电子面单
中通快递物流单号查询API接口免费对接案例
互联网的不断发展,网购如今已经成为了人们生活的一个庞大消费方式。足不出户的消费体验,让越来越来多的人爱上网购。网购势力的庞大,随之带动的是物流行业的发展壮大。市场上的物流公司纷纷应势而生。因此对于快递查询对接接口的需求量也越来越大。 下面快递鸟将给大家简单介绍免费韵达快递单号查询接口对接方法,希望对大家有用。 中通快递是一家具有中国特色的物流及快递品牌,结合中国国情,用科技化和标准化的模式运营网络,已在全国拥有三千余个服务规范的服务站点,致力于不断向客户提供富有创新和满足客户不同需求的解决方案。中通快递的查询编码:ZTO 快递鸟接口免费不限量对接
app玩家
2019/08/01
2.4K0
中通快递物流单号查询API接口免费对接案例
java对接第三方接口「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/133282.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/27
2.7K0
java对接第三方接口「建议收藏」
快递100快递信息订阅推送API接口案例代码
当我方调用贵方的回调接口(callbackurl)时,贵方需要先将我方提交的数据保存至贵方的数据库,接着向我方返回是否成功接收的响应报文及代码,即贵公司直接在回调接口的地址的response中填写如下内容:
快递100API
2021/05/19
1.6K0
快递100快递信息订阅推送API接口案例代码
快递100快递查询地图轨迹API接口案例代码
提供统一格式的HTTP POST或GET调用接口,并返回格式支持JSON,xml,text,html数据。
快递100API
2021/05/17
1.6K0
快递100快递查询地图轨迹API接口案例代码
物流快递查询API接口怎么对接(中通、申通、韵达/顺丰、韵达)
快递查询API接口是使用的物流单号即可实现查询物流信息。主要应用在电商商城、ERP系统商、WMS系统商、快递柜、银行等企业。多家快递物流公司接口统一接入,建议对接接口提供商,一次性可以接入多家快递,在后期的技术维护也会省下很多工作。
用户4199839
2019/07/23
4.4K0
物流快递查询API接口怎么对接(中通、申通、韵达/顺丰、韵达)
推荐阅读
相关推荐
【快递员上门取件API接口对接-退换货下单预约取件接口】
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验