Java 微信小程序-发货信息录入接口 对接代码 Java 微信小程序-发货信息录入接口 对接代码 可以直接拷贝使用


微信小程序-发货信息录入接口开发文档

POST https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info?access_token=ACCESS_TOKEN


一、实体类

1.WxDeliverGoodsDTO

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
/**
 * 微信小程序-发货信息录入-入参DTO
 *
 * @author hcx
 */
@Data
@Schema(description = "微信小程序-发货信息录入-入参DTO")
public class WxDeliverGoodsDTO implements Serializable {
	@Schema(description = "必填 订单,需要上传物流信息的订单")
	@NotNull(message = "order_key不能为空")
	private OrderKeyDTO order_key;
	@Schema(description = "必填 物流模式,发货方式枚举值:1、实体物流配送采用快递公司进行实体物流配送形式 2、同城配送 3、虚拟商品,虚拟商品,例如话费充值,点卡等,无实体配送形式 4、用户自提")
	@NotNull(message = "logistics_type不能为空")
	private Integer logistics_type;
	@Schema(description = "必填 发货模式,发货模式枚举值:1、UNIFIED_DELIVERY(统一发货)2、SPLIT_DELIVERY(分拆发货) 示例值: UNIFIED_DELIVERY")
	@NotNull(message = "delivery_mode不能为空")
	private Integer delivery_mode;
	@Schema(description = "分拆发货模式时必填,用于标识分拆发货模式下是否已全部发货完成,只有全部发货完成的情况下才会向用户推送发货完成通知。示例值: true/false")
	private Boolean is_all_delivered;
	@Schema(description = "必填 物流信息列表,发货物流单列表,支持统一发货(单个物流单)和分拆发货(多个物流单)两种模式,多重性: [1, 10]")
	@NotNull(message = "shipping_list不能为空")
	private List shipping_list;
	@Schema(description = "必填 上传时间,用于标识请求的先后顺序 示例值: `2022-12-15T13:29:35.120+08:00`")
	@NotBlank(message = "upload_time不能为空")
	private String upload_time;
	@Schema(description = "必填 支付者,支付者信息")
	@NotNull(message = "payer不能为空")
	private PayerDTO payer;
}

2.PayerDTO

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
 * 微信小程序-发货信息录入-入参DTO
 *
 * @author hcx
 */
@Data
public class PayerDTO implements Serializable {
	@Schema(description = "必填 用户标识,用户在小程序appid下的唯一标识。 下单前需获取到用户的Openid 示例值: oUpF8uMuAJO_M2pxb1Q9zNjWeS6o 字符字节限制: [1, 128]")
	@NotBlank(message = "openid不能为空")
	private String openid;
}

3.ShippingDTO

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
 * 微信小程序-发货信息录入-入参DTO
 *
 * @author hcx
 */
@Data
public class ShippingDTO implements Serializable {
	@Schema(description = "物流单号,物流快递发货时必填,示例值: 323244567777 字符字节限制: [1, 128]")
	private String tracking_no;
	@Schema(description = "物流公司编码,快递公司ID,参见「查询物流公司编码列表」,物流快递发货时必填, 示例值: DHL 字符字节限制: [1, 128]")
	private String express_company;
	@Schema(description = "必填 商品信息,例如:微信红包抱枕*1个,限120个字以内")
	@NotBlank(message = "item_desc不能为空")
	private String item_desc;
	@Schema(description = "联系方式,当发货的物流公司为顺丰时,联系方式为必填,收件人或寄件人联系方式二选一")
	private ContactDTO contact;
}

4.ContactDTO

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
 * 微信小程序-发货信息录入-入参DTO
 *
 * @author hcx
 */
@Data
public class ContactDTO implements Serializable {
	@Schema(description = "寄件人联系方式,寄件人联系方式,采用掩码传输,最后4位数字不能打掩码 示例值: `189****1234, 021-****1234, ****1234, 0**2-***1234, 0**2-******23-10, ****123-8008` 值限制: 0 ≤ value ≤ 1024")
	private String consignor_contact;
	@Schema(description = "收件人联系方式,收件人联系方式为,采用掩码传输,最后4位数字不能打掩码 示例值: `189****1234, 021-****1234, ****1234, 0**2-***1234, 0**2-******23-10, ****123-8008` 值限制: 0 ≤ value ≤ 1024")
	private String receiver_contact;
}

5.OrderKeyDTO

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
 * 微信小程序-发货信息录入-入参DTO
 *
 * @author hcx
 */
@Data
public class OrderKeyDTO implements Serializable {
	@Schema(description = "必填 订单单号类型,用于确认需要上传详情的订单。枚举值1,使用下单商户号和商户侧单号;枚举值2,使用微信支付单号。")
	@NotNull(message = "order_number_type不能为空")
	private Integer order_number_type;
	@Schema(description = "原支付交易对应的微信订单号")
	private String transaction_id;
	@Schema(description = "支付下单商户的商户号,由微信支付生成并下发。")
	private String mchid;
	@Schema(description = "商户系统内部订单号,只能是数字、大小写字母`_-*`且在同一个商户号下唯一")
	private String out_trade_no;
}

二、junit测试接口

import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.ArrayList;
@SpringBootTest
@Slf4j
public class WeiXinApplicationTests {
	/**
	 * 发货信息录入接口-模拟入参
	 */
	private static WxDeliverGoodsDTO getWxDeliverGoodsVo(){
	WxDeliverGoodsDTO vo = new WxDeliverGoodsDTO();
	OrderKeyDTO order_key = new OrderKeyDTO();
	order_key.setMchid("");
	order_key.setOrder_number_type(2);	// 必填
	order_key.setOut_trade_no("");
	order_key.setTransaction_id("fake-transid-20221214190427-1");
	ArrayList list = new ArrayList();
	ShippingDTO shipping = new ShippingDTO();
	shipping.setExpress_company("STO");
	shipping.setItem_desc("微信气泡狗集线器*1");	// 必填
	shipping.setTracking_no("fake-trackingno-2022121419042711");
	ContactDTO contact = new ContactDTO();
//	contact.setConsignor_contact("+86-177****1234");
	contact.setConsignor_contact("13278653987".replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"));	// 手机号掩码处理
	contact.setReceiver_contact("");
	shipping.setContact(contact);
	list.add(shipping);
	PayerDTO payer = new PayerDTO();
	payer.setOpenid("ogqztkPsejM9MQAFfwCQSCi4oNg3");	// 必填
	vo.setOrder_key(order_key);	// 必填
	vo.setLogistics_type(1);	// 必填
	vo.setDelivery_mode(1);	// 必填
	vo.setIs_all_delivered(false);	// 分拆发货模式时必填
	vo.setShipping_list(list);	// 必填
//	vo.setUpload_time("2022-12-15T13:29:35.120+08:00");	// 必填
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
	vo.setUpload_time(sdf.format(new Date()));	// 必填
	vo.setPayer(payer);	// 必填
	return vo;
	}
	/**
	 * 微信小程序-发货信息录入接口
	 * */
	@Test
	void test01(){
	try {
	String accessToken = "接口调用凭证accessToken";
	String url = "https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info?access_token="+accessToken+"";
	/* 获取模拟入参 */
	WxDeliverGoodsVo vo = WeiXinApplicationTests.getWxDeliverGoodsVo();
	String param = JSONObject.toJSONString(vo);
	System.out.println("入参 = " + param);
	String result = HttpUtil.post(url, param);
	JSONObject jsonObject = JSON.parseObject(result);
	int errcode = jsonObject.getInteger("errcode");
	if (errcode != 0) {
	String errmsg = jsonObject.getString("errmsg");
	String err = String.format("微信小程序-发货信息录入接口异常,code码:%s, msg:%s", errcode, errmsg);
	log.error(err);
	throw new CommonException(errcode, "微信小程序-发货信息录入接口异常:" + errmsg);
	}
	} catch (Exception e) {
	throw new CommonException(e.getMessage());
	}
	}
}

三、对接获取 express_company 物流公司编码

参见「查询物流公司编码列表」对接代码

作者:孤er尽悲欢绝原文地址:https://blog.csdn.net/qq_54386866/article/details/134382411

%s 个评论

要回复文章请先登录注册