依赖
<!--顺丰接口依赖-->
<dependency>
<groupId>club.mrxiao</groupId>
<artifactId>express-java-sf</artifactId>
<version>1.0.2</version>
</dependency>
实现类
公司要求对接顺丰接口
现在开发之后感觉其实也没有那么难
具体源码我放上来了
另外用的某个大佬写好的 包
public class SfServiceImpl implements SfService {
@Value("${sf.call.url}")
//请求路径 目前先写死,未来放到nacos配置文件中
// private String sfCallUrl = "https://sfapi-sbox.sf-express.com/std/service";
private String sfCallUrl ;
@Value("${sf.client.code}")
//顾客编码
// private String sfClientCode ="顾客编码、合作伙伴id";
private String sfClientCode;
@Value("${sf.check.word}")
//沙箱校验码
// private String sfCheckWord = "你在丰桥获取的校验码";
private String sfCheckWord;
//todo
/**
* 下订单接口serviceCode
*/
private final String EXP_RECE_CREATE_ORDER = "EXP_RECE_CREATE_ORDER";
/**
* 订单结果查询接口serviceCode
*/
private final String EXP_RECE_SEARCH_ORDER_RESP = "EXP_RECE_SEARCH_ORDER_RESP";
/*
* 订单取消\确认接口 serviceCode
* */
private final String EXP_RECE_UPDATE_ORDER = "EXP_RECE_UPDATE_ORDER";
private final String API_RESULT_CODE_A1000 = "A1000";
private final String ERROR_CODE_S0000 = "S0000";
// 重复下单
private final String ERROR_CODE_8016 = "8016";
private final String LANGUAGE_ZHCN = "zh-cn";
private final String One = "1";
下单实现
@Override
public R createOrder(SfOrderParam sfOrderParam) {
try {
if (null == sfOrderParam) {
return R.error(1000, "顺丰丰桥下订单服务接口入参不能为空");
}
if (StringUtils.isBlank(sfOrderParam.getOrderId())) {
return R.error(1000, "顺丰丰桥下订单服务接口orderId不能为空");
}
int hashCode = java.util.UUID.randomUUID().toString().hashCode();
if (hashCode <0){
hashCode=-hashCode;
}
// 0 代表前面补充0
// 10 代表长度为10
// d 代表参数为正数型
String format = String.format("%010d", hashCode).substring(0,10);
String orderId = "Plz" + format;
sfOrderParam.setOrderId(orderId);
//param.setOrderId(sfOrderParam.getOrderId());
Map<String, String> params = new HashMap<String, String>();
String timeStamp = String.valueOf(System.currentTimeMillis());
String msgData = JSONObject.toJSONString(sfOrderParam);
params.put("partnerID", sfClientCode);
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", CallExpressServiceTools.getMsgDigest(msgData, timeStamp, sfCheckWord));
long startTime = System.currentTimeMillis();
log.info("调用丰桥下订单接口服务开始, 入参:{}, sfCallUrl:{}, sfClientCode:{}, sfCheckWord:{}" + (String) params.get("msgData"), sfCallUrl, sfClientCode, sfCheckWord);
String result = HttpClientUtil.post(sfCallUrl, params);
log.info("调用丰桥下订单接口服务结束, 返回结果:{}, 接口耗时:{}", result, String.valueOf(System.currentTimeMillis() - startTime));
// if (StringUtils.isNotBlank(result)) {
// JSONObject jsonObject = JSON.parseObject(result);
// String apiResultCode = jsonObject.getString("apiResultCode");
//
// if (StringUtils.isNotBlank(apiResultCode) && API_RESULT_CODE_A1000.equals(apiResultCode)) {
// JSONObject apiResultData = jsonObject.getJSONObject("apiResultData");
//
// if (apiResultData != null) {
// String errorCode = apiResultData.getString("errorCode");
//
// if (StringUtils.isNotBlank(errorCode) && ERROR_CODE_S0000.equals(errorCode)) {
// result = apiResultData.getString("msgData");
// log.info("调用丰桥下订单接口服务, msgData:{}", result);
// } else if (StringUtils.isNotBlank(errorCode) && ERROR_CODE_8016.equals(errorCode)) {
//