🆕 #1978 【微信支付】电商支付通增加查询分账回退结果的接口方法

This commit is contained in:
ray Wang 2021-01-24 10:47:59 +08:00 committed by GitHub
parent ce62d1c01b
commit 13b484a071
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 107 additions and 0 deletions

View File

@ -0,0 +1,76 @@
package com.github.binarywang.wxpay.bean.ecommerce;
import com.google.gson.annotations.SerializedName;
import lombok.*;
import java.io.Serializable;
/**
* 查询分账回退结果请求
* * <pre>
* * 文档地址https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/ecommerce/profitsharing/chapter3_3.shtml
* * </pre>
* @author: wangrui
* @date: 2021/02/20
*/
@Data
@Builder
@NoArgsConstructor(access = AccessLevel.PRIVATE)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class ReturnOrdersQueryRequest implements Serializable {
/**
* <pre>
* 字段名二级商户号
* 变量名sub_mchid
* 是否必填
* 类型string32
* 描述
* 分账出资的电商平台二级商户填写微信支付分配的商户号
* 示例值1900000109
* </pre>
*/
@SerializedName(value = "sub_mchid")
private String subMchid;
/**
* <pre>
* 字段名微信分账单号
* 变量名order_id
* 是否必填与out_order_no二选一
* 类型string64
* 描述
* 微信分账单号微信系统返回的唯一标识微信分账单号和商户分账单号二选一填写
* 示例值3008450740201411110007820472
* </pre>
*/
@SerializedName(value = "order_id")
private String orderId;
/**
* <pre>
* 字段名商户分账单号
* 变量名out_order_no
* 是否必填与order_id二选一
* 类型string64
* 描述
* 商户系统内部的分账单号在商户系统内部唯一单次分账多次分账完结分账应使用不同的商户分账单号同一分账单号多次请求等同一次
* 示例值P20150806125346
* </pre>
*/
@SerializedName(value = "out_order_no")
private String outOrderNo;
/**
* <pre>
* 字段名商户回退单号
* 变量名out_return_no
* 是否必填
* 类型string64
* 描述
* 此回退单号是商户在自己后台生成的一个新的回退单号在商户后台唯一
* 示例值P20150806125346
* </pre>
*/
@SerializedName(value = "out_return_no")
private String outReturnNo;
}

View File

@ -287,6 +287,18 @@ public interface EcommerceService {
*/
ReturnOrdersResult returnOrders(ReturnOrdersRequest request) throws WxPayException;
/**
* <pre>
* 查询分账回退API
* 文档地址: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/ecommerce/profitsharing/chapter3_3.shtml
* </pre>
*
* @param request 查询分账回退请求
* @return 返回数据 return orders result
* @throws WxPayException the wx pay exception
*/
ReturnOrdersResult queryReturnOrders(ReturnOrdersQueryRequest request) throws WxPayException;
/**
* <pre>
* 完结分账API

View File

@ -12,6 +12,7 @@ import com.github.binarywang.wxpay.v3.util.RsaCryptoUtil;
import com.google.common.base.CaseFormat;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.apache.commons.lang3.StringUtils;
import lombok.RequiredArgsConstructor;
import org.apache.commons.beanutils.BeanMap;
@ -224,6 +225,24 @@ public class EcommerceServiceImpl implements EcommerceService {
return GSON.fromJson(response, ReturnOrdersResult.class);
}
@Override
public ReturnOrdersResult queryReturnOrders(ReturnOrdersQueryRequest request) throws WxPayException {
String subMchid = request.getSubMchid();
String orderId = request.getOrderId();
String outOrderNo = request.getOutOrderNo();
String outReturnNo = request.getOutReturnNo();
String url = null;
if (StringUtils.isBlank(orderId)) {
url = String.format("%s/v3/ecommerce/profitsharing/returnorders?sub_mchid=%s&out_order_no=%s&out_return_no=%s",
this.payService.getPayBaseUrl(), subMchid, outOrderNo, outReturnNo);
} else {
url = String.format("%s/v3/ecommerce/profitsharing/returnorders?sub_mchid=%s&order_id=%s&out_return_no=%s",
this.payService.getPayBaseUrl(), subMchid, orderId, outReturnNo);
}
String response = this.payService.getV3(URI.create(url));
return GSON.fromJson(response, ReturnOrdersResult.class);
}
@Override
public ProfitSharingResult finishOrder(FinishOrderRequest request) throws WxPayException {
String url = String.format("%s/v3/ecommerce/profitsharing/finish-order", this.payService.getPayBaseUrl());