From 39c342be249b34ad1a0852491a35372d7fe559e4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 1 Jun 2026 00:50:44 +0000 Subject: [PATCH 1/4] =?UTF-8?q?=E8=A1=A5=E9=BD=90=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E5=8F=B7=E5=94=AE=E5=90=8E=E7=BC=BA=E5=A4=B19=E4=B8=AA?= =?UTF-8?q?=E7=AB=AF=E7=82=B9=E5=8F=8A=E5=8F=82=E6=95=B0=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/WxChannelAfterSaleService.java | 96 +++++++++------ .../impl/WxChannelAfterSaleServiceImpl.java | 47 ++++--- .../bean/after/AfterSaleCreateResponse.java | 15 +++ .../AfterSaleGenAfterSaleOrderParam.java | 22 ++++ ...terSaleHandleFastExchangeReceiptParam.java | 29 +++++ .../after/AfterSaleRefundPriceDiffParam.java | 33 +++++ .../after/AfterSaleVirtualTelNumResponse.java | 18 +++ .../after/GuaranteeMerchantModifyParam.java | 19 +++ .../after/GuaranteeMerchantProofParam.java | 20 +++ .../bean/after/GuaranteeOrderResponse.java | 16 +++ .../bean/after/SyncWorkOrderParam.java | 79 ++++++++++++ .../constant/WxChannelApiUrlConstants.java | 77 +++--------- .../WxChannelAfterSaleServiceImplTest.java | 115 ++++++++++++++++++ 13 files changed, 471 insertions(+), 115 deletions(-) create mode 100644 weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleCreateResponse.java create mode 100644 weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleGenAfterSaleOrderParam.java create mode 100644 weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleHandleFastExchangeReceiptParam.java create mode 100644 weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRefundPriceDiffParam.java create mode 100644 weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleVirtualTelNumResponse.java create mode 100644 weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantModifyParam.java create mode 100644 weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantProofParam.java create mode 100644 weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderResponse.java create mode 100644 weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/SyncWorkOrderParam.java diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelAfterSaleService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelAfterSaleService.java index 89d3c169b..605169bc5 100644 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelAfterSaleService.java +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelAfterSaleService.java @@ -201,74 +201,92 @@ WxChannelBaseResponse addComplaintEvidence(String complaintId, String content, L WxChannelBaseResponse merchantUpdateAfterSale(AfterSaleMerchantUpdateParam param) throws WxErrorException; /** - * 获取保障单列表。 - * 文档地址:https://developers.weixin.qq.com/doc/channels/API/channels-shop-aftersale/guarantee/api_searchguaranteeorder + * 代用户发起售后 + * + * @param param 参数 + * @return 发起结果 + * + * @throws WxErrorException 异常 + */ + AfterSaleCreateResponse genAfterSaleOrder(AfterSaleGenAfterSaleOrderParam param) throws WxErrorException; + + /** + * 代用户发起退差价 + * + * @param param 参数 + * @return 发起结果 + * + * @throws WxErrorException 异常 + */ + AfterSaleCreateResponse refundPriceDiff(AfterSaleRefundPriceDiffParam param) throws WxErrorException; + + /** + * 售后单兑换虚拟号 + * + * @param afterSaleOrderId 售后单号 + * @return 虚拟号信息 + * + * @throws WxErrorException 异常 + */ + AfterSaleVirtualTelNumResponse applyVirtualTelNum(String afterSaleOrderId) throws WxErrorException; + + /** + * 商家处理极速换货用户退货(同意/拒绝) + * + * @param param 参数 + * @return BaseResponse * - * @param param 查询参数 - * @return 保障单列表 * @throws WxErrorException 异常 */ - default GuaranteeOrderListResponse listGuaranteeOrder(GuaranteeOrderListParam param) throws WxErrorException { - throw new UnsupportedOperationException(); - } + WxChannelBaseResponse handleFastExchangeReceipt(AfterSaleHandleFastExchangeReceiptParam param) throws WxErrorException; /** - * 获取保障单详情。 - * 文档地址:https://developers.weixin.qq.com/doc/channels/API/channels-shop-aftersale/guarantee/api_getguaranteeorder + * 获取保障单详情 * * @param guaranteeOrderId 保障单号 * @return 保障单详情 + * * @throws WxErrorException 异常 */ - default GuaranteeOrderInfoResponse getGuaranteeOrder(String guaranteeOrderId) throws WxErrorException { - throw new UnsupportedOperationException(); - } + GuaranteeOrderResponse getGuaranteeOrder(String guaranteeOrderId) throws WxErrorException; /** - * 同意保障单申请。 - * 文档地址:https://developers.weixin.qq.com/doc/channels/API/channels-shop-aftersale/guarantee/api_merchantacceptguarantee + * 商家同意保障单申请 * * @param guaranteeOrderId 保障单号 - * @return 响应结果 + * @return BaseResponse + * * @throws WxErrorException 异常 */ - default WxChannelBaseResponse acceptGuarantee(String guaranteeOrderId) throws WxErrorException { - throw new UnsupportedOperationException(); - } + WxChannelBaseResponse merchantAcceptGuarantee(String guaranteeOrderId) throws WxErrorException; /** - * 商家协商保障单。 - * 文档地址:https://developers.weixin.qq.com/doc/channels/API/channels-shop-aftersale/guarantee/api_merchantmodifyguarantee + * 商家协商保障单 + * + * @param param 参数 + * @return BaseResponse * - * @param request 协商参数 - * @return 响应结果 * @throws WxErrorException 异常 */ - default WxChannelBaseResponse modifyGuarantee(GuaranteeModifyRequest request) throws WxErrorException { - throw new UnsupportedOperationException(); - } + WxChannelBaseResponse merchantModifyGuarantee(GuaranteeMerchantModifyParam param) throws WxErrorException; /** - * 商家举证保障单。 - * 文档地址:https://developers.weixin.qq.com/doc/channels/API/channels-shop-aftersale/guarantee/api_merchantproofguarantee + * 商家举证保障单 + * + * @param param 参数 + * @return BaseResponse * - * @param request 举证参数 - * @return 响应结果 * @throws WxErrorException 异常 */ - default WxChannelBaseResponse proofGuarantee(GuaranteeProofRequest request) throws WxErrorException { - throw new UnsupportedOperationException(); - } + WxChannelBaseResponse merchantProofGuarantee(GuaranteeMerchantProofParam param) throws WxErrorException; /** - * 拒绝保障单申请。 - * 文档地址:https://developers.weixin.qq.com/doc/channels/API/channels-shop-aftersale/guarantee/api_merchantrefuseguarantee + * 同步工单 + * + * @param param 参数 + * @return BaseResponse * - * @param request 拒绝参数 - * @return 响应结果 * @throws WxErrorException 异常 */ - default WxChannelBaseResponse refuseGuarantee(GuaranteeRefuseRequest request) throws WxErrorException { - throw new UnsupportedOperationException(); - } + WxChannelBaseResponse syncWorkOrder(SyncWorkOrderParam param) throws WxErrorException; } diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImpl.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImpl.java index 5f8c73874..f0c99a186 100644 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImpl.java +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImpl.java @@ -137,40 +137,59 @@ public WxChannelBaseResponse merchantUpdateAfterSale(AfterSaleMerchantUpdatePara } @Override - public GuaranteeOrderListResponse listGuaranteeOrder(GuaranteeOrderListParam param) throws WxErrorException { - String resJson = shopService.post(GUARANTEE_ORDER_LIST_URL, param); - return ResponseUtils.decode(resJson, GuaranteeOrderListResponse.class); + public AfterSaleCreateResponse genAfterSaleOrder(AfterSaleGenAfterSaleOrderParam param) throws WxErrorException { + String resJson = shopService.post(AFTER_SALE_GEN_AFTER_SALE_ORDER_URL, param); + return ResponseUtils.decode(resJson, AfterSaleCreateResponse.class); } @Override - public GuaranteeOrderInfoResponse getGuaranteeOrder(String guaranteeOrderId) throws WxErrorException { + public AfterSaleCreateResponse refundPriceDiff(AfterSaleRefundPriceDiffParam param) throws WxErrorException { + String resJson = shopService.post(AFTER_SALE_REFUND_PRICE_DIFF_URL, param); + return ResponseUtils.decode(resJson, AfterSaleCreateResponse.class); + } + + @Override + public AfterSaleVirtualTelNumResponse applyVirtualTelNum(String afterSaleOrderId) throws WxErrorException { + AfterSaleIdParam param = new AfterSaleIdParam(afterSaleOrderId); + String resJson = shopService.post(AFTER_SALE_APPLY_VIRTUAL_TEL_NUM_URL, param); + return ResponseUtils.decode(resJson, AfterSaleVirtualTelNumResponse.class); + } + + @Override + public WxChannelBaseResponse handleFastExchangeReceipt(AfterSaleHandleFastExchangeReceiptParam param) throws WxErrorException { + String resJson = shopService.post(AFTER_SALE_HANDLE_FAST_EXCHANGE_RECEIPT_URL, param); + return ResponseUtils.decode(resJson, WxChannelBaseResponse.class); + } + + @Override + public GuaranteeOrderResponse getGuaranteeOrder(String guaranteeOrderId) throws WxErrorException { GuaranteeOrderIdParam param = new GuaranteeOrderIdParam(guaranteeOrderId); - String resJson = shopService.post(GUARANTEE_ORDER_GET_URL, param); - return ResponseUtils.decode(resJson, GuaranteeOrderInfoResponse.class); + String resJson = shopService.post(AFTER_SALE_GET_GUARANTEE_ORDER_URL, param); + return ResponseUtils.decode(resJson, GuaranteeOrderResponse.class); } @Override - public WxChannelBaseResponse acceptGuarantee(String guaranteeOrderId) throws WxErrorException { + public WxChannelBaseResponse merchantAcceptGuarantee(String guaranteeOrderId) throws WxErrorException { GuaranteeOrderIdParam param = new GuaranteeOrderIdParam(guaranteeOrderId); - String resJson = shopService.post(GUARANTEE_ORDER_ACCEPT_URL, param); + String resJson = shopService.post(AFTER_SALE_MERCHANT_ACCEPT_GUARANTEE_URL, param); return ResponseUtils.decode(resJson, WxChannelBaseResponse.class); } @Override - public WxChannelBaseResponse modifyGuarantee(GuaranteeModifyRequest request) throws WxErrorException { - String resJson = shopService.post(GUARANTEE_ORDER_MODIFY_URL, request); + public WxChannelBaseResponse merchantModifyGuarantee(GuaranteeMerchantModifyParam param) throws WxErrorException { + String resJson = shopService.post(AFTER_SALE_MERCHANT_MODIFY_GUARANTEE_URL, param); return ResponseUtils.decode(resJson, WxChannelBaseResponse.class); } @Override - public WxChannelBaseResponse proofGuarantee(GuaranteeProofRequest request) throws WxErrorException { - String resJson = shopService.post(GUARANTEE_ORDER_PROOF_URL, request); + public WxChannelBaseResponse merchantProofGuarantee(GuaranteeMerchantProofParam param) throws WxErrorException { + String resJson = shopService.post(AFTER_SALE_MERCHANT_PROOF_GUARANTEE_URL, param); return ResponseUtils.decode(resJson, WxChannelBaseResponse.class); } @Override - public WxChannelBaseResponse refuseGuarantee(GuaranteeRefuseRequest request) throws WxErrorException { - String resJson = shopService.post(GUARANTEE_ORDER_REFUSE_URL, request); + public WxChannelBaseResponse syncWorkOrder(SyncWorkOrderParam param) throws WxErrorException { + String resJson = shopService.post(AFTER_SALE_SYNC_WORK_ORDER_URL, param); return ResponseUtils.decode(resJson, WxChannelBaseResponse.class); } diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleCreateResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleCreateResponse.java new file mode 100644 index 000000000..a8a67febc --- /dev/null +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleCreateResponse.java @@ -0,0 +1,15 @@ +package me.chanjar.weixin.channel.bean.after; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse; + +@Data +@EqualsAndHashCode(callSuper = true) +public class AfterSaleCreateResponse extends WxChannelBaseResponse { + private static final long serialVersionUID = 2680676438284658410L; + + @JsonProperty("aftersale_id") + private String afterSaleId; +} diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleGenAfterSaleOrderParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleGenAfterSaleOrderParam.java new file mode 100644 index 000000000..d1081907f --- /dev/null +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleGenAfterSaleOrderParam.java @@ -0,0 +1,22 @@ +package me.chanjar.weixin.channel.bean.after; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class AfterSaleGenAfterSaleOrderParam extends AfterSaleRefundPriceDiffParam { + private static final long serialVersionUID = -6873909673739068936L; + + @JsonProperty("count") + private Integer count; + + @JsonProperty("type") + private String type; + + @JsonProperty("address_id") + private String addressId; +} diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleHandleFastExchangeReceiptParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleHandleFastExchangeReceiptParam.java new file mode 100644 index 000000000..f45aa5cff --- /dev/null +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleHandleFastExchangeReceiptParam.java @@ -0,0 +1,29 @@ +package me.chanjar.weixin.channel.bean.after; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class AfterSaleHandleFastExchangeReceiptParam extends AfterSaleIdParam { + private static final long serialVersionUID = 5430106715116197677L; + + @JsonProperty("act") + private Integer act; + + @JsonProperty("reject_reason") + private String rejectReason; + + @JsonProperty("reject_reason_type") + private Integer rejectReasonType; + + @JsonProperty("merchant_text") + private String merchantText; + + @JsonProperty("reject_confirm_exchange") + private List rejectConfirmExchange; +} diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRefundPriceDiffParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRefundPriceDiffParam.java new file mode 100644 index 000000000..e6dfd0844 --- /dev/null +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleRefundPriceDiffParam.java @@ -0,0 +1,33 @@ +package me.chanjar.weixin.channel.bean.after; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.io.Serializable; +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class AfterSaleRefundPriceDiffParam implements Serializable { + private static final long serialVersionUID = 3875058376021518123L; + + @JsonProperty("request_id") + private String requestId; + + @JsonProperty("order_id") + private String orderId; + + @JsonProperty("product_id") + private String productId; + + @JsonProperty("sku_id") + private String skuId; + + @JsonProperty("amount") + private Integer amount; + + @JsonProperty("reason") + private String reason; + + @JsonProperty("desc") + private String desc; +} diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleVirtualTelNumResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleVirtualTelNumResponse.java new file mode 100644 index 000000000..c78d72e7c --- /dev/null +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleVirtualTelNumResponse.java @@ -0,0 +1,18 @@ +package me.chanjar.weixin.channel.bean.after; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse; + +@Data +@EqualsAndHashCode(callSuper = true) +public class AfterSaleVirtualTelNumResponse extends WxChannelBaseResponse { + private static final long serialVersionUID = -2715343569103426942L; + + @JsonProperty("virtual_tel_number") + private String virtualTelNumber; + + @JsonProperty("virtual_tel_expire_time") + private Long virtualTelExpireTime; +} diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantModifyParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantModifyParam.java new file mode 100644 index 000000000..914cd908e --- /dev/null +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantModifyParam.java @@ -0,0 +1,19 @@ +package me.chanjar.weixin.channel.bean.after; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class GuaranteeMerchantModifyParam extends GuaranteeOrderIdParam { + private static final long serialVersionUID = 9193536167701367687L; + + @JsonProperty("bad_level") + private Integer badLevel; + + @JsonProperty("merchant_remark") + private String merchantRemark; +} diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantProofParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantProofParam.java new file mode 100644 index 000000000..6a5647e9f --- /dev/null +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantProofParam.java @@ -0,0 +1,20 @@ +package me.chanjar.weixin.channel.bean.after; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class GuaranteeMerchantProofParam extends GuaranteeOrderIdParam { + private static final long serialVersionUID = -2365495841866160967L; + + @JsonProperty("content") + private String content; + + @JsonProperty("pic_list") + private List picList; +} diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderResponse.java new file mode 100644 index 000000000..6f6256a9d --- /dev/null +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderResponse.java @@ -0,0 +1,16 @@ +package me.chanjar.weixin.channel.bean.after; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.JsonNode; +import lombok.Data; +import lombok.EqualsAndHashCode; +import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse; + +@Data +@EqualsAndHashCode(callSuper = true) +public class GuaranteeOrderResponse extends WxChannelBaseResponse { + private static final long serialVersionUID = 3977781489692530604L; + + @JsonProperty("guarantee_order") + private JsonNode guaranteeOrder; +} diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/SyncWorkOrderParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/SyncWorkOrderParam.java new file mode 100644 index 000000000..9416bf021 --- /dev/null +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/SyncWorkOrderParam.java @@ -0,0 +1,79 @@ +package me.chanjar.weixin.channel.bean.after; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.io.Serializable; +import java.util.List; +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class SyncWorkOrderParam implements Serializable { + private static final long serialVersionUID = -7336088606071452113L; + + @JsonProperty("complaint_id") + private String complaintId; + + @JsonProperty("work_order_info") + private WorkOrderInfo workOrderInfo; + + @Data + @JsonInclude(JsonInclude.Include.NON_NULL) + public static class WorkOrderInfo implements Serializable { + private static final long serialVersionUID = 8573016851280130766L; + + @JsonProperty("version") + private Integer version; + + @JsonProperty("items") + private List items; + + @JsonProperty("work_order_id") + private String workOrderId; + } + + @Data + @JsonInclude(JsonInclude.Include.NON_NULL) + public static class WorkOrderItem implements Serializable { + private static final long serialVersionUID = 6925580701152256736L; + + @JsonProperty("status") + private Integer status; + + @JsonProperty("desc") + private String desc; + + @JsonProperty("update_time") + private Long updateTime; + + @JsonProperty("result_type") + private Integer resultType; + + @JsonProperty("refund_amount") + private Integer refundAmount; + + @JsonProperty("media_list") + private List mediaList; + } + + @Data + @JsonInclude(JsonInclude.Include.NON_NULL) + public static class WorkOrderMedia implements Serializable { + private static final long serialVersionUID = 2258990333977395631L; + + @JsonProperty("type") + private Integer type; + + @JsonProperty("picture") + private WorkOrderPicture picture; + } + + @Data + @JsonInclude(JsonInclude.Include.NON_NULL) + public static class WorkOrderPicture implements Serializable { + private static final long serialVersionUID = -3339842364541603289L; + + @JsonProperty("tmp_media_id") + private String tmpMediaId; + } +} diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/constant/WxChannelApiUrlConstants.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/constant/WxChannelApiUrlConstants.java index 92ece47b2..3eb1bd0e9 100644 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/constant/WxChannelApiUrlConstants.java +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/constant/WxChannelApiUrlConstants.java @@ -166,8 +166,6 @@ public interface Spu { String SPU_GET_STOCK_BATCH_URL = "https://api.weixin.qq.com/channels/ec/product/stock/batchget"; /** 更新商品库存 */ String SPU_UPDATE_STOCK_URL = "https://api.weixin.qq.com/channels/ec/product/stock/update"; - /** 获取库存流水 */ - String SPU_GET_STOCK_FLOW_URL = "https://api.weixin.qq.com/channels/ec/product/stock/getflow"; /** 添加非卖商品 */ String GIFT_PRODUCT_ADD_URL = "https://api.weixin.qq.com/channels/ec/product/gift/add"; /** 更新非卖商品 */ @@ -194,21 +192,6 @@ public interface Spu { String STOP_LIMIT_TASK_URL = "https://api.weixin.qq.com/channels/ec/product/limiteddiscounttask/stop"; /** 删除限时抢购任务 */ String DELETE_LIMIT_TASK_URL = "https://api.weixin.qq.com/channels/ec/product/limiteddiscounttask/delete"; - /** 更新限时抢购任务 */ - String UPDATE_LIMIT_TASK_URL = "https://api.weixin.qq.com/channels/ec/product/limiteddiscounttask/update"; - /** 发品前校验 */ - String CATEGORY_PRE_CHECK_URL = "https://api.weixin.qq.com/channels/ec/product/categoryprecheck"; - /** 商品品牌推荐 */ - String PRODUCT_BRAND_RECOMMEND_URL = "https://api.weixin.qq.com/channels/ec/product/productbrandrecommend"; - /** 站内外商品属性映射 */ - String EXTERNAL_PRODUCT_MAPPING_URL = "https://api.weixin.qq.com/channels/ec/product/externalproductmapping"; - /** 商品属性映射及推荐 */ - String EXTERNAL_PRODUCT_MAPPING_NEW_URL = - "https://api.weixin.qq.com/channels/ec/product/externalproductmappingnew"; - /** 商品立即开售 */ - String BEGIN_TIMING_SALE_URL = "https://api.weixin.qq.com/channels/ec/product/begintimingsale"; - /** 取消商品开售 */ - String CANCEL_TIMING_SALE_URL = "https://api.weixin.qq.com/channels/ec/product/canceltimingsale"; } /** 区域仓库 */ @@ -319,18 +302,24 @@ public interface AfterSale { String AFTER_SALE_REJECT_EXCHANGE_RESHIP_URL = "https://api.weixin.qq.com/channels/ec/aftersale/rejectexchangereship"; /** 商家协商*/ String AFTER_SALE_MERCHANT_UPDATE_URL = "https://api.weixin.qq.com/channels/ec/aftersale/merchantupdateaftersale"; - /** 获取保障单列表 */ - String GUARANTEE_ORDER_LIST_URL = "https://api.weixin.qq.com/channels/ec/aftersale/searchguaranteeorder"; + /** 代用户发起售后 */ + String AFTER_SALE_GEN_AFTER_SALE_ORDER_URL = "https://api.weixin.qq.com/channels/ec/aftersale/genaftersaleorder"; + /** 代用户发起退差价 */ + String AFTER_SALE_REFUND_PRICE_DIFF_URL = "https://api.weixin.qq.com/channels/ec/aftersale/refundpricediff"; + /** 售后单兑换虚拟号 */ + String AFTER_SALE_APPLY_VIRTUAL_TEL_NUM_URL = "https://api.weixin.qq.com/channels/ec/aftersale/applyvirtualtelnum"; + /** 商家处理极速换货用户退货 */ + String AFTER_SALE_HANDLE_FAST_EXCHANGE_RECEIPT_URL = "https://api.weixin.qq.com/channels/ec/aftersale/handlefastexchangereceipt"; /** 获取保障单详情 */ - String GUARANTEE_ORDER_GET_URL = "https://api.weixin.qq.com/channels/ec/aftersale/getguaranteeorder"; - /** 同意保障单申请 */ - String GUARANTEE_ORDER_ACCEPT_URL = "https://api.weixin.qq.com/channels/ec/aftersale/merchantacceptguarantee"; + String AFTER_SALE_GET_GUARANTEE_ORDER_URL = "https://api.weixin.qq.com/channels/ec/aftersale/getguaranteeorder"; + /** 商家同意保障单申请 */ + String AFTER_SALE_MERCHANT_ACCEPT_GUARANTEE_URL = "https://api.weixin.qq.com/channels/ec/aftersale/merchantacceptguarantee"; /** 商家协商保障单 */ - String GUARANTEE_ORDER_MODIFY_URL = "https://api.weixin.qq.com/channels/ec/aftersale/merchantmodifyguarantee"; + String AFTER_SALE_MERCHANT_MODIFY_GUARANTEE_URL = "https://api.weixin.qq.com/channels/ec/aftersale/merchantmodifyguarantee"; /** 商家举证保障单 */ - String GUARANTEE_ORDER_PROOF_URL = "https://api.weixin.qq.com/channels/ec/aftersale/merchantproofguarantee"; - /** 拒绝保障单申请 */ - String GUARANTEE_ORDER_REFUSE_URL = "https://api.weixin.qq.com/channels/ec/aftersale/merchantrefuseguarantee"; + String AFTER_SALE_MERCHANT_PROOF_GUARANTEE_URL = "https://api.weixin.qq.com/channels/ec/aftersale/merchantproofguarantee"; + /** 同步工单 */ + String AFTER_SALE_SYNC_WORK_ORDER_URL = "https://api.weixin.qq.com/channels/ec/aftersale/syncworkorder"; } /** 纠纷相关接口 */ @@ -354,42 +343,6 @@ public interface Delivery { String DELIVERY_SEND_URL = "https://api.weixin.qq.com/channels/ec/order/delivery/send"; } - /** 电子面单相关接口 */ - public interface Ewaybill { - /** 获取面单标准模板 */ - String GET_TEMPLATE_CONFIG_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/template/config"; - /** 新增面单模板 */ - String CREATE_TEMPLATE_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/template/create"; - /** 删除面单模板 */ - String DELETE_TEMPLATE_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/template/delete"; - /** 更新面单模板 */ - String UPDATE_TEMPLATE_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/template/update"; - /** 获取面单模板信息 */ - String GET_TEMPLATE_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/template/get"; - /** 根据模板ID获取面单模板信息 */ - String GET_TEMPLATE_BY_ID_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/template/getbyid"; - /** 查询开通的电子面单网点/账号信息 */ - String GET_ACCOUNT_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/account/get"; - /** 查询开通的快递公司列表 */ - String GET_DELIVERY_LIST_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/delivery/get"; - /** 电子面单预取号 */ - String PRE_CREATE_ORDER_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/order/precreate"; - /** 电子面单取号 */ - String CREATE_ORDER_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/order/create"; - /** 电子面单子件追加 */ - String ADD_SUB_ORDER_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/order/addsuborder"; - /** 电子面单取消下单 */ - String CANCEL_ORDER_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/order/cancel"; - /** 查询面单详情 */ - String GET_ORDER_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/order/get"; - /** 获取打印报文 */ - String GET_PRINT_CONTENT_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/print/get"; - /** 打印成功通知 */ - String PRINT_ORDER_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/order/print"; - /** 批量打印通知 */ - String BATCH_PRINT_ORDER_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/order/batchprint"; - } - /** 运费模板相关接口 */ public interface FreightTemplate { diff --git a/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImplTest.java b/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImplTest.java index 529d455d4..f82aeb459 100644 --- a/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImplTest.java +++ b/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImplTest.java @@ -11,9 +11,18 @@ import me.chanjar.weixin.channel.api.WxChannelAfterSaleService; import me.chanjar.weixin.channel.api.WxChannelService; import me.chanjar.weixin.channel.bean.after.AfterSaleInfoResponse; +import me.chanjar.weixin.channel.bean.after.AfterSaleCreateResponse; +import me.chanjar.weixin.channel.bean.after.AfterSaleGenAfterSaleOrderParam; +import me.chanjar.weixin.channel.bean.after.AfterSaleHandleFastExchangeReceiptParam; import me.chanjar.weixin.channel.bean.after.AfterSaleListResponse; +import me.chanjar.weixin.channel.bean.after.AfterSaleRefundPriceDiffParam; import me.chanjar.weixin.channel.bean.after.AfterSaleReasonResponse; import me.chanjar.weixin.channel.bean.after.AfterSaleRejectReasonResponse; +import me.chanjar.weixin.channel.bean.after.AfterSaleVirtualTelNumResponse; +import me.chanjar.weixin.channel.bean.after.GuaranteeMerchantModifyParam; +import me.chanjar.weixin.channel.bean.after.GuaranteeMerchantProofParam; +import me.chanjar.weixin.channel.bean.after.GuaranteeOrderResponse; +import me.chanjar.weixin.channel.bean.after.SyncWorkOrderParam; import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse; import me.chanjar.weixin.channel.bean.complaint.ComplaintOrderResponse; import me.chanjar.weixin.channel.test.ApiTestModule; @@ -140,4 +149,110 @@ public void testGetRejectReason() throws WxErrorException { assertNotNull(rejectReason); assertTrue(rejectReason.isSuccess()); } + + @Test + public void testGenAfterSaleOrder() throws WxErrorException { + WxChannelAfterSaleService afterSaleService = channelService.getAfterSaleService(); + AfterSaleGenAfterSaleOrderParam param = new AfterSaleGenAfterSaleOrderParam(); + param.setRequestId("request-id"); + param.setOrderId(""); + param.setProductId(""); + param.setSkuId(""); + param.setCount(1); + param.setAmount(1); + param.setReason("10000014"); + param.setType("REFUND"); + AfterSaleCreateResponse response = afterSaleService.genAfterSaleOrder(param); + assertNotNull(response); + assertTrue(response.isSuccess()); + } + + @Test + public void testRefundPriceDiff() throws WxErrorException { + WxChannelAfterSaleService afterSaleService = channelService.getAfterSaleService(); + AfterSaleRefundPriceDiffParam param = new AfterSaleRefundPriceDiffParam(); + param.setRequestId("request-id"); + param.setOrderId(""); + param.setProductId(""); + param.setSkuId(""); + param.setAmount(1); + param.setReason("10001336"); + AfterSaleCreateResponse response = afterSaleService.refundPriceDiff(param); + assertNotNull(response); + assertTrue(response.isSuccess()); + } + + @Test + public void testApplyVirtualTelNum() throws WxErrorException { + WxChannelAfterSaleService afterSaleService = channelService.getAfterSaleService(); + AfterSaleVirtualTelNumResponse response = afterSaleService.applyVirtualTelNum(""); + assertNotNull(response); + assertTrue(response.isSuccess()); + } + + @Test + public void testHandleFastExchangeReceipt() throws WxErrorException { + WxChannelAfterSaleService afterSaleService = channelService.getAfterSaleService(); + AfterSaleHandleFastExchangeReceiptParam param = new AfterSaleHandleFastExchangeReceiptParam(); + param.setAfterSaleOrderId(""); + param.setAct(1); + WxChannelBaseResponse response = afterSaleService.handleFastExchangeReceipt(param); + assertNotNull(response); + assertTrue(response.isSuccess()); + } + + @Test + public void testGetGuaranteeOrder() throws WxErrorException { + WxChannelAfterSaleService afterSaleService = channelService.getAfterSaleService(); + GuaranteeOrderResponse response = afterSaleService.getGuaranteeOrder(""); + assertNotNull(response); + assertTrue(response.isSuccess()); + } + + @Test + public void testMerchantAcceptGuarantee() throws WxErrorException { + WxChannelAfterSaleService afterSaleService = channelService.getAfterSaleService(); + WxChannelBaseResponse response = afterSaleService.merchantAcceptGuarantee(""); + assertNotNull(response); + assertTrue(response.isSuccess()); + } + + @Test + public void testMerchantModifyGuarantee() throws WxErrorException { + WxChannelAfterSaleService afterSaleService = channelService.getAfterSaleService(); + GuaranteeMerchantModifyParam param = new GuaranteeMerchantModifyParam(); + param.setGuaranteeOrderId(""); + param.setBadLevel(10); + param.setMerchantRemark("remark"); + WxChannelBaseResponse response = afterSaleService.merchantModifyGuarantee(param); + assertNotNull(response); + assertTrue(response.isSuccess()); + } + + @Test + public void testMerchantProofGuarantee() throws WxErrorException { + WxChannelAfterSaleService afterSaleService = channelService.getAfterSaleService(); + GuaranteeMerchantProofParam param = new GuaranteeMerchantProofParam(); + param.setGuaranteeOrderId(""); + param.setContent("proof"); + param.setPicList(new ArrayList<>(4)); + WxChannelBaseResponse response = afterSaleService.merchantProofGuarantee(param); + assertNotNull(response); + assertTrue(response.isSuccess()); + } + + @Test + public void testSyncWorkOrder() throws WxErrorException { + WxChannelAfterSaleService afterSaleService = channelService.getAfterSaleService(); + SyncWorkOrderParam param = new SyncWorkOrderParam(); + param.setComplaintId(""); + SyncWorkOrderParam.WorkOrderInfo workOrderInfo = new SyncWorkOrderParam.WorkOrderInfo(); + workOrderInfo.setVersion(1); + workOrderInfo.setWorkOrderId(""); + workOrderInfo.setItems(new ArrayList<>(0)); + param.setWorkOrderInfo(workOrderInfo); + WxChannelBaseResponse response = afterSaleService.syncWorkOrder(param); + assertNotNull(response); + assertTrue(response.isSuccess()); + } } From 1d4ae61d71f9f4ebdf4f5b245eca25fb14cc6c9c Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Sat, 22 Aug 2026 12:33:06 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20=E5=AE=8C=E5=96=84=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E5=8F=B7=E5=94=AE=E5=90=8E=E7=AB=AF=E7=82=B9=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/WxChannelAfterSaleServiceImpl.java | 4 +- .../bean/after/AfterSaleCreateResponse.java | 4 +- .../AfterSaleGenAfterSaleOrderParam.java | 3 ++ ...terSaleHandleFastExchangeReceiptParam.java | 2 +- .../channel/bean/after/ExchangeSkuInfo.java | 14 +++++++ .../channel/bean/after/GuaranteeInfo.java | 14 +++++++ .../after/GuaranteeMerchantModifyParam.java | 2 +- .../after/GuaranteeMerchantProofParam.java | 10 ++--- .../bean/after/GuaranteeOrderIdParam.java | 25 ------------ .../bean/after/GuaranteeOrderResponse.java | 5 +-- .../bean/after/GuaranteeProofInfo.java | 17 ++++++++ .../WxChannelAfterSaleServiceImplTest.java | 11 ++++-- .../bean/after/AfterSaleContractTest.java | 39 +++++++++++++++++++ 13 files changed, 105 insertions(+), 45 deletions(-) create mode 100644 weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/ExchangeSkuInfo.java create mode 100644 weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeInfo.java delete mode 100644 weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderIdParam.java create mode 100644 weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeProofInfo.java create mode 100644 weixin-java-channel/src/test/java/me/chanjar/weixin/channel/bean/after/AfterSaleContractTest.java diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImpl.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImpl.java index f0c99a186..9db11dac7 100644 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImpl.java +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImpl.java @@ -163,14 +163,14 @@ public WxChannelBaseResponse handleFastExchangeReceipt(AfterSaleHandleFastExchan @Override public GuaranteeOrderResponse getGuaranteeOrder(String guaranteeOrderId) throws WxErrorException { - GuaranteeOrderIdParam param = new GuaranteeOrderIdParam(guaranteeOrderId); + GuaranteeIdParam param = new GuaranteeIdParam(guaranteeOrderId); String resJson = shopService.post(AFTER_SALE_GET_GUARANTEE_ORDER_URL, param); return ResponseUtils.decode(resJson, GuaranteeOrderResponse.class); } @Override public WxChannelBaseResponse merchantAcceptGuarantee(String guaranteeOrderId) throws WxErrorException { - GuaranteeOrderIdParam param = new GuaranteeOrderIdParam(guaranteeOrderId); + GuaranteeIdParam param = new GuaranteeIdParam(guaranteeOrderId); String resJson = shopService.post(AFTER_SALE_MERCHANT_ACCEPT_GUARANTEE_URL, param); return ResponseUtils.decode(resJson, WxChannelBaseResponse.class); } diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleCreateResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleCreateResponse.java index a8a67febc..64b3b8f4c 100644 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleCreateResponse.java +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleCreateResponse.java @@ -10,6 +10,6 @@ public class AfterSaleCreateResponse extends WxChannelBaseResponse { private static final long serialVersionUID = 2680676438284658410L; - @JsonProperty("aftersale_id") - private String afterSaleId; + @JsonProperty("after_sale_order_id") + private String afterSaleOrderId; } diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleGenAfterSaleOrderParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleGenAfterSaleOrderParam.java index d1081907f..50928e7cd 100644 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleGenAfterSaleOrderParam.java +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleGenAfterSaleOrderParam.java @@ -19,4 +19,7 @@ public class AfterSaleGenAfterSaleOrderParam extends AfterSaleRefundPriceDiffPar @JsonProperty("address_id") private String addressId; + + @JsonProperty("exchange_sku_info") + private ExchangeSkuInfo exchangeSkuInfo; } diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleHandleFastExchangeReceiptParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleHandleFastExchangeReceiptParam.java index f45aa5cff..13c24f3f5 100644 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleHandleFastExchangeReceiptParam.java +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/AfterSaleHandleFastExchangeReceiptParam.java @@ -25,5 +25,5 @@ public class AfterSaleHandleFastExchangeReceiptParam extends AfterSaleIdParam { private String merchantText; @JsonProperty("reject_confirm_exchange") - private List rejectConfirmExchange; + private List rejectConfirmExchange; } diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/ExchangeSkuInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/ExchangeSkuInfo.java new file mode 100644 index 000000000..696f912ef --- /dev/null +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/ExchangeSkuInfo.java @@ -0,0 +1,14 @@ +package me.chanjar.weixin.channel.bean.after; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.io.Serializable; +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class ExchangeSkuInfo implements Serializable { + private static final long serialVersionUID = 1L; + @JsonProperty("new_sku_id") + private String newSkuId; +} diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeInfo.java new file mode 100644 index 000000000..6fa33166d --- /dev/null +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeInfo.java @@ -0,0 +1,14 @@ +package me.chanjar.weixin.channel.bean.after; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.io.Serializable; +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class GuaranteeInfo implements Serializable { + private static final long serialVersionUID = 1L; + @JsonProperty("guarantee_id") + private String guaranteeId; +} diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantModifyParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantModifyParam.java index 914cd908e..f2a8f7fc5 100644 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantModifyParam.java +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantModifyParam.java @@ -8,7 +8,7 @@ @Data @EqualsAndHashCode(callSuper = true) @JsonInclude(JsonInclude.Include.NON_NULL) -public class GuaranteeMerchantModifyParam extends GuaranteeOrderIdParam { +public class GuaranteeMerchantModifyParam extends GuaranteeIdParam { private static final long serialVersionUID = 9193536167701367687L; @JsonProperty("bad_level") diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantProofParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantProofParam.java index 6a5647e9f..7c93309ac 100644 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantProofParam.java +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantProofParam.java @@ -2,19 +2,15 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; import lombok.Data; import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = true) @JsonInclude(JsonInclude.Include.NON_NULL) -public class GuaranteeMerchantProofParam extends GuaranteeOrderIdParam { +public class GuaranteeMerchantProofParam extends GuaranteeIdParam { private static final long serialVersionUID = -2365495841866160967L; - @JsonProperty("content") - private String content; - - @JsonProperty("pic_list") - private List picList; + @JsonProperty("proof_info") + private GuaranteeProofInfo proofInfo; } diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderIdParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderIdParam.java deleted file mode 100644 index 930e82422..000000000 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderIdParam.java +++ /dev/null @@ -1,25 +0,0 @@ -package me.chanjar.weixin.channel.bean.after; - -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.io.Serializable; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * 保障单号参数。 - */ -@Data -@NoArgsConstructor -@AllArgsConstructor -@JsonInclude(Include.NON_NULL) -public class GuaranteeOrderIdParam implements Serializable { - - private static final long serialVersionUID = -6638498743123537413L; - - /** 保障单号。 */ - @JsonProperty("guarantee_order_id") - private String guaranteeOrderId; -} diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderResponse.java index 6f6256a9d..5133c2b38 100644 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderResponse.java +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderResponse.java @@ -1,7 +1,6 @@ package me.chanjar.weixin.channel.bean.after; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.JsonNode; import lombok.Data; import lombok.EqualsAndHashCode; import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse; @@ -11,6 +10,6 @@ public class GuaranteeOrderResponse extends WxChannelBaseResponse { private static final long serialVersionUID = 3977781489692530604L; - @JsonProperty("guarantee_order") - private JsonNode guaranteeOrder; + @JsonProperty("guarantee_info") + private GuaranteeInfo guaranteeInfo; } diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeProofInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeProofInfo.java new file mode 100644 index 000000000..075f57056 --- /dev/null +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeProofInfo.java @@ -0,0 +1,17 @@ +package me.chanjar.weixin.channel.bean.after; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.io.Serializable; +import java.util.List; +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class GuaranteeProofInfo implements Serializable { + private static final long serialVersionUID = 1L; + @JsonProperty("text") + private String text; + @JsonProperty("image_ids") + private List imageIds; +} diff --git a/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImplTest.java b/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImplTest.java index f82aeb459..9cc01c579 100644 --- a/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImplTest.java +++ b/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImplTest.java @@ -21,6 +21,7 @@ import me.chanjar.weixin.channel.bean.after.AfterSaleVirtualTelNumResponse; import me.chanjar.weixin.channel.bean.after.GuaranteeMerchantModifyParam; import me.chanjar.weixin.channel.bean.after.GuaranteeMerchantProofParam; +import me.chanjar.weixin.channel.bean.after.GuaranteeProofInfo; import me.chanjar.weixin.channel.bean.after.GuaranteeOrderResponse; import me.chanjar.weixin.channel.bean.after.SyncWorkOrderParam; import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse; @@ -221,7 +222,7 @@ public void testMerchantAcceptGuarantee() throws WxErrorException { public void testMerchantModifyGuarantee() throws WxErrorException { WxChannelAfterSaleService afterSaleService = channelService.getAfterSaleService(); GuaranteeMerchantModifyParam param = new GuaranteeMerchantModifyParam(); - param.setGuaranteeOrderId(""); + param.setGuaranteeId(""); param.setBadLevel(10); param.setMerchantRemark("remark"); WxChannelBaseResponse response = afterSaleService.merchantModifyGuarantee(param); @@ -233,9 +234,11 @@ public void testMerchantModifyGuarantee() throws WxErrorException { public void testMerchantProofGuarantee() throws WxErrorException { WxChannelAfterSaleService afterSaleService = channelService.getAfterSaleService(); GuaranteeMerchantProofParam param = new GuaranteeMerchantProofParam(); - param.setGuaranteeOrderId(""); - param.setContent("proof"); - param.setPicList(new ArrayList<>(4)); + param.setGuaranteeId(""); + GuaranteeProofInfo proofInfo = new GuaranteeProofInfo(); + proofInfo.setText("proof"); + proofInfo.setImageIds(new ArrayList<>(4)); + param.setProofInfo(proofInfo); WxChannelBaseResponse response = afterSaleService.merchantProofGuarantee(param); assertNotNull(response); assertTrue(response.isSuccess()); diff --git a/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/bean/after/AfterSaleContractTest.java b/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/bean/after/AfterSaleContractTest.java new file mode 100644 index 000000000..bf2e05d00 --- /dev/null +++ b/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/bean/after/AfterSaleContractTest.java @@ -0,0 +1,39 @@ +package me.chanjar.weixin.channel.bean.after; + +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertTrue; + +import com.fasterxml.jackson.databind.ObjectMapper; +import java.util.Collections; +import org.testng.annotations.Test; + +public class AfterSaleContractTest { + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + + @Test + public void shouldUseOfficialAfterSaleAndGuaranteeFieldNames() throws Exception { + AfterSaleGenAfterSaleOrderParam afterSaleParam = new AfterSaleGenAfterSaleOrderParam(); + ExchangeSkuInfo exchangeSkuInfo = new ExchangeSkuInfo(); + exchangeSkuInfo.setNewSkuId("new-sku"); + afterSaleParam.setExchangeSkuInfo(exchangeSkuInfo); + + AfterSaleHandleFastExchangeReceiptParam receiptParam = new AfterSaleHandleFastExchangeReceiptParam(); + receiptParam.setRejectConfirmExchange(Collections.singletonList("media-1")); + + GuaranteeIdParam guaranteeParam = new GuaranteeIdParam("guarantee-1"); + assertTrue(OBJECT_MAPPER.writeValueAsString(afterSaleParam).contains("\"exchange_sku_info\":{\"new_sku_id\":\"new-sku\"}")); + assertTrue(OBJECT_MAPPER.writeValueAsString(receiptParam).contains("\"reject_confirm_exchange\":[\"media-1\"]")); + assertTrue(OBJECT_MAPPER.writeValueAsString(guaranteeParam).contains("\"guarantee_id\":\"guarantee-1\"")); + } + + @Test + public void shouldDecodeOfficialResponseFields() throws Exception { + AfterSaleCreateResponse createResponse = OBJECT_MAPPER.readValue( + "{\"errcode\":0,\"after_sale_order_id\":\"after-1\"}", AfterSaleCreateResponse.class); + GuaranteeOrderResponse guaranteeResponse = OBJECT_MAPPER.readValue( + "{\"errcode\":0,\"guarantee_info\":{\"guarantee_id\":\"guarantee-1\"}}", GuaranteeOrderResponse.class); + + assertEquals(createResponse.getAfterSaleOrderId(), "after-1"); + assertEquals(guaranteeResponse.getGuaranteeInfo().getGuaranteeId(), "guarantee-1"); + } +} From ea7c654cd8f4b999ee7acd67797a81059ea48edf Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Sat, 22 Aug 2026 13:40:37 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=E4=BF=9D=E9=9A=9C?= =?UTF-8?q?=E5=8D=95=E6=8E=A5=E5=8F=A3=E5=AD=97=E6=AE=B5=E5=A5=91=E7=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/WxChannelAfterSaleServiceImpl.java | 4 +-- .../channel/bean/after/GuaranteeInfo.java | 14 ----------- .../after/GuaranteeMerchantModifyParam.java | 2 +- .../after/GuaranteeMerchantProofParam.java | 9 ++++--- .../bean/after/GuaranteeOrderIdParam.java | 25 +++++++++++++++++++ .../bean/after/GuaranteeOrderResponse.java | 5 ++-- .../bean/after/GuaranteeProofInfo.java | 17 ------------- .../WxChannelAfterSaleServiceImplTest.java | 11 +++----- .../bean/after/AfterSaleContractTest.java | 8 +++--- .../src/test/resources/testng.xml | 1 + 10 files changed, 46 insertions(+), 50 deletions(-) delete mode 100644 weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeInfo.java create mode 100644 weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderIdParam.java delete mode 100644 weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeProofInfo.java diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImpl.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImpl.java index 9db11dac7..f0c99a186 100644 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImpl.java +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImpl.java @@ -163,14 +163,14 @@ public WxChannelBaseResponse handleFastExchangeReceipt(AfterSaleHandleFastExchan @Override public GuaranteeOrderResponse getGuaranteeOrder(String guaranteeOrderId) throws WxErrorException { - GuaranteeIdParam param = new GuaranteeIdParam(guaranteeOrderId); + GuaranteeOrderIdParam param = new GuaranteeOrderIdParam(guaranteeOrderId); String resJson = shopService.post(AFTER_SALE_GET_GUARANTEE_ORDER_URL, param); return ResponseUtils.decode(resJson, GuaranteeOrderResponse.class); } @Override public WxChannelBaseResponse merchantAcceptGuarantee(String guaranteeOrderId) throws WxErrorException { - GuaranteeIdParam param = new GuaranteeIdParam(guaranteeOrderId); + GuaranteeOrderIdParam param = new GuaranteeOrderIdParam(guaranteeOrderId); String resJson = shopService.post(AFTER_SALE_MERCHANT_ACCEPT_GUARANTEE_URL, param); return ResponseUtils.decode(resJson, WxChannelBaseResponse.class); } diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeInfo.java deleted file mode 100644 index 6fa33166d..000000000 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeInfo.java +++ /dev/null @@ -1,14 +0,0 @@ -package me.chanjar.weixin.channel.bean.after; - -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.io.Serializable; -import lombok.Data; - -@Data -@JsonInclude(JsonInclude.Include.NON_NULL) -public class GuaranteeInfo implements Serializable { - private static final long serialVersionUID = 1L; - @JsonProperty("guarantee_id") - private String guaranteeId; -} diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantModifyParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantModifyParam.java index f2a8f7fc5..914cd908e 100644 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantModifyParam.java +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantModifyParam.java @@ -8,7 +8,7 @@ @Data @EqualsAndHashCode(callSuper = true) @JsonInclude(JsonInclude.Include.NON_NULL) -public class GuaranteeMerchantModifyParam extends GuaranteeIdParam { +public class GuaranteeMerchantModifyParam extends GuaranteeOrderIdParam { private static final long serialVersionUID = 9193536167701367687L; @JsonProperty("bad_level") diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantProofParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantProofParam.java index 7c93309ac..e7760deaa 100644 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantProofParam.java +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeMerchantProofParam.java @@ -8,9 +8,12 @@ @Data @EqualsAndHashCode(callSuper = true) @JsonInclude(JsonInclude.Include.NON_NULL) -public class GuaranteeMerchantProofParam extends GuaranteeIdParam { +public class GuaranteeMerchantProofParam extends GuaranteeOrderIdParam { private static final long serialVersionUID = -2365495841866160967L; - @JsonProperty("proof_info") - private GuaranteeProofInfo proofInfo; + @JsonProperty("content") + private String content; + + @JsonProperty("pic_list") + private java.util.List picList; } diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderIdParam.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderIdParam.java new file mode 100644 index 000000000..930e82422 --- /dev/null +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderIdParam.java @@ -0,0 +1,25 @@ +package me.chanjar.weixin.channel.bean.after; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.io.Serializable; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 保障单号参数。 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@JsonInclude(Include.NON_NULL) +public class GuaranteeOrderIdParam implements Serializable { + + private static final long serialVersionUID = -6638498743123537413L; + + /** 保障单号。 */ + @JsonProperty("guarantee_order_id") + private String guaranteeOrderId; +} diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderResponse.java index 5133c2b38..6f6256a9d 100644 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderResponse.java +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeOrderResponse.java @@ -1,6 +1,7 @@ package me.chanjar.weixin.channel.bean.after; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.JsonNode; import lombok.Data; import lombok.EqualsAndHashCode; import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse; @@ -10,6 +11,6 @@ public class GuaranteeOrderResponse extends WxChannelBaseResponse { private static final long serialVersionUID = 3977781489692530604L; - @JsonProperty("guarantee_info") - private GuaranteeInfo guaranteeInfo; + @JsonProperty("guarantee_order") + private JsonNode guaranteeOrder; } diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeProofInfo.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeProofInfo.java deleted file mode 100644 index 075f57056..000000000 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/after/GuaranteeProofInfo.java +++ /dev/null @@ -1,17 +0,0 @@ -package me.chanjar.weixin.channel.bean.after; - -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.io.Serializable; -import java.util.List; -import lombok.Data; - -@Data -@JsonInclude(JsonInclude.Include.NON_NULL) -public class GuaranteeProofInfo implements Serializable { - private static final long serialVersionUID = 1L; - @JsonProperty("text") - private String text; - @JsonProperty("image_ids") - private List imageIds; -} diff --git a/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImplTest.java b/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImplTest.java index 9cc01c579..f82aeb459 100644 --- a/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImplTest.java +++ b/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImplTest.java @@ -21,7 +21,6 @@ import me.chanjar.weixin.channel.bean.after.AfterSaleVirtualTelNumResponse; import me.chanjar.weixin.channel.bean.after.GuaranteeMerchantModifyParam; import me.chanjar.weixin.channel.bean.after.GuaranteeMerchantProofParam; -import me.chanjar.weixin.channel.bean.after.GuaranteeProofInfo; import me.chanjar.weixin.channel.bean.after.GuaranteeOrderResponse; import me.chanjar.weixin.channel.bean.after.SyncWorkOrderParam; import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse; @@ -222,7 +221,7 @@ public void testMerchantAcceptGuarantee() throws WxErrorException { public void testMerchantModifyGuarantee() throws WxErrorException { WxChannelAfterSaleService afterSaleService = channelService.getAfterSaleService(); GuaranteeMerchantModifyParam param = new GuaranteeMerchantModifyParam(); - param.setGuaranteeId(""); + param.setGuaranteeOrderId(""); param.setBadLevel(10); param.setMerchantRemark("remark"); WxChannelBaseResponse response = afterSaleService.merchantModifyGuarantee(param); @@ -234,11 +233,9 @@ public void testMerchantModifyGuarantee() throws WxErrorException { public void testMerchantProofGuarantee() throws WxErrorException { WxChannelAfterSaleService afterSaleService = channelService.getAfterSaleService(); GuaranteeMerchantProofParam param = new GuaranteeMerchantProofParam(); - param.setGuaranteeId(""); - GuaranteeProofInfo proofInfo = new GuaranteeProofInfo(); - proofInfo.setText("proof"); - proofInfo.setImageIds(new ArrayList<>(4)); - param.setProofInfo(proofInfo); + param.setGuaranteeOrderId(""); + param.setContent("proof"); + param.setPicList(new ArrayList<>(4)); WxChannelBaseResponse response = afterSaleService.merchantProofGuarantee(param); assertNotNull(response); assertTrue(response.isSuccess()); diff --git a/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/bean/after/AfterSaleContractTest.java b/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/bean/after/AfterSaleContractTest.java index bf2e05d00..b226cfb1b 100644 --- a/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/bean/after/AfterSaleContractTest.java +++ b/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/bean/after/AfterSaleContractTest.java @@ -20,10 +20,10 @@ public void shouldUseOfficialAfterSaleAndGuaranteeFieldNames() throws Exception AfterSaleHandleFastExchangeReceiptParam receiptParam = new AfterSaleHandleFastExchangeReceiptParam(); receiptParam.setRejectConfirmExchange(Collections.singletonList("media-1")); - GuaranteeIdParam guaranteeParam = new GuaranteeIdParam("guarantee-1"); + GuaranteeOrderIdParam guaranteeParam = new GuaranteeOrderIdParam("guarantee-1"); assertTrue(OBJECT_MAPPER.writeValueAsString(afterSaleParam).contains("\"exchange_sku_info\":{\"new_sku_id\":\"new-sku\"}")); assertTrue(OBJECT_MAPPER.writeValueAsString(receiptParam).contains("\"reject_confirm_exchange\":[\"media-1\"]")); - assertTrue(OBJECT_MAPPER.writeValueAsString(guaranteeParam).contains("\"guarantee_id\":\"guarantee-1\"")); + assertTrue(OBJECT_MAPPER.writeValueAsString(guaranteeParam).contains("\"guarantee_order_id\":\"guarantee-1\"")); } @Test @@ -31,9 +31,9 @@ public void shouldDecodeOfficialResponseFields() throws Exception { AfterSaleCreateResponse createResponse = OBJECT_MAPPER.readValue( "{\"errcode\":0,\"after_sale_order_id\":\"after-1\"}", AfterSaleCreateResponse.class); GuaranteeOrderResponse guaranteeResponse = OBJECT_MAPPER.readValue( - "{\"errcode\":0,\"guarantee_info\":{\"guarantee_id\":\"guarantee-1\"}}", GuaranteeOrderResponse.class); + "{\"errcode\":0,\"guarantee_order\":{\"guarantee_order_id\":\"guarantee-1\"}}", GuaranteeOrderResponse.class); assertEquals(createResponse.getAfterSaleOrderId(), "after-1"); - assertEquals(guaranteeResponse.getGuaranteeInfo().getGuaranteeId(), "guarantee-1"); + assertEquals(guaranteeResponse.getGuaranteeOrder().get("guarantee_order_id").asText(), "guarantee-1"); } } diff --git a/weixin-java-channel/src/test/resources/testng.xml b/weixin-java-channel/src/test/resources/testng.xml index caa7a2c54..c5c07eb23 100644 --- a/weixin-java-channel/src/test/resources/testng.xml +++ b/weixin-java-channel/src/test/resources/testng.xml @@ -14,6 +14,7 @@ + From 8c5f00c0d7c82748686deea8c3bf1180e953aede Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Sat, 22 Aug 2026 20:21:49 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix:=20=E4=BB=A5=20develop=20=E7=9A=84?= =?UTF-8?q?=E4=BF=9D=E9=9A=9C=E5=8D=95=E5=AE=9E=E7=8E=B0=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E5=90=88=E5=B9=B6=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/WxChannelAfterSaleService.java | 96 ++++++--------- .../impl/WxChannelAfterSaleServiceImpl.java | 47 +++---- .../constant/WxChannelApiUrlConstants.java | 86 ++++++++++--- .../WxChannelAfterSaleServiceImplTest.java | 115 ------------------ 4 files changed, 124 insertions(+), 220 deletions(-) diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelAfterSaleService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelAfterSaleService.java index 605169bc5..89d3c169b 100644 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelAfterSaleService.java +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelAfterSaleService.java @@ -201,92 +201,74 @@ WxChannelBaseResponse addComplaintEvidence(String complaintId, String content, L WxChannelBaseResponse merchantUpdateAfterSale(AfterSaleMerchantUpdateParam param) throws WxErrorException; /** - * 代用户发起售后 - * - * @param param 参数 - * @return 发起结果 - * - * @throws WxErrorException 异常 - */ - AfterSaleCreateResponse genAfterSaleOrder(AfterSaleGenAfterSaleOrderParam param) throws WxErrorException; - - /** - * 代用户发起退差价 - * - * @param param 参数 - * @return 发起结果 - * - * @throws WxErrorException 异常 - */ - AfterSaleCreateResponse refundPriceDiff(AfterSaleRefundPriceDiffParam param) throws WxErrorException; - - /** - * 售后单兑换虚拟号 - * - * @param afterSaleOrderId 售后单号 - * @return 虚拟号信息 - * - * @throws WxErrorException 异常 - */ - AfterSaleVirtualTelNumResponse applyVirtualTelNum(String afterSaleOrderId) throws WxErrorException; - - /** - * 商家处理极速换货用户退货(同意/拒绝) - * - * @param param 参数 - * @return BaseResponse + * 获取保障单列表。 + * 文档地址:https://developers.weixin.qq.com/doc/channels/API/channels-shop-aftersale/guarantee/api_searchguaranteeorder * + * @param param 查询参数 + * @return 保障单列表 * @throws WxErrorException 异常 */ - WxChannelBaseResponse handleFastExchangeReceipt(AfterSaleHandleFastExchangeReceiptParam param) throws WxErrorException; + default GuaranteeOrderListResponse listGuaranteeOrder(GuaranteeOrderListParam param) throws WxErrorException { + throw new UnsupportedOperationException(); + } /** - * 获取保障单详情 + * 获取保障单详情。 + * 文档地址:https://developers.weixin.qq.com/doc/channels/API/channels-shop-aftersale/guarantee/api_getguaranteeorder * * @param guaranteeOrderId 保障单号 * @return 保障单详情 - * * @throws WxErrorException 异常 */ - GuaranteeOrderResponse getGuaranteeOrder(String guaranteeOrderId) throws WxErrorException; + default GuaranteeOrderInfoResponse getGuaranteeOrder(String guaranteeOrderId) throws WxErrorException { + throw new UnsupportedOperationException(); + } /** - * 商家同意保障单申请 + * 同意保障单申请。 + * 文档地址:https://developers.weixin.qq.com/doc/channels/API/channels-shop-aftersale/guarantee/api_merchantacceptguarantee * * @param guaranteeOrderId 保障单号 - * @return BaseResponse - * + * @return 响应结果 * @throws WxErrorException 异常 */ - WxChannelBaseResponse merchantAcceptGuarantee(String guaranteeOrderId) throws WxErrorException; + default WxChannelBaseResponse acceptGuarantee(String guaranteeOrderId) throws WxErrorException { + throw new UnsupportedOperationException(); + } /** - * 商家协商保障单 - * - * @param param 参数 - * @return BaseResponse + * 商家协商保障单。 + * 文档地址:https://developers.weixin.qq.com/doc/channels/API/channels-shop-aftersale/guarantee/api_merchantmodifyguarantee * + * @param request 协商参数 + * @return 响应结果 * @throws WxErrorException 异常 */ - WxChannelBaseResponse merchantModifyGuarantee(GuaranteeMerchantModifyParam param) throws WxErrorException; + default WxChannelBaseResponse modifyGuarantee(GuaranteeModifyRequest request) throws WxErrorException { + throw new UnsupportedOperationException(); + } /** - * 商家举证保障单 - * - * @param param 参数 - * @return BaseResponse + * 商家举证保障单。 + * 文档地址:https://developers.weixin.qq.com/doc/channels/API/channels-shop-aftersale/guarantee/api_merchantproofguarantee * + * @param request 举证参数 + * @return 响应结果 * @throws WxErrorException 异常 */ - WxChannelBaseResponse merchantProofGuarantee(GuaranteeMerchantProofParam param) throws WxErrorException; + default WxChannelBaseResponse proofGuarantee(GuaranteeProofRequest request) throws WxErrorException { + throw new UnsupportedOperationException(); + } /** - * 同步工单 - * - * @param param 参数 - * @return BaseResponse + * 拒绝保障单申请。 + * 文档地址:https://developers.weixin.qq.com/doc/channels/API/channels-shop-aftersale/guarantee/api_merchantrefuseguarantee * + * @param request 拒绝参数 + * @return 响应结果 * @throws WxErrorException 异常 */ - WxChannelBaseResponse syncWorkOrder(SyncWorkOrderParam param) throws WxErrorException; + default WxChannelBaseResponse refuseGuarantee(GuaranteeRefuseRequest request) throws WxErrorException { + throw new UnsupportedOperationException(); + } } diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImpl.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImpl.java index f0c99a186..5f8c73874 100644 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImpl.java +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImpl.java @@ -137,59 +137,40 @@ public WxChannelBaseResponse merchantUpdateAfterSale(AfterSaleMerchantUpdatePara } @Override - public AfterSaleCreateResponse genAfterSaleOrder(AfterSaleGenAfterSaleOrderParam param) throws WxErrorException { - String resJson = shopService.post(AFTER_SALE_GEN_AFTER_SALE_ORDER_URL, param); - return ResponseUtils.decode(resJson, AfterSaleCreateResponse.class); + public GuaranteeOrderListResponse listGuaranteeOrder(GuaranteeOrderListParam param) throws WxErrorException { + String resJson = shopService.post(GUARANTEE_ORDER_LIST_URL, param); + return ResponseUtils.decode(resJson, GuaranteeOrderListResponse.class); } @Override - public AfterSaleCreateResponse refundPriceDiff(AfterSaleRefundPriceDiffParam param) throws WxErrorException { - String resJson = shopService.post(AFTER_SALE_REFUND_PRICE_DIFF_URL, param); - return ResponseUtils.decode(resJson, AfterSaleCreateResponse.class); - } - - @Override - public AfterSaleVirtualTelNumResponse applyVirtualTelNum(String afterSaleOrderId) throws WxErrorException { - AfterSaleIdParam param = new AfterSaleIdParam(afterSaleOrderId); - String resJson = shopService.post(AFTER_SALE_APPLY_VIRTUAL_TEL_NUM_URL, param); - return ResponseUtils.decode(resJson, AfterSaleVirtualTelNumResponse.class); - } - - @Override - public WxChannelBaseResponse handleFastExchangeReceipt(AfterSaleHandleFastExchangeReceiptParam param) throws WxErrorException { - String resJson = shopService.post(AFTER_SALE_HANDLE_FAST_EXCHANGE_RECEIPT_URL, param); - return ResponseUtils.decode(resJson, WxChannelBaseResponse.class); - } - - @Override - public GuaranteeOrderResponse getGuaranteeOrder(String guaranteeOrderId) throws WxErrorException { + public GuaranteeOrderInfoResponse getGuaranteeOrder(String guaranteeOrderId) throws WxErrorException { GuaranteeOrderIdParam param = new GuaranteeOrderIdParam(guaranteeOrderId); - String resJson = shopService.post(AFTER_SALE_GET_GUARANTEE_ORDER_URL, param); - return ResponseUtils.decode(resJson, GuaranteeOrderResponse.class); + String resJson = shopService.post(GUARANTEE_ORDER_GET_URL, param); + return ResponseUtils.decode(resJson, GuaranteeOrderInfoResponse.class); } @Override - public WxChannelBaseResponse merchantAcceptGuarantee(String guaranteeOrderId) throws WxErrorException { + public WxChannelBaseResponse acceptGuarantee(String guaranteeOrderId) throws WxErrorException { GuaranteeOrderIdParam param = new GuaranteeOrderIdParam(guaranteeOrderId); - String resJson = shopService.post(AFTER_SALE_MERCHANT_ACCEPT_GUARANTEE_URL, param); + String resJson = shopService.post(GUARANTEE_ORDER_ACCEPT_URL, param); return ResponseUtils.decode(resJson, WxChannelBaseResponse.class); } @Override - public WxChannelBaseResponse merchantModifyGuarantee(GuaranteeMerchantModifyParam param) throws WxErrorException { - String resJson = shopService.post(AFTER_SALE_MERCHANT_MODIFY_GUARANTEE_URL, param); + public WxChannelBaseResponse modifyGuarantee(GuaranteeModifyRequest request) throws WxErrorException { + String resJson = shopService.post(GUARANTEE_ORDER_MODIFY_URL, request); return ResponseUtils.decode(resJson, WxChannelBaseResponse.class); } @Override - public WxChannelBaseResponse merchantProofGuarantee(GuaranteeMerchantProofParam param) throws WxErrorException { - String resJson = shopService.post(AFTER_SALE_MERCHANT_PROOF_GUARANTEE_URL, param); + public WxChannelBaseResponse proofGuarantee(GuaranteeProofRequest request) throws WxErrorException { + String resJson = shopService.post(GUARANTEE_ORDER_PROOF_URL, request); return ResponseUtils.decode(resJson, WxChannelBaseResponse.class); } @Override - public WxChannelBaseResponse syncWorkOrder(SyncWorkOrderParam param) throws WxErrorException { - String resJson = shopService.post(AFTER_SALE_SYNC_WORK_ORDER_URL, param); + public WxChannelBaseResponse refuseGuarantee(GuaranteeRefuseRequest request) throws WxErrorException { + String resJson = shopService.post(GUARANTEE_ORDER_REFUSE_URL, request); return ResponseUtils.decode(resJson, WxChannelBaseResponse.class); } diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/constant/WxChannelApiUrlConstants.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/constant/WxChannelApiUrlConstants.java index 3eb1bd0e9..bb1bb4829 100644 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/constant/WxChannelApiUrlConstants.java +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/constant/WxChannelApiUrlConstants.java @@ -166,6 +166,8 @@ public interface Spu { String SPU_GET_STOCK_BATCH_URL = "https://api.weixin.qq.com/channels/ec/product/stock/batchget"; /** 更新商品库存 */ String SPU_UPDATE_STOCK_URL = "https://api.weixin.qq.com/channels/ec/product/stock/update"; + /** 获取库存流水 */ + String SPU_GET_STOCK_FLOW_URL = "https://api.weixin.qq.com/channels/ec/product/stock/getflow"; /** 添加非卖商品 */ String GIFT_PRODUCT_ADD_URL = "https://api.weixin.qq.com/channels/ec/product/gift/add"; /** 更新非卖商品 */ @@ -192,6 +194,21 @@ public interface Spu { String STOP_LIMIT_TASK_URL = "https://api.weixin.qq.com/channels/ec/product/limiteddiscounttask/stop"; /** 删除限时抢购任务 */ String DELETE_LIMIT_TASK_URL = "https://api.weixin.qq.com/channels/ec/product/limiteddiscounttask/delete"; + /** 更新限时抢购任务 */ + String UPDATE_LIMIT_TASK_URL = "https://api.weixin.qq.com/channels/ec/product/limiteddiscounttask/update"; + /** 发品前校验 */ + String CATEGORY_PRE_CHECK_URL = "https://api.weixin.qq.com/channels/ec/product/categoryprecheck"; + /** 商品品牌推荐 */ + String PRODUCT_BRAND_RECOMMEND_URL = "https://api.weixin.qq.com/channels/ec/product/productbrandrecommend"; + /** 站内外商品属性映射 */ + String EXTERNAL_PRODUCT_MAPPING_URL = "https://api.weixin.qq.com/channels/ec/product/externalproductmapping"; + /** 商品属性映射及推荐 */ + String EXTERNAL_PRODUCT_MAPPING_NEW_URL = + "https://api.weixin.qq.com/channels/ec/product/externalproductmappingnew"; + /** 商品立即开售 */ + String BEGIN_TIMING_SALE_URL = "https://api.weixin.qq.com/channels/ec/product/begintimingsale"; + /** 取消商品开售 */ + String CANCEL_TIMING_SALE_URL = "https://api.weixin.qq.com/channels/ec/product/canceltimingsale"; } /** 区域仓库 */ @@ -281,6 +298,15 @@ public interface PrivateNumber { /** 售后相关接口 */ public interface AfterSale { + String AFTER_SALE_GEN_AFTER_SALE_ORDER_URL = "https://api.weixin.qq.com/channels/ec/aftersale/genaftersaleorder"; + String AFTER_SALE_REFUND_PRICE_DIFF_URL = "https://api.weixin.qq.com/channels/ec/aftersale/refundpricediff"; + String AFTER_SALE_APPLY_VIRTUAL_TEL_NUM_URL = "https://api.weixin.qq.com/channels/ec/aftersale/applyvirtualtelnum"; + String AFTER_SALE_HANDLE_FAST_EXCHANGE_RECEIPT_URL = "https://api.weixin.qq.com/channels/ec/aftersale/handlefastexchangereceipt"; + String AFTER_SALE_GET_GUARANTEE_ORDER_URL = "https://api.weixin.qq.com/channels/ec/aftersale/getguaranteeorder"; + String AFTER_SALE_MERCHANT_ACCEPT_GUARANTEE_URL = "https://api.weixin.qq.com/channels/ec/aftersale/merchantacceptguarantee"; + String AFTER_SALE_MERCHANT_MODIFY_GUARANTEE_URL = "https://api.weixin.qq.com/channels/ec/aftersale/merchantmodifyguarantee"; + String AFTER_SALE_MERCHANT_PROOF_GUARANTEE_URL = "https://api.weixin.qq.com/channels/ec/aftersale/merchantproofguarantee"; + String AFTER_SALE_SYNC_WORK_ORDER_URL = "https://api.weixin.qq.com/channels/ec/aftersale/syncworkorder"; /** 获取售后列表 */ String AFTER_SALE_LIST_URL = "https://api.weixin.qq.com/channels/ec/aftersale/getaftersalelist"; @@ -302,24 +328,18 @@ public interface AfterSale { String AFTER_SALE_REJECT_EXCHANGE_RESHIP_URL = "https://api.weixin.qq.com/channels/ec/aftersale/rejectexchangereship"; /** 商家协商*/ String AFTER_SALE_MERCHANT_UPDATE_URL = "https://api.weixin.qq.com/channels/ec/aftersale/merchantupdateaftersale"; - /** 代用户发起售后 */ - String AFTER_SALE_GEN_AFTER_SALE_ORDER_URL = "https://api.weixin.qq.com/channels/ec/aftersale/genaftersaleorder"; - /** 代用户发起退差价 */ - String AFTER_SALE_REFUND_PRICE_DIFF_URL = "https://api.weixin.qq.com/channels/ec/aftersale/refundpricediff"; - /** 售后单兑换虚拟号 */ - String AFTER_SALE_APPLY_VIRTUAL_TEL_NUM_URL = "https://api.weixin.qq.com/channels/ec/aftersale/applyvirtualtelnum"; - /** 商家处理极速换货用户退货 */ - String AFTER_SALE_HANDLE_FAST_EXCHANGE_RECEIPT_URL = "https://api.weixin.qq.com/channels/ec/aftersale/handlefastexchangereceipt"; + /** 获取保障单列表 */ + String GUARANTEE_ORDER_LIST_URL = "https://api.weixin.qq.com/channels/ec/aftersale/searchguaranteeorder"; /** 获取保障单详情 */ - String AFTER_SALE_GET_GUARANTEE_ORDER_URL = "https://api.weixin.qq.com/channels/ec/aftersale/getguaranteeorder"; - /** 商家同意保障单申请 */ - String AFTER_SALE_MERCHANT_ACCEPT_GUARANTEE_URL = "https://api.weixin.qq.com/channels/ec/aftersale/merchantacceptguarantee"; + String GUARANTEE_ORDER_GET_URL = "https://api.weixin.qq.com/channels/ec/aftersale/getguaranteeorder"; + /** 同意保障单申请 */ + String GUARANTEE_ORDER_ACCEPT_URL = "https://api.weixin.qq.com/channels/ec/aftersale/merchantacceptguarantee"; /** 商家协商保障单 */ - String AFTER_SALE_MERCHANT_MODIFY_GUARANTEE_URL = "https://api.weixin.qq.com/channels/ec/aftersale/merchantmodifyguarantee"; + String GUARANTEE_ORDER_MODIFY_URL = "https://api.weixin.qq.com/channels/ec/aftersale/merchantmodifyguarantee"; /** 商家举证保障单 */ - String AFTER_SALE_MERCHANT_PROOF_GUARANTEE_URL = "https://api.weixin.qq.com/channels/ec/aftersale/merchantproofguarantee"; - /** 同步工单 */ - String AFTER_SALE_SYNC_WORK_ORDER_URL = "https://api.weixin.qq.com/channels/ec/aftersale/syncworkorder"; + String GUARANTEE_ORDER_PROOF_URL = "https://api.weixin.qq.com/channels/ec/aftersale/merchantproofguarantee"; + /** 拒绝保障单申请 */ + String GUARANTEE_ORDER_REFUSE_URL = "https://api.weixin.qq.com/channels/ec/aftersale/merchantrefuseguarantee"; } /** 纠纷相关接口 */ @@ -343,6 +363,42 @@ public interface Delivery { String DELIVERY_SEND_URL = "https://api.weixin.qq.com/channels/ec/order/delivery/send"; } + /** 电子面单相关接口 */ + public interface Ewaybill { + /** 获取面单标准模板 */ + String GET_TEMPLATE_CONFIG_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/template/config"; + /** 新增面单模板 */ + String CREATE_TEMPLATE_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/template/create"; + /** 删除面单模板 */ + String DELETE_TEMPLATE_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/template/delete"; + /** 更新面单模板 */ + String UPDATE_TEMPLATE_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/template/update"; + /** 获取面单模板信息 */ + String GET_TEMPLATE_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/template/get"; + /** 根据模板ID获取面单模板信息 */ + String GET_TEMPLATE_BY_ID_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/template/getbyid"; + /** 查询开通的电子面单网点/账号信息 */ + String GET_ACCOUNT_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/account/get"; + /** 查询开通的快递公司列表 */ + String GET_DELIVERY_LIST_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/delivery/get"; + /** 电子面单预取号 */ + String PRE_CREATE_ORDER_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/order/precreate"; + /** 电子面单取号 */ + String CREATE_ORDER_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/order/create"; + /** 电子面单子件追加 */ + String ADD_SUB_ORDER_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/order/addsuborder"; + /** 电子面单取消下单 */ + String CANCEL_ORDER_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/order/cancel"; + /** 查询面单详情 */ + String GET_ORDER_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/order/get"; + /** 获取打印报文 */ + String GET_PRINT_CONTENT_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/print/get"; + /** 打印成功通知 */ + String PRINT_ORDER_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/order/print"; + /** 批量打印通知 */ + String BATCH_PRINT_ORDER_URL = "https://api.weixin.qq.com/channels/ec/logistics/ewaybill/biz/order/batchprint"; + } + /** 运费模板相关接口 */ public interface FreightTemplate { diff --git a/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImplTest.java b/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImplTest.java index f82aeb459..529d455d4 100644 --- a/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImplTest.java +++ b/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelAfterSaleServiceImplTest.java @@ -11,18 +11,9 @@ import me.chanjar.weixin.channel.api.WxChannelAfterSaleService; import me.chanjar.weixin.channel.api.WxChannelService; import me.chanjar.weixin.channel.bean.after.AfterSaleInfoResponse; -import me.chanjar.weixin.channel.bean.after.AfterSaleCreateResponse; -import me.chanjar.weixin.channel.bean.after.AfterSaleGenAfterSaleOrderParam; -import me.chanjar.weixin.channel.bean.after.AfterSaleHandleFastExchangeReceiptParam; import me.chanjar.weixin.channel.bean.after.AfterSaleListResponse; -import me.chanjar.weixin.channel.bean.after.AfterSaleRefundPriceDiffParam; import me.chanjar.weixin.channel.bean.after.AfterSaleReasonResponse; import me.chanjar.weixin.channel.bean.after.AfterSaleRejectReasonResponse; -import me.chanjar.weixin.channel.bean.after.AfterSaleVirtualTelNumResponse; -import me.chanjar.weixin.channel.bean.after.GuaranteeMerchantModifyParam; -import me.chanjar.weixin.channel.bean.after.GuaranteeMerchantProofParam; -import me.chanjar.weixin.channel.bean.after.GuaranteeOrderResponse; -import me.chanjar.weixin.channel.bean.after.SyncWorkOrderParam; import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse; import me.chanjar.weixin.channel.bean.complaint.ComplaintOrderResponse; import me.chanjar.weixin.channel.test.ApiTestModule; @@ -149,110 +140,4 @@ public void testGetRejectReason() throws WxErrorException { assertNotNull(rejectReason); assertTrue(rejectReason.isSuccess()); } - - @Test - public void testGenAfterSaleOrder() throws WxErrorException { - WxChannelAfterSaleService afterSaleService = channelService.getAfterSaleService(); - AfterSaleGenAfterSaleOrderParam param = new AfterSaleGenAfterSaleOrderParam(); - param.setRequestId("request-id"); - param.setOrderId(""); - param.setProductId(""); - param.setSkuId(""); - param.setCount(1); - param.setAmount(1); - param.setReason("10000014"); - param.setType("REFUND"); - AfterSaleCreateResponse response = afterSaleService.genAfterSaleOrder(param); - assertNotNull(response); - assertTrue(response.isSuccess()); - } - - @Test - public void testRefundPriceDiff() throws WxErrorException { - WxChannelAfterSaleService afterSaleService = channelService.getAfterSaleService(); - AfterSaleRefundPriceDiffParam param = new AfterSaleRefundPriceDiffParam(); - param.setRequestId("request-id"); - param.setOrderId(""); - param.setProductId(""); - param.setSkuId(""); - param.setAmount(1); - param.setReason("10001336"); - AfterSaleCreateResponse response = afterSaleService.refundPriceDiff(param); - assertNotNull(response); - assertTrue(response.isSuccess()); - } - - @Test - public void testApplyVirtualTelNum() throws WxErrorException { - WxChannelAfterSaleService afterSaleService = channelService.getAfterSaleService(); - AfterSaleVirtualTelNumResponse response = afterSaleService.applyVirtualTelNum(""); - assertNotNull(response); - assertTrue(response.isSuccess()); - } - - @Test - public void testHandleFastExchangeReceipt() throws WxErrorException { - WxChannelAfterSaleService afterSaleService = channelService.getAfterSaleService(); - AfterSaleHandleFastExchangeReceiptParam param = new AfterSaleHandleFastExchangeReceiptParam(); - param.setAfterSaleOrderId(""); - param.setAct(1); - WxChannelBaseResponse response = afterSaleService.handleFastExchangeReceipt(param); - assertNotNull(response); - assertTrue(response.isSuccess()); - } - - @Test - public void testGetGuaranteeOrder() throws WxErrorException { - WxChannelAfterSaleService afterSaleService = channelService.getAfterSaleService(); - GuaranteeOrderResponse response = afterSaleService.getGuaranteeOrder(""); - assertNotNull(response); - assertTrue(response.isSuccess()); - } - - @Test - public void testMerchantAcceptGuarantee() throws WxErrorException { - WxChannelAfterSaleService afterSaleService = channelService.getAfterSaleService(); - WxChannelBaseResponse response = afterSaleService.merchantAcceptGuarantee(""); - assertNotNull(response); - assertTrue(response.isSuccess()); - } - - @Test - public void testMerchantModifyGuarantee() throws WxErrorException { - WxChannelAfterSaleService afterSaleService = channelService.getAfterSaleService(); - GuaranteeMerchantModifyParam param = new GuaranteeMerchantModifyParam(); - param.setGuaranteeOrderId(""); - param.setBadLevel(10); - param.setMerchantRemark("remark"); - WxChannelBaseResponse response = afterSaleService.merchantModifyGuarantee(param); - assertNotNull(response); - assertTrue(response.isSuccess()); - } - - @Test - public void testMerchantProofGuarantee() throws WxErrorException { - WxChannelAfterSaleService afterSaleService = channelService.getAfterSaleService(); - GuaranteeMerchantProofParam param = new GuaranteeMerchantProofParam(); - param.setGuaranteeOrderId(""); - param.setContent("proof"); - param.setPicList(new ArrayList<>(4)); - WxChannelBaseResponse response = afterSaleService.merchantProofGuarantee(param); - assertNotNull(response); - assertTrue(response.isSuccess()); - } - - @Test - public void testSyncWorkOrder() throws WxErrorException { - WxChannelAfterSaleService afterSaleService = channelService.getAfterSaleService(); - SyncWorkOrderParam param = new SyncWorkOrderParam(); - param.setComplaintId(""); - SyncWorkOrderParam.WorkOrderInfo workOrderInfo = new SyncWorkOrderParam.WorkOrderInfo(); - workOrderInfo.setVersion(1); - workOrderInfo.setWorkOrderId(""); - workOrderInfo.setItems(new ArrayList<>(0)); - param.setWorkOrderInfo(workOrderInfo); - WxChannelBaseResponse response = afterSaleService.syncWorkOrder(param); - assertNotNull(response); - assertTrue(response.isSuccess()); - } }