Skip to content

在微信电商支付通服务中,增加查询分账回退结果的接口方法 #1978

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jan 24, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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
* 是否必填:是
* 类型:string(32)
* 描述:
* 分账出资的电商平台二级商户,填写微信支付分配的商户号。
* 示例值:1900000109
* </pre>
*/
@SerializedName(value = "sub_mchid")
private String subMchid;

/**
* <pre>
* 字段名:微信分账单号
* 变量名:order_id
* 是否必填:与out_order_no二选一
* 类型:string(64)
* 描述:
* 微信分账单号,微信系统返回的唯一标识。微信分账单号和商户分账单号二选一填写。
* 示例值:3008450740201411110007820472
* </pre>
*/
@SerializedName(value = "order_id")
private String orderId;

/**
* <pre>
* 字段名:商户分账单号
* 变量名:out_order_no
* 是否必填:与order_id二选一
* 类型:string(64)
* 描述:
* 商户系统内部的分账单号,在商户系统内部唯一(单次分账、多次分账、完结分账应使用不同的商户分账单号),同一分账单号多次请求等同一次。
* 示例值:P20150806125346
* </pre>
*/
@SerializedName(value = "out_order_no")
private String outOrderNo;

/**
* <pre>
* 字段名:商户回退单号
* 变量名:out_return_no
* 是否必填:是
* 类型:string(64)
* 描述:
* 此回退单号是商户在自己后台生成的一个新的回退单号,在商户后台唯一。
* 示例值:P20150806125346
* </pre>
*/
@SerializedName(value = "out_return_no")
private String outReturnNo;
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
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;

Expand Down Expand Up @@ -224,6 +225,24 @@ public ReturnOrdersResult returnOrders(ReturnOrdersRequest request) throws WxPay
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());
Expand Down