🆕 #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

@ -8,6 +8,7 @@ import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.open.bean.WxOpenCreateResult;
import me.chanjar.weixin.open.bean.WxOpenGetResult;
import me.chanjar.weixin.open.bean.WxOpenMaCodeTemplate;
import me.chanjar.weixin.open.bean.ma.WxOpenMaApplyOrderPathInfo;
import me.chanjar.weixin.open.bean.message.WxOpenXmlMessage;
import me.chanjar.weixin.open.bean.minishop.*;
import me.chanjar.weixin.open.bean.minishop.coupon.WxMinishopCoupon;
@ -1097,4 +1098,20 @@ public interface WxOpenComponentService {
*/
WxOpenResult clearQuotaV2(String appid) throws WxErrorException;
//////////////////////////////////////////////////////////////
/**
* 申请设置订单页path信息
*/
String OPEN_APPLY_SET_ORDER_PATH_INFO = "https://api.weixin.qq.com/wxa/security/applysetorderpathinfo";
/**
* 申请设置订单页path信息
* 注意一次提交不超过100个appid
*
* @param info 订单页path信息
* @return .
* @throws WxErrorException .
*/
WxOpenResult applySetOrderPathInfo(WxOpenMaApplyOrderPathInfo info) throws WxErrorException;
}

View File

@ -2,6 +2,7 @@ package me.chanjar.weixin.open.api;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.open.bean.ma.WxFastMaCategory;
import me.chanjar.weixin.open.bean.ma.WxOpenMaApplyOrderPathInfo;
import me.chanjar.weixin.open.bean.result.*;
import java.util.List;
@ -69,6 +70,11 @@ public interface WxOpenMaBasicService {
*/
String OPEN_MODIFY_CATEGORY = "https://api.weixin.qq.com/cgi-bin/wxopen/modifycategory";
/**
* 获取订单页path信息
*/
String OPEN_GET_ORDER_PATH_INFO = "https://api.weixin.qq.com/wxa/security/getorderpathinfo";
/**
* 1.获取小程序的信息
@ -196,4 +202,13 @@ public interface WxOpenMaBasicService {
* @throws WxErrorException .
*/
WxOpenResult modifyCategory(WxFastMaCategory category) throws WxErrorException;
/**
* 获取订单页Path信息
*
* @param infoType 0:线上版1:审核版
* @return 订单页Path信息
* @throws WxErrorException .
*/
WxOpenMaGetOrderPathResult getOrderPathInfo(int infoType) throws WxErrorException;
}

View File

@ -684,6 +684,12 @@ public interface WxOpenMaService extends WxMaService {
*/
WxOpenMaPrivacyService getPrivacyService();
/**
* 购物订单
* @return 购物订单服务
*/
WxOpenMaShoppingOrdersService getShoppingOrdersService();
/**
* 小程序审核 提审素材上传接口
*

View File

@ -0,0 +1,111 @@
package me.chanjar.weixin.open.api;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.open.bean.result.WxOpenResult;
import me.chanjar.weixin.open.bean.shoppingOrders.*;
/**
* @author xzh
* created on 2023/5/17 16:49
*/
public interface WxOpenMaShoppingOrdersService {
/**
* 上传购物详情
*/
String UPLOAD_SHOPPING_INFO = "https://api.weixin.qq.com/user-order/orders";
/**
* 上传物流信息
*/
String UPLOAD_SHIPPING_INFO = "https://api.weixin.qq.com/user-order/orders/shippings";
/**
* 上传合单购物详情
*/
String UPLOAD_COMBINED_SHOPPING_INFO = "https://api.weixin.qq.com/user-order/combine-orders";
/**
* 上传合单物流信息
*/
String UPLOAD_COMBINED_SHIPPING_INFO = "https://api.weixin.qq.com/user-order/combine-orders/shippings";
/**
* 开通购物订单产品权限
*/
String OPEN_SHOPPING_ORDER_PRODUCT_PERMISSION = "https://api.weixin.qq.com/user-order/orders-permission/open";
/**
* 提交购物订单接入审核
*/
String CONFIRM_PRODUCT_PERMISSION = "https://api.weixin.qq.com/user-order/orders-permission/confirm";
/**
* 验证购物订单上传结果
*/
String SHOPPING_INFO_VERIFY_UPLOAD_RESULT = "https://api.weixin.qq.com/user-order/shoppinginfo/verify";
/**
* 上传购物详情
*
* @param info 购物详情
* @return WxOpenResult
* @throws WxErrorException
*/
WxOpenResult upload(ShoppingInfo info) throws WxErrorException;
/**
* 上传物流信息
*
* @param info 物流信息
* @return WxOpenResult
* @throws WxErrorException
*/
WxOpenResult upload(ShippingInfo info) throws WxErrorException;
/**
* 上传合单购物详情
*
* @param info 购物详情
* @return WxOpenResult
* @throws WxErrorException
*/
WxOpenResult upload(CombinedShoppingInfo info) throws WxErrorException;
/**
* 上传合单物流信息
*
* @param info 物流信息
* @return WxOpenResult
* @throws WxErrorException
*/
WxOpenResult upload(CombinedShippingInfo info) throws WxErrorException;
/**
* 开通购物订单产品权限
*
* @return WxOpenResult
* @throws WxErrorException
*/
WxOpenResult openShoppingOrderProductPermission() throws WxErrorException;
/**
* 提交购物订单接入审核
*
* @return WxOpenShoppingOrdersConfirmResult
* @throws WxErrorException
*/
WxOpenShoppingOrdersConfirmResult confirmProductPermission() throws WxErrorException;
/**
* 验证购物订单上传结果
*
* @param info 信息
* @return WxOpenResult
* @throws WxErrorException
*/
WxOpenShoppingInfoVerifyUploadResult verifyUploadResult(ShoppingInfoVerifyUpload info) throws WxErrorException;
}

View File

@ -21,6 +21,7 @@ import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.open.api.*;
import me.chanjar.weixin.open.bean.*;
import me.chanjar.weixin.open.bean.auth.WxOpenAuthorizationInfo;
import me.chanjar.weixin.open.bean.ma.WxOpenMaApplyOrderPathInfo;
import me.chanjar.weixin.open.bean.message.WxOpenXmlMessage;
import me.chanjar.weixin.open.bean.minishop.*;
import me.chanjar.weixin.open.bean.minishop.coupon.WxMinishopCoupon;
@ -1237,7 +1238,7 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService {
public GetShareCloudBaseEnvResponse getShareCloudBaseEnv(List<String> appids) throws WxErrorException {
JsonObject jsonObject = new JsonObject();
JsonArray jsonArray = new JsonArray();
for(String appId : appids) {
for (String appId : appids) {
jsonArray.add(appId);
}
jsonObject.add("appids", jsonArray);
@ -1275,4 +1276,19 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService {
String response = getWxOpenService().post(COMPONENT_CLEAR_QUOTA_URL, jsonObject.toString());
return WxOpenResult.fromJson(response);
}
/**
* 申请设置订单页path信息
* 注意一次提交不超过100个appid
*
* @param info 订单页path信息
* @return .
* @throws WxErrorException .
*/
@Override
public WxOpenResult applySetOrderPathInfo(WxOpenMaApplyOrderPathInfo info) throws WxErrorException {
Gson gson = new Gson();
String response = post(OPEN_APPLY_SET_ORDER_PATH_INFO, gson.toJson(info));
return WxOpenGsonBuilder.create().fromJson(response, WxOpenResult.class);
}
}

View File

@ -8,6 +8,7 @@ import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.open.api.WxOpenComponentService;
import me.chanjar.weixin.open.api.WxOpenFastMaService;
import me.chanjar.weixin.open.bean.ma.WxFastMaCategory;
import me.chanjar.weixin.open.bean.ma.WxOpenMaApplyOrderPathInfo;
import me.chanjar.weixin.open.bean.result.*;
import me.chanjar.weixin.open.util.json.WxOpenGsonBuilder;
@ -141,6 +142,18 @@ public class WxOpenFastMaServiceImpl extends WxMaServiceImpl implements WxOpenFa
return WxOpenGsonBuilder.create().fromJson(response, WxOpenResult.class);
}
/**
* 获取订单页Path信息
*
* @param infoType 0:线上版1:审核版
* @return 订单页Path信息
* @throws WxErrorException .
*/
@Override
public WxOpenMaGetOrderPathResult getOrderPathInfo(int infoType) throws WxErrorException {
throw new UnsupportedOperationException();
}
private JsonArray toJsonArray(List<String> strList) {
JsonArray jsonArray = new JsonArray();
if (strList != null && !strList.isEmpty()) {

View File

@ -6,6 +6,7 @@ import com.google.gson.JsonObject;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.open.api.WxOpenMaBasicService;
import me.chanjar.weixin.open.bean.ma.WxFastMaCategory;
import me.chanjar.weixin.open.bean.ma.WxOpenMaApplyOrderPathInfo;
import me.chanjar.weixin.open.bean.result.*;
import me.chanjar.weixin.open.util.json.WxOpenGsonBuilder;
@ -123,6 +124,21 @@ public class WxOpenMaBasicServiceImpl implements WxOpenMaBasicService {
return WxOpenGsonBuilder.create().fromJson(response, WxOpenResult.class);
}
/**
* 获取订单页Path信息
*
* @param infoType 0:线上版1:审核版
* @return 订单页Path信息
* @throws WxErrorException .
*/
@Override
public WxOpenMaGetOrderPathResult getOrderPathInfo(int infoType) throws WxErrorException {
JsonObject params = new JsonObject();
params.addProperty("info_type", infoType);
String response = wxMaService.post(OPEN_GET_ORDER_PATH_INFO, params);
return WxOpenGsonBuilder.create().fromJson(response, WxOpenMaGetOrderPathResult.class);
}
private JsonArray toJsonArray(List<String> strList) {
JsonArray jsonArray = new JsonArray();
if (strList != null && !strList.isEmpty()) {

View File

@ -13,10 +13,7 @@ import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import lombok.Getter;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.open.api.WxOpenComponentService;
import me.chanjar.weixin.open.api.WxOpenMaBasicService;
import me.chanjar.weixin.open.api.WxOpenMaPrivacyService;
import me.chanjar.weixin.open.api.WxOpenMaService;
import me.chanjar.weixin.open.api.*;
import me.chanjar.weixin.open.bean.ma.WxMaPrefetchDomain;
import me.chanjar.weixin.open.bean.ma.WxMaQrcodeParam;
import me.chanjar.weixin.open.bean.ma.WxMaScheme;
@ -46,6 +43,8 @@ public class WxOpenMaServiceImpl extends WxMaServiceImpl implements WxOpenMaServ
private final WxOpenMaBasicService basicService;
@Getter
private final WxOpenMaPrivacyService privacyService;
@Getter
private final WxOpenMaShoppingOrdersService shoppingOrdersService;
public WxOpenMaServiceImpl(WxOpenComponentService wxOpenComponentService, String appId, WxMaConfig wxMaConfig) {
this.wxOpenComponentService = wxOpenComponentService;
@ -53,6 +52,7 @@ public class WxOpenMaServiceImpl extends WxMaServiceImpl implements WxOpenMaServ
this.wxMaConfig = wxMaConfig;
this.basicService = new WxOpenMaBasicServiceImpl(this);
this.privacyService = new WxOpenMaPrivacyServiceImpl(this);
this.shoppingOrdersService = new WxOpenMaShoppingOrdersServiceImpl(this);
initHttp();
}
@ -450,8 +450,8 @@ public class WxOpenMaServiceImpl extends WxMaServiceImpl implements WxOpenMaServ
@Override
public WxOpenMaApplyLiveInfoResult applyLiveInfo() throws WxErrorException {
JsonObject params = new JsonObject();
params.addProperty("action","apply");
params.addProperty("action", "apply");
String response = post(API_WX_APPLY_LIVE_INFO, GSON.toJson(params));
return WxMaGsonBuilder.create().fromJson(response,WxOpenMaApplyLiveInfoResult.class);
return WxMaGsonBuilder.create().fromJson(response, WxOpenMaApplyLiveInfoResult.class);
}
}

View File

@ -0,0 +1,107 @@
package me.chanjar.weixin.open.api.impl;
import cn.binarywang.wx.miniapp.api.WxMaService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.open.api.WxOpenMaShoppingOrdersService;
import me.chanjar.weixin.open.bean.result.WxOpenResult;
import me.chanjar.weixin.open.bean.shoppingOrders.*;
import me.chanjar.weixin.open.util.json.WxOpenGsonBuilder;
@Slf4j
@AllArgsConstructor
public class WxOpenMaShoppingOrdersServiceImpl implements WxOpenMaShoppingOrdersService {
private final WxMaService wxMaService;
/**
* 上传购物详情
*
* @param info 购物详情
* @return WxOpenResult
* @throws WxErrorException
*/
@Override
public WxOpenResult upload(ShoppingInfo info) throws WxErrorException {
String response = wxMaService.post(UPLOAD_SHOPPING_INFO, WxOpenGsonBuilder.create().toJson(info));
return WxOpenGsonBuilder.create().fromJson(response, WxOpenResult.class);
}
/**
* 上传物流信息
*
* @param info 物流信息
* @return WxOpenResult
* @throws WxErrorException
*/
@Override
public WxOpenResult upload(ShippingInfo info) throws WxErrorException {
String response = wxMaService.post(UPLOAD_SHIPPING_INFO, WxOpenGsonBuilder.create().toJson(info));
return WxOpenGsonBuilder.create().fromJson(response, WxOpenResult.class);
}
/**
* 上传合单购物详情
*
* @param info 购物详情
* @return WxOpenResult
* @throws WxErrorException
*/
@Override
public WxOpenResult upload(CombinedShoppingInfo info) throws WxErrorException {
String response = wxMaService.post(UPLOAD_COMBINED_SHOPPING_INFO, WxOpenGsonBuilder.create().toJson(info));
return WxOpenGsonBuilder.create().fromJson(response, WxOpenResult.class);
}
/**
* 上传合单物流信息
*
* @param info 物流信息
* @return WxOpenResult
* @throws WxErrorException
*/
@Override
public WxOpenResult upload(CombinedShippingInfo info) throws WxErrorException {
String response = wxMaService.post(UPLOAD_COMBINED_SHIPPING_INFO, WxOpenGsonBuilder.create().toJson(info));
return WxOpenGsonBuilder.create().fromJson(response, WxOpenResult.class);
}
/**
* 开通购物订单产品权限
*
* @return WxOpenResult
* @throws WxErrorException
*/
@Override
public WxOpenResult openShoppingOrderProductPermission() throws WxErrorException {
String response = wxMaService.post(OPEN_SHOPPING_ORDER_PRODUCT_PERMISSION, "");
return WxOpenGsonBuilder.create().fromJson(response, WxOpenResult.class);
}
/**
* 提交购物订单接入审核
*
* @return WxOpenShoppingOrdersConfirmResult
* @throws WxErrorException
*/
@Override
public WxOpenShoppingOrdersConfirmResult confirmProductPermission() throws WxErrorException {
String response = wxMaService.post(CONFIRM_PRODUCT_PERMISSION, "");
return WxOpenGsonBuilder.create().fromJson(response, WxOpenShoppingOrdersConfirmResult.class);
}
/**
* 验证购物订单上传结果
*
* @param info 信息
* @return WxOpenResult
* @throws WxErrorException
*/
@Override
public WxOpenShoppingInfoVerifyUploadResult verifyUploadResult(ShoppingInfoVerifyUpload info) throws WxErrorException {
String response = wxMaService.post(SHOPPING_INFO_VERIFY_UPLOAD_RESULT, WxOpenGsonBuilder.create().toJson(info));
return WxOpenGsonBuilder.create().fromJson(response, WxOpenShoppingInfoVerifyUploadResult.class);
}
}

View File

@ -0,0 +1,74 @@
package me.chanjar.weixin.open.bean.ma;
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
* @Description 申请设置订单页path信息 接口的相关信息
* @createTime 2023/05/23 15:19
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WxOpenMaApplyOrderPathInfo implements Serializable {
private static final long serialVersionUID = -1812688861780119219L;
/**
* 批量申请的信息
*/
@SerializedName("batch_req")
private BatchReqBean batchReq;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class BatchReqBean implements Serializable {
private static final long serialVersionUID = 1816976472441827961L;
/**
* 申请提交的订单页path
*/
@SerializedName("path")
private String path;
/**
* 申请提交的图片url审核版会显示
*/
@SerializedName("img_list")
private List<String> imgList;
/**
* 申请提交的视频url审核版会显示
*/
@SerializedName("video")
private String video;
/**
* 申请提交的测试账号,审核版会显示
*/
@SerializedName("test_account")
private String testAccount;
/**
* 申请提交的测试密码,审核版会显示
*/
@SerializedName("test_pwd")
private String testPwd;
/**
* 申请提交的测试备注,审核版会显示
*/
@SerializedName("test_remark")
private String testRemark;
/**
* 申请提交的批量的appid
* NOTE: 一次提交不超过100个appid
*/
@SerializedName("appid_list")
private List<String> appIdList;
}
}

View File

@ -0,0 +1,75 @@
package me.chanjar.weixin.open.bean.result;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.List;
/**
* @author xzh
* @Description 获取订单页path信息接口返回结果
* @createTime 2023/05/23 15:07
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WxOpenMaGetOrderPathResult extends WxOpenResult {
private static final long serialVersionUID = 1988636135032104851L;
/**
* 订单页path信息
*/
@SerializedName("msg")
private MsgBean msg;
@Data
public static class MsgBean implements Serializable {
private static final long serialVersionUID = 2153432209800394925L;
/**
* 订单页path
*/
@SerializedName("path")
private String path;
/**
* 申请提交的图片url审核版会显示
*/
@SerializedName("img_list")
private List<String> imgList;
/**
* 申请提交的视频url审核版会显示
*/
@SerializedName("video")
private String video;
/**
* 申请提交的测试账号,审核版会显示
*/
@SerializedName("test_account")
private String testAccount;
/**
* 申请提交的测试密码,审核版会显示
*/
@SerializedName("test_pwd")
private String testPwd;
/**
* 申请提交的测试备注,审核版会显示
*/
@SerializedName("test_remark")
private String testRemark;
/**
* 申请状态说明
* 2 审核中
* 3 审核失败
* 4 审核通过
*/
@SerializedName("status")
private int status;
/**
* 申请时间
*/
@SerializedName("apply_time")
private long applyTime;
}
}

View File

@ -0,0 +1,77 @@
package me.chanjar.weixin.open.bean.shoppingOrders;
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;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CombinedShippingInfo implements Serializable {
private static final long serialVersionUID = -2338140924295957062L;
/**
* 必填
* 合单订单,需要上传物流详情的合单订单,根据订单类型二选一
*/
@SerializedName("order_key")
private OrderKeyBean orderKey;
/**
* 子单物流详情
*/
@SerializedName("sub_orders")
private List<SubOrderListBean> subOrders;
/**
* 必填
* 支付者,支付者信息
*/
@SerializedName("payer")
private PayerBean payer;
/**
* 必填
* 上传时间,用于标识请求的先后顺序 示例值: `2022-12-15T13:29:35.120+08:00
*/
@SerializedName("upload_time")
private String uploadTime;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class SubOrderListBean implements Serializable {
private static final long serialVersionUID = -8792281478692710237L;
/**
* 必填
* 订单,需要上传购物详情的订单,根据订单类型二选一
*/
@SerializedName("order_key")
private OrderKeyBean orderKey;
/**
* 必填
* 发货模式发货模式枚举值1、UNIFIED_DELIVERY统一发货2、SPLIT_DELIVERY分拆发货
* 示例值: UNIFIED_DELIVERY
*/
@SerializedName("delivery_mode")
private int deliveryMode;
/**
* 必填
* 物流信息列表,发货物流单列表,支持统一发货(单个物流单)和分拆发货(多个物流单)两种模式,多重性: [1, 10]
*/
@SerializedName("shipping_list")
private List<ShippingListBean> shippingList;
}
}

View File

@ -0,0 +1,88 @@
package me.chanjar.weixin.open.bean.shoppingOrders;
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;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CombinedShoppingInfo implements Serializable {
private static final long serialVersionUID = 8325009858985444023L;
/**
* 必填
* 合单订单,需要上传购物详情的合单订单,根据订单类型二选一
*/
@SerializedName("order_key")
private OrderKeyBean orderKey;
/**
* 子单购物详情
*/
@SerializedName("sub_orders")
private List<SubOrderListBean> subOrders;
/**
* 必填
* 支付者,支付者信息
*/
@SerializedName("payer")
private PayerBean payer;
/**
* 必填
* 上传时间,用于标识请求的先后顺序 示例值: `2022-12-15T13:29:35.120+08:00
*/
@SerializedName("upload_time")
private String uploadTime;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class SubOrderListBean implements Serializable {
private static final long serialVersionUID = -8792281478692710237L;
/**
* 必填
* 订单,需要上传购物详情的订单,根据订单类型二选一
*/
@SerializedName("order_key")
private OrderKeyBean orderKey;
/**
* 必填
* 商户交易订单编号,商户侧的交易订单详情页向用户展示的订单编号
* 示例值: 232457563423 字符字节限制: [1, 64]
*/
@SerializedName("merchant_order_no")
private String merchantOrderNo;
/**
* 必填
* 商户交易订单详情页链接用户查看“商城订单”时跳转至商户侧查看交易订单详情页的链接。详情页类别可以为H5或小程序
*/
@SerializedName("order_detail_jump_link")
private ShoppingInfo.OrderDetailBean orderDetailJumpLink;
/**
* 订单购买的商品列表用户在订单中购买的全部商品明细的列表最多可以上传50个商品
* 多重性: [1, 50]
*/
@SerializedName("item_list")
private List<ShoppingInfo.OrderItemListBean> itemList;
/**
* 物流形式,订单商品配送的物流形式,默认为实体物流
* 物流模式发货方式枚举值1、实体物流配送采用快递公司进行实体物流配送形式 2、同城配送 3、虚拟商品虚拟商品例如话费充值点卡等无实体配送形式 4、用户自提
*/
@SerializedName("logistics_type")
private int logisticsType;
}
}

View File

@ -0,0 +1,27 @@
package me.chanjar.weixin.open.bean.shoppingOrders;
import com.google.gson.annotations.SerializedName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ContactBean implements Serializable {
private static final long serialVersionUID = 2256209964320569284L;
/**
* 寄件人联系方式寄件人联系方式采用掩码传输最后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,39 @@
package me.chanjar.weixin.open.bean.shoppingOrders;
import com.google.gson.annotations.SerializedName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderKeyBean implements Serializable {
private static final long serialVersionUID = 1486092394664728388L;
/**
* 必填
* 订单单号类型用于确认需要上传详情的订单。枚举值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,23 @@
package me.chanjar.weixin.open.bean.shoppingOrders;
import com.google.gson.annotations.SerializedName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PayerBean implements Serializable {
private static final long serialVersionUID = -7943088204264205895L;
/**
* 必填
* 用户标识用户在小程序appid下的唯一标识。 下单前需获取到用户的Openid 示例值: oUpF8uMuAJO_M2pxb1Q9zNjWeS6o 字符字节限制: [1, 128]
*/
@SerializedName("openid")
private String openid;
}

View File

@ -0,0 +1,48 @@
package me.chanjar.weixin.open.bean.shoppingOrders;
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;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ShippingInfo implements Serializable {
private static final long serialVersionUID = 2105037984591600658L;
/**
* 必填
* 订单,需要上传物流信息的订单
*/
@SerializedName("order_key")
private OrderKeyBean orderKey;
/**
* 必填
* 发货模式发货模式枚举值1、UNIFIED_DELIVERY统一发货2、SPLIT_DELIVERY分拆发货
* 示例值: UNIFIED_DELIVERY
*/
@SerializedName("delivery_mode")
private int deliveryMode;
/**
* 必填
* 物流信息列表,发货物流单列表,支持统一发货(单个物流单)和分拆发货(多个物流单)两种模式,多重性: [1, 10]
*/
@SerializedName("shipping_list")
private List<ShippingListBean> shippingList;
/**
* 必填
* 上传时间,用于标识请求的先后顺序 示例值: `2022-12-15T13:29:35.120+08:00
*/
@SerializedName("upload_time")
private String uploadTime;
}

View File

@ -0,0 +1,54 @@
package me.chanjar.weixin.open.bean.shoppingOrders;
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;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ShippingListBean implements Serializable {
private static final long serialVersionUID = -6884739637300493109L;
/**
* 物流单号,物流快递发货时必填,示例值: 323244567777 字符字节限制: [1, 128]
*/
@SerializedName("tracking_no")
private String trackingNo;
/**
* 物流公司编码快递公司ID参见「查询物流公司编码列表」物流快递发货时必填 示例值: DHL 字符字节限制: [1, 128]
*/
@SerializedName("express_company")
private String expressCompany;
/**
* 物流关联的商品列表,当统一发货(单个物流单)时,该项不填;当分拆发货(多个物流单)时,需填入各物流单关联的商品列表 多重性: [0, 50]
*/
@SerializedName("item_list")
private List<ShippingItemListBean> itemList;
/**
* 联系方式,当发货的物流公司为顺丰时,联系方式为必填,收件人或寄件人联系方式二选一
*/
@SerializedName("contact")
private ContactBean contact;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class ShippingItemListBean implements Serializable {
private static final long serialVersionUID = -1433227869321841858L;
/**
* 商户侧商品ID商户系统内部商品编码分拆发货模式下为必填用于标识每笔物流单号内包含的商品需与「上传购物详情」中传入的商品ID匹配
* 示例值: 1246464644 字符字节限制: [1, 64]
*/
@SerializedName("merchant_item_id")
private String merchantItemId;
}
}

View File

@ -0,0 +1,166 @@
package me.chanjar.weixin.open.bean.shoppingOrders;
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;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ShoppingInfo implements Serializable {
private static final long serialVersionUID = 2105037984591600658L;
/**
* 必填
* 订单,需要上传物流信息的订单
*/
@SerializedName("order_key")
private OrderKeyBean orderKey;
/**
* 购物详情列表
*/
@SerializedName("order_list")
private List<OrderListBean> orderList;
/**
* 必填
* 支付者,支付者信息
*/
@SerializedName("payer")
private PayerBean payer;
/**
* 物流形式,订单商品配送的物流形式,默认为实体物流
* 物流模式发货方式枚举值1、实体物流配送采用快递公司进行实体物流配送形式 2、同城配送 3、虚拟商品虚拟商品例如话费充值点卡等无实体配送形式 4、用户自提
*/
@SerializedName("logistics_type")
private int logisticsType;
/**
* 必填
* 上传时间,用于标识请求的先后顺序 示例值: `2022-12-15T13:29:35.120+08:00
*/
@SerializedName("upload_time")
private String uploadTime;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class OrderListBean implements Serializable {
private static final long serialVersionUID = -7690807867756471672L;
/**
* 必填
* 商户交易订单编号,商户侧的交易订单详情页向用户展示的订单编号
* 示例值: 232457563423 字符字节限制: [1, 64]
*/
@SerializedName("merchant_order_no")
private String merchantOrderNo;
/**
* 必填
* 商户交易订单详情页链接用户查看“商城订单”时跳转至商户侧查看交易订单详情页的链接。详情页类别可以为H5或小程序
*/
@SerializedName("order_detail_jump_link")
private OrderDetailBean orderDetailJumpLink;
/**
* 订单购买的商品列表用户在订单中购买的全部商品明细的列表最多可以上传50个商品
* 多重性: [1, 50]
*/
@SerializedName("item_list")
private List<OrderItemListBean> itemList;
}
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class OrderDetailBean implements Serializable {
private static final long serialVersionUID = -8002249022516272034L;
/**
* 链接地址链接类型为H5时必填
* 示例值: https://www.weixin.qq.com/wxpay/pay.php
* 字符字节限制: [1, 1024]
* 匹配正则表达式: ^https?😕/([^\s/?#[]@]+@)?([^\s/?#@:]+)(?::\d{2,5})?([^[]]*)$
*/
@SerializedName("url")
private String url;
/**
* 小程序appid链接类型为MINIAPP时必填
* 示例值: wxd678efh567hg6787 字符字节限制: [1, 32]
*/
@SerializedName("appid")
private String appId;
/**
* 小程序path链接类型为MINIAPP时必填
* 示例值: /path/index/index 字符字节限制: [1, 512]
*/
@SerializedName("path")
private String path;
/**
* 必填
* 链接类型枚举值1、URL2、MINI_PROGRAM
* 示例值: MINI_PROGRAM
*/
@SerializedName("type")
private int type;
}
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class OrderItemListBean implements Serializable {
private static final long serialVersionUID = -2989527770771246748L;
/**
* 商户侧商品ID商户系统内部商品编码用于标识不同的商品。请注意当发货模式选择“分拆发货”时需要使用商户侧商品ID来标记各物流单中包含的具体商品
* 示例值: 1246464644 字符字节限制: [1, 64]
*/
@SerializedName("merchant_item_id")
private String merchantItemId;
/**
* 必填
* 商品名称
* 示例值: iPhoneX 256G 字符长度限制: [1, 256]
*/
@SerializedName("name")
private String name;
/**
* 商品描述
* 示例值: Image形象店-深圳腾大-QQ公仔 字符长度限制: [1, 512]
*/
@SerializedName("description")
private String description;
/**
* 必填
* 商品单价(单位:分)
*/
@SerializedName("unit_price")
private long unitPrice;
/**
* 必填
* 购买数量
* 示例值: 2
*/
@SerializedName("quantity")
private long quantity;
/**
* 商品图片链接
* 示例值: https://qpic.cn/xxx
* 多重性: [1, 3]
* 字符字节限制: [1, 1024]
* 匹配正则表达式: ^https?😕/([^\s/?#[]@]+@)?([^\s/?#@:]+)(?::\d{2,5})?([^[]]*)$
*/
@SerializedName("image_url")
private List<String> imageUrl;
}
}

View File

@ -0,0 +1,32 @@
package me.chanjar.weixin.open.bean.shoppingOrders;
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;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ShoppingInfoVerifyUpload implements Serializable {
private static final long serialVersionUID = 4295431037060277496L;
/**
* 必填
* 订单,需要上传购物详情的订单,根据订单类型二选一
*/
@SerializedName("order_key")
private OrderKeyBean orderKey;
/**
* 必填
* 支付者,支付者信息
*/
@SerializedName("payer")
private PayerBean payer;
}

View File

@ -0,0 +1,18 @@
package me.chanjar.weixin.open.bean.shoppingOrders;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import me.chanjar.weixin.open.bean.result.WxOpenResult;
@Data
@EqualsAndHashCode(callSuper = true)
public class WxOpenShoppingInfoVerifyUploadResult extends WxOpenResult {
private static final long serialVersionUID = -3223834939130803964L;
/**
* 验证结果
*/
@SerializedName("verify_result")
private String verifyResult;
}

View File

@ -0,0 +1,17 @@
package me.chanjar.weixin.open.bean.shoppingOrders;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import me.chanjar.weixin.open.bean.result.WxOpenResult;
@Data
@EqualsAndHashCode(callSuper = true)
public class WxOpenShoppingOrdersConfirmResult extends WxOpenResult {
private static final long serialVersionUID = 8534868743462740891L;
/**
* 最近一次审核的结果
*/
@SerializedName("last_result")
private String lastResult;
}