🆕 #1916 【微信支付】电商收付通增加关闭普通支付单的接口

This commit is contained in:
f00lish 2020-12-11 09:38:38 +08:00 committed by GitHub
parent 34495cb655
commit 0306103d28
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 92 additions and 2 deletions

View File

@ -0,0 +1,61 @@
package com.github.binarywang.wxpay.bean.ecommerce;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 关闭普通订单请求
* @author: f00lish
* @date: 2020/12/09
*/
@Data
@NoArgsConstructor
public class PartnerTransactionsCloseRequest implements Serializable {
private static final long serialVersionUID = -7602636370950088329L;
/**
* <pre>
* 字段名服务商户号
* 变量名sp_mchid
* 是否必填
* 类型string32
* 描述
* 服务商户号由微信支付生成并下发
* 示例值1230000109
* </pre>
*/
@SerializedName(value = "sp_mchid")
private String spMchid;
/**
* <pre>
* 字段名二级商户号
* 变量名sub_mchid
* 是否必填
* 类型string32
* 描述
* 二级商户的商户号有微信支付生成并下发
* 示例值1900000109
* </pre>
*/
@SerializedName(value = "sub_mchid")
private String subMchid;
/**
* <pre>
* 字段名商户订单号
* 变量名out_trade_no
* 是否必填
* 类型string32
* 描述
* 商户系统内部订单号只能是数字大小写字母_-*且在同一个商户号下唯一详见商户订单号
* 特殊规则最小字符长度为6
* 示例值1217752501201407033233368018
* </pre>
*/
private transient String outTradeNo;
}

View File

@ -166,6 +166,17 @@ public interface EcommerceService {
*/
PartnerTransactionsResult queryPartnerTransactions(PartnerTransactionsQueryRequest request) throws WxPayException;
/**
* <pre>
* 关闭普通订单API
* 文档地址: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/ecommerce/e_transactions/chapter3_6.shtml
* </pre>
*
* @param request 关闭普通订单请求
* @throws WxPayException the wx pay exception
*/
void closePartnerTransactions(PartnerTransactionsCloseRequest request) throws WxPayException;
/**
* <pre>
* 服务商账户实时余额

View File

@ -149,6 +149,12 @@ public class EcommerceServiceImpl implements EcommerceService {
return GSON.fromJson(response, PartnerTransactionsResult.class);
}
@Override
public void closePartnerTransactions(PartnerTransactionsCloseRequest request) throws WxPayException {
String url = String.format("%s/v3/pay/partner/transactions/out-trade-no/%s/close", this.payService.getPayBaseUrl(), request.getOutTradeNo());
String response = this.payService.postV3(url, GSON.toJson(request));
}
@Override
public FundBalanceResult spNowBalance(SpAccountTypeEnum accountType) throws WxPayException {
String url = String.format("%s/v3/merchant/fund/balance/%s", this.payService.getPayBaseUrl(), accountType);

View File

@ -100,7 +100,13 @@ public class WxPayServiceApacheHttpImpl extends BaseWxPayServiceImpl {
try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
//v3已经改为通过状态码判断200 204 成功
int statusCode = response.getStatusLine().getStatusCode();
String responseString = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
//post方法有可能会没有返回值的情况
String responseString;
if (response.getEntity() == null) {
responseString = null;
}else {
responseString = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
}
if (HttpStatus.SC_OK == statusCode || HttpStatus.SC_NO_CONTENT == statusCode) {
this.log.info("\n【请求地址】{}\n【请求数据】{}\n【响应数据】{}", url, requestStr, responseString);
return responseString;
@ -166,7 +172,13 @@ public class WxPayServiceApacheHttpImpl extends BaseWxPayServiceImpl {
try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
//v3已经改为通过状态码判断200 204 成功
int statusCode = response.getStatusLine().getStatusCode();
String responseString = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
//post方法有可能会没有返回值的情况
String responseString;
if (response.getEntity() == null) {
responseString = null;
}else {
responseString = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
}
if (HttpStatus.SC_OK == statusCode || HttpStatus.SC_NO_CONTENT == statusCode) {
this.log.info("\n【请求地址】{}\n【响应数据】{}", url, responseString);
return responseString;