🎨 【微信支付】完善微信商家转账功能API !151

This commit is contained in:
Neror
2025-01-21 11:49:38 +00:00
committed by Binary Wang
parent 24ebc91dca
commit c3b16228c0
7 changed files with 332 additions and 6 deletions

View File

@@ -128,6 +128,57 @@ public interface TransferService {
*/
TransferBillsResult transferBills(TransferBillsRequest request) throws WxPayException;
/**
* <pre>
*
* 2025.1.15 开始新接口 撤销转账API
*
* 请求方式POSTHTTPS
* 请求地址:<a href="https://api.mch.weixin.qq.com/v3/fund-app/mch-transfer/transfer-bills/out-bill-no/{out_bill_no}/cancel">请求地址</a>
*
* 文档地址:<a href="https://pay.weixin.qq.com/doc/v3/merchant/4012716458">商户撤销转账API</a>
* </pre>
*
* @param outBillNo 【商户单号】 商户系统内部的商家单号,要求此参数只能由数字、大小写字母组成,在商户系统内部唯一
* @return TransformBillsGetResult 转账单
* @throws WxPayException .
*/
TransferBillsCancelResult transformBillsCancel(String outBillNo) throws WxPayException;
/**
* <pre>
*
* 2025.1.15 开始新接口 发起商家转账API
*
* 请求方式GETHTTPS
* 请求地址:<a href="https://api.mch.weixin.qq.com/v3/fund-app/mch-transfer/transfer-bills/out-bill-no/{out_bill_no}">请求地址</a>
*
* 文档地址:<a href="https://pay.weixin.qq.com/doc/v3/merchant/4012716437">商户单号查询转账单API</a>
* </pre>
*
* @param outBillNo 【商户单号】 商户系统内部的商家单号,要求此参数只能由数字、大小写字母组成,在商户系统内部唯一
* @return TransformBillsGetResult 转账单
* @throws WxPayException .
*/
TransferBillsGetResult getBillsByOutBillNo(String outBillNo) throws WxPayException;
/**
* <pre>
*
* 2025.1.15 开始新接口 微信单号查询转账单API
*
* 请求方式GETHTTPS
* 请求地址:<a href="https://api.mch.weixin.qq.com/v3/fund-app/mch-transfer/transfer-bills/transfer-bill-no/{transfer_bill_no}">请求地址</a>
*
* 文档地址:<a href="https://pay.weixin.qq.com/doc/v3/merchant/4012716437">商户单号查询转账单API</a>
* </pre>
*
* @param transferBillNo 【微信转账单号】 微信转账单号,微信商家转账系统返回的唯一标识
* @return TransformBillsGetResult 转账单
* @throws WxPayException .
*/
TransferBillsGetResult getBillsByTransferBillNo(String transferBillNo) throws WxPayException;
/**
* 2025.1.15 开始新接口 解析商家转账结果
* 详见<a href="https://pay.weixin.qq.com/doc/v3/merchant/4012712115"></a>

View File

@@ -48,8 +48,7 @@ public class TransferServiceImpl implements TransferService {
if (request.getNeedQueryDetail()) {
url = String.format("%s/v3/transfer/batches/batch-id/%s?need_query_detail=true&offset=%s&limit=%s&detail_status=%s",
this.payService.getPayBaseUrl(), request.getBatchId(), request.getOffset(), request.getLimit(), request.getDetailStatus());
}
else {
} else {
url = String.format("%s/v3/transfer/batches/batch-id/%s?need_query_detail=false",
this.payService.getPayBaseUrl(), request.getBatchId());
}
@@ -70,8 +69,7 @@ public class TransferServiceImpl implements TransferService {
if (request.getNeedQueryDetail()) {
url = String.format("%s/v3/transfer/batches/out-batch-no/%s?need_query_detail=true&offset=%s&limit=%s&detail_status=%s",
this.payService.getPayBaseUrl(), request.getOutBatchNo(), request.getOffset(), request.getLimit(), request.getDetailStatus());
}
else {
} else {
url = String.format("%s/v3/transfer/batches/out-batch-no/%s?need_query_detail=false",
this.payService.getPayBaseUrl(), request.getOutBatchNo());
}
@@ -97,6 +95,31 @@ public class TransferServiceImpl implements TransferService {
return GSON.fromJson(result, TransferBillsResult.class);
}
@Override
public TransferBillsCancelResult transformBillsCancel(String outBillNo) throws WxPayException {
String url = String.format("%s/v3/fund-app/mch-transfer/transfer-bills/out-bill-no/%s/cancel",
this.payService.getPayBaseUrl(), outBillNo);
String result = this.payService.postV3(url, "");
return GSON.fromJson(result, TransferBillsCancelResult.class);
}
@Override
public TransferBillsGetResult getBillsByOutBillNo(String outBillNo) throws WxPayException {
String url = String.format("%s/v3/fund-app/mch-transfer/transfer-bills/out-bill-no/%s",
this.payService.getPayBaseUrl(), outBillNo);
String result = this.payService.getV3(url);
return GSON.fromJson(result, TransferBillsGetResult.class);
}
@Override
public TransferBillsGetResult getBillsByTransferBillNo(String transferBillNo) throws WxPayException {
String url = String.format("%s/v3/fund-app/mch-transfer/transfer-bills/transfer-bill-no/%s",
this.payService.getPayBaseUrl(), transferBillNo);
String result = this.payService.getV3(url);
return GSON.fromJson(result, TransferBillsGetResult.class);
}
@Override
public TransferBillsNotifyResult parseTransferBillsNotifyResult(String notifyData, SignatureHeader header) throws WxPayException {
return this.payService.baseParseOrderNotifyV3Result(notifyData, header, TransferBillsNotifyResult.class, TransferBillsNotifyResult.DecryptNotifyResult.class);