圆通生产联调

pull/1121/head
梁宇奇 2025-08-14 11:24:17 +08:00
parent 226fa7c4f7
commit d265ad9d59
2 changed files with 88 additions and 85 deletions

View File

@ -260,11 +260,11 @@ zto:
# 圆通配置 # 圆通配置
yto: yto:
appKey: K9991024989 appKey: K280280756
appSecret: u2Z1F7Fh appSecret: iplud2s6
appKey2: TEST appKey2: K280280756
appSecret2: 123456 appSecret2: iplud2s6
gatewayUrl: https://openuat.yto56test.com:6443/ gatewayUrl: https://openapi.yto.net.cn:11443/
# 支付宝配置 # 支付宝配置
alipay: alipay:

View File

@ -99,62 +99,64 @@ public class YtoExpressManagerImpl implements ExpressManager {
@Override @Override
public boolean cancelShip(ExpressCancelReqDTO cancelReqDTO) { public boolean cancelShip(ExpressCancelReqDTO cancelReqDTO) {
Assert.notNull(cancelReqDTO); //取消订单,直接不发货不取件
Assert.notEmpty(cancelReqDTO.getExpressReqNo()); // Assert.notNull(cancelReqDTO);
YtoCancelOrderParam cancelOrderParam = new YtoCancelOrderParam(); // Assert.notEmpty(cancelReqDTO.getExpressReqNo());
cancelOrderParam.setLogisticsNo(cancelReqDTO.getExpressReqNo()); // YtoCancelOrderParam cancelOrderParam = new YtoCancelOrderParam();
cancelOrderParam.setCancelDesc("订单取消"); // cancelOrderParam.setLogisticsNo(cancelReqDTO.getExpressReqNo());
try { // cancelOrderParam.setCancelDesc("订单取消");
String param = JSONUtil.toJsonStr(cancelOrderParam); // try {
String sign = YtoSignUtil.sign("korder_cancel_adapter", "v1", param, appSecret); // String param = JSONUtil.toJsonStr(cancelOrderParam);
YtoPublicRequest request = YtoPublicRequest.builder() // String sign = YtoSignUtil.sign("korder_cancel_adapter", "v1", param, appSecret);
.timestamp(System.currentTimeMillis()) // YtoPublicRequest request = YtoPublicRequest.builder()
.param(param) // .timestamp(System.currentTimeMillis())
.format(YtoPublicRequest.EFormat.JSON) // .param(param)
.sign(sign).build(); // .format(YtoPublicRequest.EFormat.JSON)
String rtnStr = HttpUtil.post(gatewayUrl + "open/korder_cancel_adapter/v1/N364gM/" + appKey, // .sign(sign).build();
JSONUtil.toJsonStr(request)); // String rtnStr = HttpUtil.post(gatewayUrl + "open/korder_cancel_adapter/v1/N364gM/" + appKey,
log.info("圆通订单取消返回信息: {}", rtnStr); // JSONUtil.toJsonStr(request));
JSONObject rtnJson = JSONUtil.parseObj(rtnStr); // log.info("圆通订单取消返回信息: {}", rtnStr);
String logisticsNo = rtnJson.getStr("logisticsNo"); // JSONObject rtnJson = JSONUtil.parseObj(rtnStr);
if (StrUtil.isNotEmpty(logisticsNo) // String logisticsNo = rtnJson.getStr("logisticsNo");
&& logisticsNo.equals(cancelOrderParam.getLogisticsNo())) { // if (StrUtil.isNotEmpty(logisticsNo)
return true; // && logisticsNo.equals(cancelOrderParam.getLogisticsNo())) {
} // return true;
} catch (Exception e) { // }
log.error("圆通订单取消异常", e); // } catch (Exception e) {
} // log.error("圆通订单取消异常", e);
log.warn("圆通订单取消失败: {}", cancelReqDTO); // }
// log.warn("圆通订单取消失败: {}", cancelReqDTO);
return false; return false;
} }
@Override @Override
public boolean interceptShip(ExpressInterceptReqDTO interceptReqDTO) { public boolean interceptShip(ExpressInterceptReqDTO interceptReqDTO) {
Assert.notNull(interceptReqDTO); //TODO 未对接
Assert.notEmpty(interceptReqDTO.getExpressWaybillNo()); // Assert.notNull(interceptReqDTO);
YtoInterceptReturnParam interceptReturnParam = new YtoInterceptReturnParam(); // Assert.notEmpty(interceptReqDTO.getExpressWaybillNo());
interceptReturnParam.setWaybillNo(interceptReqDTO.getExpressWaybillNo()); // YtoInterceptReturnParam interceptReturnParam = new YtoInterceptReturnParam();
interceptReturnParam.setWantedDesc("拦截退回"); // interceptReturnParam.setWaybillNo(interceptReqDTO.getExpressWaybillNo());
try { // interceptReturnParam.setWantedDesc("拦截退回");
String param = JSONUtil.toJsonStr(interceptReturnParam); // try {
String sign = YtoSignUtil.sign("wanted_report_adapter", "v1", param, appSecret); // String param = JSONUtil.toJsonStr(interceptReturnParam);
YtoPublicRequest request = YtoPublicRequest.builder() // String sign = YtoSignUtil.sign("wanted_report_adapter", "v1", param, appSecret);
.timestamp(System.currentTimeMillis()) // YtoPublicRequest request = YtoPublicRequest.builder()
.param(param) // .timestamp(System.currentTimeMillis())
.format(YtoPublicRequest.EFormat.JSON) // .param(param)
.sign(sign).build(); // .format(YtoPublicRequest.EFormat.JSON)
String rtnStr = HttpUtil.post(gatewayUrl + "open/wanted_report_adapter/v1/N364gM/" + appKey, // .sign(sign).build();
JSONUtil.toJsonStr(request)); // String rtnStr = HttpUtil.post(gatewayUrl + "open/wanted_report_adapter/v1/N364gM/" + appKey,
log.info("圆通订单拦截返回信息: {}", rtnStr); // JSONUtil.toJsonStr(request));
JSONObject rtnJson = JSONUtil.parseObj(rtnStr); // log.info("圆通订单拦截返回信息: {}", rtnStr);
Integer statusCode = rtnJson.getInt("statusCode"); // JSONObject rtnJson = JSONUtil.parseObj(rtnStr);
if (statusCode != null && statusCode == 0) { // Integer statusCode = rtnJson.getInt("statusCode");
return true; // if (statusCode != null && statusCode == 0) {
} // return true;
} catch (Exception e) { // }
log.error("圆通订单拦截异常", e); // } catch (Exception e) {
} // log.error("圆通订单拦截异常", e);
log.warn("圆通订单拦截失败: {}", interceptReqDTO); // }
// log.warn("圆通订单拦截失败: {}", interceptReqDTO);
return false; return false;
} }
@ -191,35 +193,36 @@ public class YtoExpressManagerImpl implements ExpressManager {
@Override @Override
public boolean subscribeTrack(ExpressTrackSubReqDTO trackSubReq) { public boolean subscribeTrack(ExpressTrackSubReqDTO trackSubReq) {
Assert.notNull(trackSubReq.getExpressWaybillNo()); // Assert.notNull(trackSubReq.getExpressWaybillNo());
YtoSubTrackParam.LogisticsInterface logisticsInterface = new YtoSubTrackParam.LogisticsInterface(); // YtoSubTrackParam.LogisticsInterface logisticsInterface = new YtoSubTrackParam.LogisticsInterface();
logisticsInterface.setClientId(appKey2); // logisticsInterface.setClientId(appKey2);
logisticsInterface.setWaybillNo(trackSubReq.getExpressWaybillNo()); // logisticsInterface.setWaybillNo(trackSubReq.getExpressWaybillNo());
YtoSubTrackParam ytoSubTrackParam = new YtoSubTrackParam(); // YtoSubTrackParam ytoSubTrackParam = new YtoSubTrackParam();
ytoSubTrackParam.setClient_id(appKey2); // ytoSubTrackParam.setClient_id(appKey2);
ytoSubTrackParam.setMsg_type("online"); // ytoSubTrackParam.setMsg_type("online");
ytoSubTrackParam.setLogistics_interface(JSONUtil.toJsonStr(logisticsInterface)); // ytoSubTrackParam.setLogistics_interface(JSONUtil.toJsonStr(logisticsInterface));
try { // try {
String param = JSONUtil.toJsonStr(ytoSubTrackParam); // String param = JSONUtil.toJsonStr(ytoSubTrackParam);
String sign = YtoSignUtil.sign("subscribe_adapter", "v1", param, appSecret2); // String sign = YtoSignUtil.sign("subscribe_adapter", "v1", param, appSecret2);
YtoPublicRequest request = YtoPublicRequest.builder() // YtoPublicRequest request = YtoPublicRequest.builder()
.timestamp(System.currentTimeMillis()) // .timestamp(System.currentTimeMillis())
.param(param) // .param(param)
.format(YtoPublicRequest.EFormat.JSON) // .format(YtoPublicRequest.EFormat.JSON)
.sign(sign).build(); // .sign(sign).build();
String rtnStr = HttpUtil.post(gatewayUrl + "open/subscribe_adapter/v1/N364gM/" + appKey2, // String rtnStr = HttpUtil.post(gatewayUrl + "open/subscribe_adapter/v1/N364gM/" + appKey2,
JSONUtil.toJsonStr(request)); // JSONUtil.toJsonStr(request));
log.info("圆通轨迹订阅返回信息: {}", rtnStr); // log.info("圆通轨迹订阅返回信息: {}", rtnStr);
JSONObject rtnJson = JSONUtil.parseObj(rtnStr); // JSONObject rtnJson = JSONUtil.parseObj(rtnStr);
Boolean success = rtnJson.getBool("success"); // Boolean success = rtnJson.getBool("success");
if (BooleanUtil.isTrue(success)) { // if (BooleanUtil.isTrue(success)) {
return true; // return true;
} // }
} catch (Exception e) { // } catch (Exception e) {
log.error("圆通轨迹订阅异常", e); // log.error("圆通轨迹订阅异常", e);
} // }
log.warn("圆通轨迹订阅失败: {}", trackSubReq); // log.warn("圆通轨迹订阅失败: {}", trackSubReq);
return false; // return false;
return true;
} }