🆕 #3083 【小程序】增加发货信息管理相关接口,【开放平台】增加第三方平台的购物订单管理等接口

This commit is contained in:
Molzx
2023-07-17 11:07:59 +08:00
committed by GitHub
parent 4423b3d638
commit b6b80a2dda
41 changed files with 2161 additions and 12 deletions

View File

@ -0,0 +1,89 @@
package cn.binarywang.wx.miniapp.api;
import cn.binarywang.wx.miniapp.bean.shop.request.shipping.*;
import cn.binarywang.wx.miniapp.bean.shop.response.WxMaOrderShippingInfoBaseResponse;
import cn.binarywang.wx.miniapp.bean.shop.response.WxMaOrderShippingInfoGetListResponse;
import cn.binarywang.wx.miniapp.bean.shop.response.WxMaOrderShippingInfoGetResponse;
import cn.binarywang.wx.miniapp.bean.shop.response.WxMaOrderShippingIsTradeManagedResponse;
import me.chanjar.weixin.common.error.WxErrorException;
/**
* @author xzh
* created on 2023/5/17 16:49
*/
public interface WxMaOrderShippingService {
/**
* 查询小程序是否已开通发货信息管理服务
*
* @param appId 待查询小程序的 appid非服务商调用时仅能查询本账号
* @return WxMaOrderShippingInfoBaseResponse
* @throws WxErrorException e
*/
WxMaOrderShippingIsTradeManagedResponse isTradeManaged(String appId)
throws WxErrorException;
/**
* 发货信息录入接口
*
* @param request 请求
* @return WxMaOrderShippingInfoBaseResponse
* @throws WxErrorException e
*/
WxMaOrderShippingInfoBaseResponse upload(WxMaOrderShippingInfoUploadRequest request)
throws WxErrorException;
/**
* 发货信息合单录入接口
*
* @param request 请求
* @return WxMaOrderShippingInfoBaseResponse
* @throws WxErrorException e
*/
WxMaOrderShippingInfoBaseResponse upload(WxMaOrderCombinedShippingInfoUploadRequest request)
throws WxErrorException;
/**
* 查询订单发货状态
* 你可以通过交易单号或商户号+商户单号来查询该支付单的发货状态。
*
* @param request 请求
* @return WxMaOrderShippingInfoGetResponse
* @throws WxErrorException e
*/
WxMaOrderShippingInfoGetResponse get(WxMaOrderShippingInfoGetRequest request)
throws WxErrorException;
/**
* 查询订单列表
* 你可以通过支付时间、支付者openid或订单状态来查询订单列表。
*
* @param request 请求
* @return WxMaOrderShippingInfoGetListResponse
* @throws WxErrorException e
*/
WxMaOrderShippingInfoGetListResponse getList(WxMaOrderShippingInfoGetListRequest request)
throws WxErrorException;
/**
* 确认收货提醒接口
* 如你已经从你的快递物流服务方获知到用户已经签收相关商品,可以通过该接口提醒用户及时确认收货,以提高资金结算效率,每个订单仅可调用一次。
*
* @param request 请求
* @return WxMaOrderShippingInfoBaseResponse
* @throws WxErrorException e
*/
WxMaOrderShippingInfoBaseResponse notifyConfirmReceive(WxMaOrderShippingInfoNotifyConfirmRequest request)
throws WxErrorException;
/**
* 消息跳转路径设置接口
* 如你已经在小程序内接入平台提供的确认收货组件,可以通过该接口设置发货消息及确认收货消息的跳转动作,用户点击发货消息时会直接进入你的小程序订单列表页面或详情页面进行确认收货,进一步优化用户体验。
*
* @param path 商户自定义跳转路径
* @return WxMaOrderShippingInfoBaseResponse
* @throws WxErrorException e
*/
WxMaOrderShippingInfoBaseResponse setMsgJumpPath(String path)
throws WxErrorException;
}

View File

@ -496,36 +496,49 @@ public interface WxMaService extends WxService {
/**
* 分享人接口
*
* @return WxMaShopSharerService
*/
WxMaShopSharerService getShopSharerService();
/**
* 标准交易组件接口
*
* @return WxMaProductService
*/
WxMaProductService getProductService();
/**
* 小商店-标准交易组件-订单服务
*
* @return getProductOrderService
*/
WxMaProductOrderService getProductOrderService();
/**
* 小商店-标准交易组件-优惠券
*
* @return getWxMaShopCouponService
*/
WxMaShopCouponService getWxMaShopCouponService();
/**
* 小程序支付管理-订单支付
*
* @return getWxMaShopPayService
*/
WxMaShopPayService getWxMaShopPayService();
/**
* 小程序发货信息管理服务
*
* @return getWxMaOrderShippingService
*/
WxMaOrderShippingService getWxMaOrderShippingService();
/**
* 小程序openApi管理
*
* @return getWxMaOpenApiService
*/
WxMaOpenApiService getWxMaOpenApiService();

View File

@ -85,7 +85,11 @@ public abstract class BaseWxMaServiceImpl<H, P> implements WxMaService, RequestH
private final WxMaProductOrderService productOrderService = new WxMaProductOrderServiceImpl(this);
private final WxMaShopCouponService wxMaShopCouponService = new WxMaShopCouponServiceImpl(this);
private final WxMaShopPayService wxMaShopPayService = new WxMaShopPayServiceImpl(this);
private final WxMaOrderShippingService wxMaOrderShippingService = new WxMaOrderShippingServiceImpl(this);
private final WxMaOpenApiService wxMaOpenApiService = new WxMaOpenApiServiceImpl(this);
private Map<String, WxMaConfig> configMap;
private int retrySleepMillis = 1000;
private int maxRetryTimes = 5;
@ -602,10 +606,14 @@ public abstract class BaseWxMaServiceImpl<H, P> implements WxMaService, RequestH
}
@Override
public WxMaDeviceSubscribeService getDeviceSubscribeService(){ return this.deviceSubscribeService; }
public WxMaDeviceSubscribeService getDeviceSubscribeService() {
return this.deviceSubscribeService;
}
@Override
public WxMaMarketingService getMarketingService() {return this.marketingService; }
public WxMaMarketingService getMarketingService() {
return this.marketingService;
}
@Override
public WxMaImmediateDeliveryService getWxMaImmediateDeliveryService() {
@ -613,13 +621,19 @@ public abstract class BaseWxMaServiceImpl<H, P> implements WxMaService, RequestH
}
@Override
public WxMaSafetyRiskControlService getSafetyRiskControlService(){ return this.safetyRiskControlService; }
public WxMaSafetyRiskControlService getSafetyRiskControlService() {
return this.safetyRiskControlService;
}
@Override
public WxMaShopSharerService getShopSharerService() {return this.shopSharerService; }
public WxMaShopSharerService getShopSharerService() {
return this.shopSharerService;
}
@Override
public WxMaProductService getProductService() { return this.productService; }
public WxMaProductService getProductService() {
return this.productService;
}
@Override
public WxMaProductOrderService getProductOrderService() {
@ -636,6 +650,16 @@ public abstract class BaseWxMaServiceImpl<H, P> implements WxMaService, RequestH
return this.wxMaShopPayService;
}
/**
* 小程序发货信息管理服务
*
* @return getWxMaOrderShippingService
*/
@Override
public WxMaOrderShippingService getWxMaOrderShippingService() {
return this.wxMaOrderShippingService;
}
@Override
public WxMaOpenApiService getWxMaOpenApiService() {
return this.wxMaOpenApiService;

View File

@ -0,0 +1,134 @@
package cn.binarywang.wx.miniapp.api.impl;
import cn.binarywang.wx.miniapp.api.WxMaOrderShippingService;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.shop.request.WxMaOrderShippingIsTradeManagedRequest;
import cn.binarywang.wx.miniapp.bean.shop.request.shipping.*;
import cn.binarywang.wx.miniapp.bean.shop.response.WxMaOrderShippingInfoBaseResponse;
import cn.binarywang.wx.miniapp.bean.shop.response.WxMaOrderShippingInfoGetListResponse;
import cn.binarywang.wx.miniapp.bean.shop.response.WxMaOrderShippingInfoGetResponse;
import cn.binarywang.wx.miniapp.bean.shop.response.WxMaOrderShippingIsTradeManagedResponse;
import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder;
import com.google.gson.JsonObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.enums.WxType;
import me.chanjar.weixin.common.error.WxError;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.util.json.GsonHelper;
import me.chanjar.weixin.common.util.json.GsonParser;
import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.OrderShipping.*;
import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Product.OTHER.GET_CATEGORY;
/**
* @author xzh
* created on 2023/5/17 17:44
*/
@Slf4j
@RequiredArgsConstructor
public class WxMaOrderShippingServiceImpl implements WxMaOrderShippingService {
private final WxMaService wxMaService;
/**
* 查询小程序是否已开通发货信息管理服务
*
* @param appId 待查询小程序的 appid非服务商调用时仅能查询本账号
* @return WxMaOrderShippingInfoBaseResponse
* @throws WxErrorException e
*/
@Override
public WxMaOrderShippingIsTradeManagedResponse isTradeManaged(String appId) throws WxErrorException {
WxMaOrderShippingIsTradeManagedRequest request = WxMaOrderShippingIsTradeManagedRequest.builder().appId(appId).build();
return request(IS_TRADE_MANAGED, request, WxMaOrderShippingIsTradeManagedResponse.class);
}
/**
* 发货信息录入接口
*
* @param request 请求
* @return WxMaOrderShippingInfoBaseResponse
* @throws WxErrorException e
*/
@Override
public WxMaOrderShippingInfoBaseResponse upload(WxMaOrderShippingInfoUploadRequest request) throws WxErrorException {
return request(UPLOAD_SHIPPING_INFO, request, WxMaOrderShippingInfoBaseResponse.class);
}
/**
* 发货信息合单录入接口
*
* @param request 请求
* @return WxMaOrderShippingInfoBaseResponse
* @throws WxErrorException e
*/
@Override
public WxMaOrderShippingInfoBaseResponse upload(WxMaOrderCombinedShippingInfoUploadRequest request) throws WxErrorException {
return request(UPLOAD_COMBINED_SHIPPING_INFO, request, WxMaOrderShippingInfoBaseResponse.class);
}
/**
* 查询订单发货状态
* 你可以通过交易单号或商户号+商户单号来查询该支付单的发货状态。
*
* @param request 请求
* @return WxMaOrderShippingInfoGetResponse
* @throws WxErrorException e
*/
@Override
public WxMaOrderShippingInfoGetResponse get(WxMaOrderShippingInfoGetRequest request) throws WxErrorException {
return request(GET_SHIPPING_INFO, request, WxMaOrderShippingInfoGetResponse.class);
}
/**
* 查询订单列表
* 你可以通过支付时间、支付者openid或订单状态来查询订单列表。
*
* @param request 请求
* @return WxMaOrderShippingInfoGetListResponse
* @throws WxErrorException e
*/
@Override
public WxMaOrderShippingInfoGetListResponse getList(WxMaOrderShippingInfoGetListRequest request) throws WxErrorException {
return request(GET_SHIPPING_INFO_LIST, request, WxMaOrderShippingInfoGetListResponse.class);
}
/**
* 确认收货提醒接口
* 如你已经从你的快递物流服务方获知到用户已经签收相关商品,可以通过该接口提醒用户及时确认收货,以提高资金结算效率,每个订单仅可调用一次。
*
* @param request 请求
* @return WxMaOrderShippingInfoBaseResponse
* @throws WxErrorException e
*/
@Override
public WxMaOrderShippingInfoBaseResponse notifyConfirmReceive(WxMaOrderShippingInfoNotifyConfirmRequest request) throws WxErrorException {
return request(NOTIFY_CONFIRM_RECEIVE, request, WxMaOrderShippingInfoBaseResponse.class);
}
/**
* 消息跳转路径设置接口
* 如你已经在小程序内接入平台提供的确认收货组件,可以通过该接口设置发货消息及确认收货消息的跳转动作,用户点击发货消息时会直接进入你的小程序订单列表页面或详情页面进行确认收货,进一步优化用户体验。
*
* @param path 商户自定义跳转路径
* @return WxMaOrderShippingInfoBaseResponse
* @throws WxErrorException e
*/
@Override
public WxMaOrderShippingInfoBaseResponse setMsgJumpPath(String path) throws WxErrorException {
JsonObject jsonObject = GsonHelper.buildJsonObject("path", path);
return request(SET_MSG_JUMP_PATH, jsonObject, WxMaOrderShippingInfoBaseResponse.class);
}
private <T> T request(String url, Object request, Class<T> resultT) throws WxErrorException {
String responseContent = this.wxMaService.post(url, request);
JsonObject jsonObject = GsonParser.parse(responseContent);
if (jsonObject.get(WxConsts.ERR_CODE).getAsInt() != 0) {
throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp));
}
return WxMaGsonBuilder.create().fromJson(responseContent, resultT);
}
}

View File

@ -0,0 +1,30 @@
package cn.binarywang.wx.miniapp.bean.shop.request;
import com.google.gson.annotations.SerializedName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @author xzh
* created on 2023/5/17 17:01
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WxMaOrderShippingIsTradeManagedRequest implements Serializable {
private static final long serialVersionUID = -5735132900385013330L;
/**
* 必填
* 待查询小程序的 appid非服务商调用时仅能查询本账号
*/
@SerializedName("appid")
private String appId;
}

View File

@ -0,0 +1,33 @@
package cn.binarywang.wx.miniapp.bean.shop.request.shipping;
import com.google.gson.annotations.SerializedName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author xzh
* @Description
* @createTime 2023/07/10 10:38
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ContactBean implements Serializable {
private static final long serialVersionUID = 3388264169113920140L;
/**
* 寄件人联系方式寄件人联系方式采用掩码传输最后4位数字不能打掩码 示例值: `189****1234, 021-****1234, ****1234, 0**2-***1234, 0**2-******23-10, ****123-8008` 值限制: 0 ≤ value ≤ 1024
*/
@SerializedName("consignor_contact")
private String consignorContact;
/**
* 收件人联系方式收件人联系方式为采用掩码传输最后4位数字不能打掩码 示例值: `189****1234, 021-****1234, ****1234, 0**2-***1234, 0**2-******23-10, ****123-8008` 值限制: 0 ≤ value ≤ 1024
*/
@SerializedName("receiver_contact")
private String receiverContact;
}

View File

@ -0,0 +1,44 @@
package cn.binarywang.wx.miniapp.bean.shop.request.shipping;
import com.google.gson.annotations.SerializedName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author xzh
* @Description
* @createTime 2023/07/10 10:37
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderKeyBean implements Serializable {
private static final long serialVersionUID = -6322907878214196106L;
/**
* 必填
* 订单单号类型用于确认需要上传详情的订单。枚举值1使用下单商户号和商户侧单号枚举值2使用微信支付单号。
*/
@SerializedName("order_number_type")
private int orderNumberType;
/**
* 原支付交易对应的微信订单号
*/
@SerializedName("transaction_id")
private String transactionId;
/**
* 支付下单商户的商户号,由微信支付生成并下发。
*/
@SerializedName("mchid")
private String mchId;
/**
* 商户系统内部订单号,只能是数字、大小写字母`_-*`且在同一个商户号下唯一
*/
@SerializedName("out_trade_no")
private String outTradeNo;
}

View File

@ -0,0 +1,29 @@
package cn.binarywang.wx.miniapp.bean.shop.request.shipping;
import com.google.gson.annotations.SerializedName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author xzh
* @Description
* @createTime 2023/07/10 10:38
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PayerBean implements Serializable {
private static final long serialVersionUID = 6628077253606871512L;
/**
* 必填
* 用户标识用户在小程序appid下的唯一标识。 下单前需获取到用户的Openid 示例值: oUpF8uMuAJO_M2pxb1Q9zNjWeS6o 字符字节限制: [1, 128]
*/
@SerializedName("openid")
private String openid;
}

View File

@ -0,0 +1,44 @@
package cn.binarywang.wx.miniapp.bean.shop.request.shipping;
import com.google.gson.annotations.SerializedName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author xzh
* @Description
* @createTime 2023/07/10 10:39
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ShippingListBean implements Serializable {
private static final long serialVersionUID = -6554762808990702774L;
/**
* 物流单号,物流快递发货时必填,示例值: 323244567777 字符字节限制: [1, 128]
*/
@SerializedName("tracking_no")
private String trackingNo;
/**
* 物流公司编码快递公司ID参见「查询物流公司编码列表」物流快递发货时必填 示例值: DHL 字符字节限制: [1, 128]
*/
@SerializedName("express_company")
private String expressCompany;
/**
* 必填
* 商品信息,例如:微信红包抱枕*1个限120个字以内
*/
@SerializedName("item_desc")
private String itemDesc;
/**
* 联系方式,当发货的物流公司为顺丰时,联系方式为必填,收件人或寄件人联系方式二选一
*/
@SerializedName("contact")
private ContactBean contact;
}

View File

@ -0,0 +1,96 @@
package cn.binarywang.wx.miniapp.bean.shop.request.shipping;
import cn.binarywang.wx.miniapp.bean.shop.request.shipping.ContactBean;
import cn.binarywang.wx.miniapp.bean.shop.request.shipping.OrderKeyBean;
import cn.binarywang.wx.miniapp.bean.shop.request.shipping.PayerBean;
import com.google.gson.annotations.SerializedName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @author xzh
* created on 2023/5/17 17:01
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WxMaOrderCombinedShippingInfoUploadRequest implements Serializable {
private static final long serialVersionUID = -334322216049787167L;
/**
* 必填
* 订单,需要上传物流信息的订单
*/
@SerializedName("order_key")
private OrderKeyBean orderKey;
@SerializedName("sub_orders")
private List<SubOrderBean> subOrders;
/**
* 必填
* 上传时间,用于标识请求的先后顺序 示例值: `2022-12-15T13:29:35.120+08:00
*/
@SerializedName("upload_time")
private String uploadTime;
/**
* 必填
* 支付者,支付者信息
*/
@SerializedName("payer")
private PayerBean payer;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class SubOrderBean implements Serializable {
private static final long serialVersionUID = -8999547192454376968L;
/**
* 必填
* 需要上传物流详情的子单订单,订单类型与合单订单保持一致
*/
@SerializedName("order_key")
private OrderKeyBean orderKey;
/**
* 必填
* 物流模式发货方式枚举值1、实体物流配送采用快递公司进行实体物流配送形式 2、同城配送 3、虚拟商品虚拟商品例如话费充值点卡等无实体配送形式 4、用户自提
*/
@SerializedName("logistics_type")
private int logisticsType;
/**
* 必填
* 发货模式发货模式枚举值1、UNIFIED_DELIVERY统一发货2、SPLIT_DELIVERY分拆发货
* 示例值: UNIFIED_DELIVERY
*/
@SerializedName("delivery_mode")
private int deliveryMode;
/**
* 分拆发货模式时必填,用于标识分拆发货模式下是否已全部发货完成,只有全部发货完成的情况下才会向用户推送发货完成通知。
* 示例值: true/false
*/
@SerializedName("is_all_delivered")
private Boolean isAllDelivered;
/**
* 子单物流信息列表 多重性: [1, 10]
*/
@SerializedName("shipping_list")
private List<ShippingListBean> shippingList;
}
}

View File

@ -0,0 +1,67 @@
package cn.binarywang.wx.miniapp.bean.shop.request.shipping;
import com.google.gson.annotations.SerializedName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author xzh
* created on 2023/5/17 17:01
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WxMaOrderShippingInfoGetListRequest implements Serializable {
private static final long serialVersionUID = -3682480001426075609L;
/**
* 支付时间所属范围
*/
@SerializedName("pay_time_range")
private PayTimeRange payTimeRange;
/**
* 订单状态枚举:(1) 待发货;(2) 已发货;(3) 确认收货;(4) 交易完成;(5) 已退款。
*/
@SerializedName("order_state")
private Integer orderState;
/**
* 支付者openid
*/
@SerializedName("openid")
private String openId;
/**
* 翻页时使用,获取第一页时不用传入,如果查询结果中 has_more 字段为 true则传入该次查询结果中返回的 last_index 字段可获取下一页。
*/
@SerializedName("last_index")
private String lastIndex;
/**
* 翻页时使用返回列表的长度默认为100。
*/
@SerializedName("page_size")
private Long pageSize;
@Data
public static class PayTimeRange implements Serializable {
private static final long serialVersionUID = -1477231289550635468L;
/**
* 起始时间时间戳形式不填则视为从0开始
*/
@SerializedName("begin_time")
private Long beginTime;
/**
* 结束时间时间戳形式不填则视为32位无符号整型的最大值
*/
@SerializedName("end_time")
private Long endTime;
}
}

View File

@ -0,0 +1,43 @@
package cn.binarywang.wx.miniapp.bean.shop.request.shipping;
import com.google.gson.annotations.SerializedName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author xzh
* created on 2023/5/17 17:01
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WxMaOrderShippingInfoGetRequest implements Serializable {
private static final long serialVersionUID = -6868378515860675152L;
/**
* 原支付交易对应的微信订单号
*/
@SerializedName("transaction_id")
private String transactionId;
/**
* 支付下单商户的商户号,由微信支付生成并下发
*/
@SerializedName("merchant_id")
private String merchantId;
/**
* 二级商户号
*/
@SerializedName("sub_merchant_id")
private String subMerchantId;
/**
* 商户系统内部订单号,只能是数字、大小写字母`_-*`且在同一个商户号下唯一。
*/
@SerializedName("merchant_trade_no")
private String merchantTradeNo;
}

View File

@ -0,0 +1,49 @@
package cn.binarywang.wx.miniapp.bean.shop.request.shipping;
import com.google.gson.annotations.SerializedName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author xzh
* created on 2023/5/17 17:01
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WxMaOrderShippingInfoNotifyConfirmRequest implements Serializable {
private static final long serialVersionUID = -6868378515860675152L;
/**
* 原支付交易对应的微信订单号
*/
@SerializedName("transaction_id")
private String transactionId;
/**
* 支付下单商户的商户号,由微信支付生成并下发
*/
@SerializedName("merchant_id")
private String merchantId;
/**
* 二级商户号
*/
@SerializedName("sub_merchant_id")
private String subMerchantId;
/**
* 商户系统内部订单号,只能是数字、大小写字母`_-*`且在同一个商户号下唯一。
*/
@SerializedName("merchant_trade_no")
private String merchantTradeNo;
/**
* 快递签收时间,时间戳形式。
*/
@SerializedName("received_time")
private Long receivedTime;
}

View File

@ -0,0 +1,74 @@
package cn.binarywang.wx.miniapp.bean.shop.request.shipping;
import com.google.gson.annotations.SerializedName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @author xzh
* created on 2023/5/17 17:01
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WxMaOrderShippingInfoUploadRequest implements Serializable {
private static final long serialVersionUID = -334322216049787167L;
/**
* 必填
* 订单,需要上传物流信息的订单
*/
@SerializedName("order_key")
private OrderKeyBean orderKey;
/**
* 必填
* 物流模式发货方式枚举值1、实体物流配送采用快递公司进行实体物流配送形式 2、同城配送 3、虚拟商品虚拟商品例如话费充值点卡等无实体配送形式 4、用户自提
*/
@SerializedName("logistics_type")
private int logisticsType;
/**
* 必填
* 发货模式发货模式枚举值1、UNIFIED_DELIVERY统一发货2、SPLIT_DELIVERY分拆发货
* 示例值: UNIFIED_DELIVERY
*/
@SerializedName("delivery_mode")
private int deliveryMode;
/**
* 分拆发货模式时必填,用于标识分拆发货模式下是否已全部发货完成,只有全部发货完成的情况下才会向用户推送发货完成通知。
* 示例值: true/false
*/
@SerializedName("is_all_delivered")
private Boolean isAllDelivered;
/**
* 必填
* 物流信息列表,发货物流单列表,支持统一发货(单个物流单)和分拆发货(多个物流单)两种模式,多重性: [1, 10]
*/
@SerializedName("shipping_list")
private List<ShippingListBean> shippingList;
/**
* 必填
* 上传时间,用于标识请求的先后顺序 示例值: `2022-12-15T13:29:35.120+08:00
*/
@SerializedName("upload_time")
private String uploadTime;
/**
* 必填
* 支付者,支付者信息
*/
@SerializedName("payer")
private PayerBean payer;
}

View File

@ -0,0 +1,187 @@
package cn.binarywang.wx.miniapp.bean.shop.response;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @author xzh
* created on 2023/5/17 17:01
*/
@Data
public class WxMaOrderShippingInfoBaseResponse implements Serializable {
private static final long serialVersionUID = -5414031943436195493L;
/**
* 错误码
*/
@SerializedName("errcode")
private Integer errCode;
/**
* 错误原因
*/
@SerializedName("errmsg")
private String errMsg;
//region 类型定义
@Data
public static class Order implements Serializable {
private static final long serialVersionUID = -1390355751615987663L;
/**
* 原支付交易对应的微信订单号
*/
@SerializedName("transaction_id")
private String transactionId;
/**
* 支付下单商户的商户号,由微信支付生成并下发
*/
@SerializedName("merchant_id")
private String merchantId;
/**
* 二级商户号
*/
@SerializedName("sub_merchant_id")
private String subMerchantId;
/**
* 商户系统内部订单号,只能是数字、大小写字母`_-*`且在同一个商户号下唯一。
*/
@SerializedName("merchant_trade_no")
private String merchantTradeNo;
/**
* 以分号连接的该支付单的所有商品描述当超过120字时自动截断并以 “...” 结尾。
*/
@SerializedName("description")
private String description;
/**
* 支付单实际支付金额,整型,单位:分钱。
*/
@SerializedName("paid_amount")
private Long paidAmount;
/**
* 支付者openid
*/
@SerializedName("openid")
private String openId;
/**
* 交易创建时间,时间戳形式
*/
@SerializedName("trade_create_time")
private Long tradeCreateTime;
/**
* 支付时间,时间戳形式。
*/
@SerializedName("pay_time")
private Long payTime;
/**
* 订单状态枚举:(1) 待发货;(2) 已发货;(3) 确认收货;(4) 交易完成;(5) 已退款。
*/
@SerializedName("order_state")
private Integer orderState;
/**
* 是否处在交易纠纷中
*/
@SerializedName("in_complaint")
private Boolean inComplaint;
/**
* 发货信息
*/
@SerializedName("shipping")
private Shipping shipping;
}
@Data
public static class Shipping implements Serializable {
private static final long serialVersionUID = -3527308640256070121L;
/**
* 发货模式发货模式枚举值1、UNIFIED_DELIVERY统一发货2、SPLIT_DELIVERY分拆发货 示例值: UNIFIED_DELIVERY
*/
@SerializedName("delivery_mode")
private Integer deliveryMode;
/**
* 物流模式发货方式枚举值1、实体物流配送采用快递公司进行实体物流配送形式 2、同城配送 3、虚拟商品虚拟商品例如话费充值点卡等无实体配送形式 4、用户自提
*/
@SerializedName("logistics_type")
private Integer logisticsType;
/**
* 是否已完成全部发货
*/
@SerializedName("finish_shipping")
private Boolean finishShipping;
/**
* 在小程序后台发货信息录入页录入的商品描述
*/
@SerializedName("goods_desc")
private String goodsDesc;
/**
* 已完成全部发货的次数,未完成时为 0完成时为 1重新发货并完成后为 2。
*/
@SerializedName("finish_shipping_count")
private Integer finishShippingCount;
/**
* 物流信息列表,发货物流单列表,支持统一发货(单个物流单)和分拆发货(多个物流单)两种模式。
*/
@SerializedName("shipping_list")
private List<ShippingItem> shippingList;
}
@Data
public static class ShippingItem implements Serializable {
private static final long serialVersionUID = 7064368114873624112L;
/**
* 物流单号,示例值: "323244567777"。
*/
@SerializedName("tracking_no")
private String trackingNo;
/**
* 同城配送公司名或物流公司编码快递公司ID参见「查询物流公司编码列表」 示例值: "DHL"。
*/
@SerializedName("express_company")
private String expressCompany;
/**
* 使用上传物流信息 API 录入的该物流信息的商品描述。
*/
@SerializedName("goods_desc")
private String goodsDesc;
/**
* 该物流信息的上传时间,时间戳形式。
*/
@SerializedName("upload_time")
private Long uploadTime;
/**
* 联系方式
*/
@SerializedName("contact")
private Contact contact;
}
@Data
public static class Contact implements Serializable {
private static final long serialVersionUID = -320914533207502380L;
/**
* 寄件人联系方式
*/
@SerializedName("consignor_contact")
private String consignorContact;
/**
* 收件人联系方式
*/
@SerializedName("receiver_contact")
private String receiverContact;
}
//endregion
}

View File

@ -0,0 +1,34 @@
package cn.binarywang.wx.miniapp.bean.shop.response;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @author xzh
* created on 2023/5/17 17:01
*/
@Data
public class WxMaOrderShippingInfoGetListResponse extends WxMaOrderShippingInfoBaseResponse implements Serializable {
private static final long serialVersionUID = -5414031943436195493L;
/**
* 翻页时使用
*/
@SerializedName("last_index")
private String lastIndex;
/**
* 是否还有更多支付单
*/
@SerializedName("has_more")
private Boolean hasMore;
/**
* 支付单信息列表。
*/
@SerializedName("order_list")
private List<Order> orderList;
}

View File

@ -0,0 +1,22 @@
package cn.binarywang.wx.miniapp.bean.shop.response;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import java.io.Serializable;
/**
* @author xzh
* created on 2023/5/17 17:01
*/
@Data
public class WxMaOrderShippingInfoGetResponse extends WxMaOrderShippingInfoBaseResponse implements Serializable {
private static final long serialVersionUID = -5414031943436195493L;
/**
* 支付单信息
*/
@SerializedName("order")
private Order order;
}

View File

@ -0,0 +1,33 @@
package cn.binarywang.wx.miniapp.bean.shop.response;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import java.io.Serializable;
/**
* @author xzh
* created on 2023/5/17 17:01
*/
@Data
public class WxMaOrderShippingIsTradeManagedResponse implements Serializable {
private static final long serialVersionUID = -5397007157487018762L;
/**
* 错误码
*/
@SerializedName("errcode")
private Integer errCode;
/**
* 错误原因
*/
@SerializedName("errmsg")
private String errMsg;
/**
* 是否已开通小程序发货信息管理服务
*/
@SerializedName("is_trade_managed")
private Boolean tradeManaged;
}

View File

@ -764,4 +764,69 @@ public class WxMaApiUrlConstants {
}
/**
* 发货信息管理服务相关接口
* <pre>
* 文档地址: 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
* </pre>
*/
public interface OrderShipping {
/**
* 查询小程序是否已开通发货信息管理服务.
* <pre>
* 文档地址https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/order-shipping/order-shipping.html#%E4%B8%83%E3%80%81%E6%9F%A5%E8%AF%A2%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%98%AF%E5%90%A6%E5%B7%B2%E5%BC%80%E9%80%9A%E5%8F%91%E8%B4%A7%E4%BF%A1%E6%81%AF%E7%AE%A1%E7%90%86%E6%9C%8D%E5%8A%A1
* </pre>
*/
String IS_TRADE_MANAGED = "https://api.weixin.qq.com/wxa/sec/order/is_trade_managed";
/**
* 发货信息录入接口.
* <pre>
* 文档地址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
* </pre>
*/
String UPLOAD_SHIPPING_INFO = "https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info";
/**
* 发货信息合单录入接口.
* <pre>
* 文档地址https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/order-shipping/order-shipping.html#%E4%BA%8C%E3%80%81%E5%8F%91%E8%B4%A7%E4%BF%A1%E6%81%AF%E5%90%88%E5%8D%95%E5%BD%95%E5%85%A5%E6%8E%A5%E5%8F%A3
* </pre>
*/
String UPLOAD_COMBINED_SHIPPING_INFO = "https://api.weixin.qq.com/wxa/sec/order/upload_combined_shipping_info";
/**
* 查询订单发货状态.
* <pre>
* 文档地址https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/order-shipping/order-shipping.html#%E4%BA%8C%E3%80%81%E5%8F%91%E8%B4%A7%E4%BF%A1%E6%81%AF%E5%90%88%E5%8D%95%E5%BD%95%E5%85%A5%E6%8E%A5%E5%8F%A3
* </pre>
*/
String GET_SHIPPING_INFO = "https://api.weixin.qq.com/wxa/sec/order/get_order";
/**
* 查询订单发货状态列表.
* <pre>
* 文档地址https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/order-shipping/order-shipping.html#%E5%9B%9B%E3%80%81%E6%9F%A5%E8%AF%A2%E8%AE%A2%E5%8D%95%E5%88%97%E8%A1%A8
* </pre>
*/
String GET_SHIPPING_INFO_LIST = "https://api.weixin.qq.com/wxa/sec/order/get_order_list";
/**
* 确认收货提醒接口.
* <pre>
* 文档地址https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/order-shipping/order-shipping.html#%E4%BA%94%E3%80%81%E7%A1%AE%E8%AE%A4%E6%94%B6%E8%B4%A7%E6%8F%90%E9%86%92%E6%8E%A5%E5%8F%A3
* </pre>
*/
String NOTIFY_CONFIRM_RECEIVE = "https://api.weixin.qq.com/wxa/sec/order/notify_confirm_receive";
/**
* 消息跳转路径设置接口.
* <pre>
* 文档地址https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/order-shipping/order-shipping.html#%E5%85%AD%E3%80%81%E6%B6%88%E6%81%AF%E8%B7%B3%E8%BD%AC%E8%B7%AF%E5%BE%84%E8%AE%BE%E7%BD%AE%E6%8E%A5%E5%8F%A3
* </pre>
*/
String SET_MSG_JUMP_PATH = "https://api.weixin.qq.com/wxa/sec/order/set_msg_jump_path";
}
}