微信发货接口对接,逻辑编写

This commit is contained in:
Jack 2025-06-06 17:52:25 +08:00
parent a2eb7be948
commit 328fa9d802

View File

@ -12,11 +12,13 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.suisung.mall.common.constant.CommonConstant;
import com.suisung.mall.common.modules.store.ShopStoreSfOrder;
import com.suisung.mall.common.pojo.dto.WxOrderBaseInfoDTO;
import com.suisung.mall.common.utils.DateTimeUtils;
import com.suisung.mall.common.utils.RestTemplateHttpUtil;
import com.suisung.mall.common.utils.phone.PhoneNumberUtils;
import com.suisung.mall.shop.order.service.ShopOrderBaseService;
import com.suisung.mall.shop.store.service.ShopStoreSfOrderService;
import com.suisung.mall.shop.wechat.service.WxOrderShippingService;
import com.suisung.mall.shop.wechat.utils.WxUtil;
import lombok.extern.slf4j.Slf4j;
@ -41,6 +43,10 @@ public class WxOrderShippingServiceImpl implements WxOrderShippingService {
@Autowired
private ShopOrderBaseService shopOrderBaseService;
@Lazy
@Autowired
private ShopStoreSfOrderService shopStoreSfOrderService;
/**
* 上传发货信息到微信
* 参考https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/order-shipping/order-shipping.html#%E4%B8%80%E3%80%81%E5%8F%91%E8%B4%A7%E4%BF%A1%E6%81%AF%E5%BD%95%E5%85%A5%E6%8E%A5%E5%8F%A3
@ -63,6 +69,11 @@ public class WxOrderShippingServiceImpl implements WxOrderShippingService {
return Pair.of(false, PARAMETER_ERROR);
}
if (logisticsType == null || logisticsType < 1 || logisticsType > 4) {
log.error("物流类型错误订单ID: {}, 物流类型: {}", orderId, logisticsType);
return Pair.of(false, "物流类型错误");
}
try {
String accessToken = wxUtil.getAccessToken();
if (StrUtil.isBlank(accessToken)) {
@ -82,9 +93,35 @@ public class WxOrderShippingServiceImpl implements WxOrderShippingService {
shippingItem.set("item_desc", orderBaseInfo.getSubject()); // 必填项
String trackingId = "";
String expressCompany = "";
String receiverMobile = "";
if (logisticsType == 1) {
// 实体物流配送
shippingItem.set("shipping_type", 2);
shippingItem.set("shipping_id", orderBaseInfo.getLkl_merchant_no());
} else if (logisticsType == 2) {
// 同城配送(顺丰同城)
ShopStoreSfOrder shopStoreSfOrder = shopStoreSfOrderService.getBySfOrderId(orderId);
if (shopStoreSfOrder == null) {
log.error("无法获取顺丰同城订单记录订单ID: {}", orderId);
return Pair.of(false, "无法获取顺丰同城订单记录");
}
trackingId = shopStoreSfOrder.getSf_bill_id();
expressCompany = "SF"; // 顺丰同城的快递公司代码
receiverMobile = "";
} else if (logisticsType == 3) {
// 虚拟商品
shippingItem.set("shipping_type", 4);
} else {
// 用户自提
shippingItem.set("shipping_type", 1);
}
// 发物流快递的必填字段
shippingItem.set("tracking_no", expressNo);
shippingItem.set("express_company", trackingNo);
shippingItem.set("tracking_no", trackingId);
shippingItem.set("express_company", expressCompany);
shippingItem.set("contact.receiver_contact", CommonConstant.IDD_ZH_CN + "-" + PhoneNumberUtils.maskPhoneNumber("13128998786"));
JSONArray shippingList = new JSONArray().put(shippingItem);