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 物流公司编码
Java 微信小程序-发货信息录入接口 对接代码 Java 微信小程序-发货信息录入接口 对接代码 可以直接拷贝使用Java 微信小程序-发货信息录入接口 对接代码 Java 微信小程序-发货信息录入接口 对接代码 可以直接拷贝使用Java 微信小程序-发货信息录入接口 对接代码 Java 微信小程序-发货信息录入接口 对接代码 可以直接拷贝使用Java 微信小程序-发货信息录入接口 对接代码 Java 微信小程序-发货信息录入接口 对接代码 可以直接拷贝使用Java 微信小程序-发货信息录入接口 对接代码 Java 微信小程序-发货信息录入接口 对接代码 可以直接拷贝使用Java 微信小程序-发货信息录入接口 对接代码 Java 微信小程序-发货信息录入接口 对接代码 可以直接拷贝使用Java 微信小程序-发货信息录入接口 对接代码 Java 微信小程序-发货信息录入接口 对接代码 可以直接拷贝使用Java 微信小程序-发货信息录入接口 对接代码 Java 微信小程序-发货信息录入接口 对接代码 可以直接拷贝使用Java 微信小程序-发货信息录入接口 对接代码 Java 微信小程序-发货信息录入接口 对接代码 可以直接拷贝使用