🎨 #3918 【微信支付】服务商退款(V3)请求对象补齐缺失字段 (sp_appid 和 sub_appid)
This commit is contained in:
@@ -11,15 +11,38 @@ import java.io.Serializable;
|
|||||||
* 微信支付服务商退款请求
|
* 微信支付服务商退款请求
|
||||||
* 文档见:https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter4_1_9.shtml
|
* 文档见:https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter4_1_9.shtml
|
||||||
*
|
*
|
||||||
* @author Pursuer
|
|
||||||
* @version 1.0
|
|
||||||
* @date 2023/3/2
|
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@Accessors(chain = true)
|
@Accessors(chain = true)
|
||||||
public class WxPayPartnerRefundV3Request extends WxPayRefundV3Request implements Serializable {
|
public class WxPayPartnerRefundV3Request extends WxPayRefundV3Request implements Serializable {
|
||||||
private static final long serialVersionUID = -1L;
|
private static final long serialVersionUID = -1L;
|
||||||
|
/**
|
||||||
|
* <pre>
|
||||||
|
* 字段名:服务商应用ID
|
||||||
|
* 变量名:sp_appid
|
||||||
|
* 是否必填:是
|
||||||
|
* 类型:string[1, 32]
|
||||||
|
* 描述:
|
||||||
|
* 服务商申请的公众号或移动应用appid。
|
||||||
|
* 示例值:wx8888888888888888
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
@SerializedName(value = "sp_appid")
|
||||||
|
private String spAppid;
|
||||||
|
/**
|
||||||
|
* <pre>
|
||||||
|
* 字段名:子商户应用ID
|
||||||
|
* 变量名:sub_appid
|
||||||
|
* 是否必填:否
|
||||||
|
* 类型:string[1, 32]
|
||||||
|
* 描述:
|
||||||
|
* 子商户申请的公众号或移动应用appid。如果传了sub_appid,那sub_appid对应的订单必须存在。
|
||||||
|
* 示例值:wx8888888888888888
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
@SerializedName(value = "sub_appid")
|
||||||
|
private String subAppid;
|
||||||
/**
|
/**
|
||||||
* <pre>
|
* <pre>
|
||||||
* 字段名:退款资金来源
|
* 字段名:退款资金来源
|
||||||
|
|||||||
@@ -404,6 +404,12 @@ public abstract class BaseWxPayServiceImpl implements WxPayService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WxPayRefundV3Result partnerRefundV3(WxPayPartnerRefundV3Request request) throws WxPayException {
|
public WxPayRefundV3Result partnerRefundV3(WxPayPartnerRefundV3Request request) throws WxPayException {
|
||||||
|
if (StringUtils.isBlank(request.getSpAppid())) {
|
||||||
|
request.setSpAppid(this.getConfig().getAppId());
|
||||||
|
}
|
||||||
|
if (StringUtils.isBlank(request.getSubAppid()) && StringUtils.isNotBlank(this.getConfig().getSubAppId())) {
|
||||||
|
request.setSubAppid(this.getConfig().getSubAppId());
|
||||||
|
}
|
||||||
if (StringUtils.isBlank(request.getNotifyUrl())) {
|
if (StringUtils.isBlank(request.getNotifyUrl())) {
|
||||||
request.setNotifyUrl(this.getConfig().getRefundNotifyUrl());
|
request.setNotifyUrl(this.getConfig().getRefundNotifyUrl());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
package com.github.binarywang.wxpay.bean.request;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link WxPayPartnerRefundV3Request} 单元测试
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class WxPayPartnerRefundV3RequestTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSpAppidAndSubAppidSerialization() {
|
||||||
|
WxPayPartnerRefundV3Request request = new WxPayPartnerRefundV3Request();
|
||||||
|
request.setSpAppid("wx8888888888888888");
|
||||||
|
request.setSubAppid("wxd678efh567hg6999");
|
||||||
|
request.setSubMchid("1230000109");
|
||||||
|
request.setOutRefundNo("1217752501201407033233368018");
|
||||||
|
request.setFundsAccount("AVAILABLE");
|
||||||
|
|
||||||
|
Gson gson = new Gson();
|
||||||
|
String json = gson.toJson(request);
|
||||||
|
JsonObject jsonObject = gson.fromJson(json, JsonObject.class);
|
||||||
|
|
||||||
|
assertThat(jsonObject.has("sp_appid")).isTrue();
|
||||||
|
assertThat(jsonObject.get("sp_appid").getAsString()).isEqualTo("wx8888888888888888");
|
||||||
|
assertThat(jsonObject.has("sub_appid")).isTrue();
|
||||||
|
assertThat(jsonObject.get("sub_appid").getAsString()).isEqualTo("wxd678efh567hg6999");
|
||||||
|
assertThat(jsonObject.has("sub_mchid")).isTrue();
|
||||||
|
assertThat(jsonObject.get("sub_mchid").getAsString()).isEqualTo("1230000109");
|
||||||
|
assertThat(jsonObject.has("out_refund_no")).isTrue();
|
||||||
|
assertThat(jsonObject.get("out_refund_no").getAsString()).isEqualTo("1217752501201407033233368018");
|
||||||
|
assertThat(jsonObject.has("funds_account")).isTrue();
|
||||||
|
assertThat(jsonObject.get("funds_account").getAsString()).isEqualTo("AVAILABLE");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSubAppidIsOptional() {
|
||||||
|
WxPayPartnerRefundV3Request request = new WxPayPartnerRefundV3Request();
|
||||||
|
request.setSpAppid("wx8888888888888888");
|
||||||
|
request.setSubMchid("1230000109");
|
||||||
|
request.setOutRefundNo("1217752501201407033233368018");
|
||||||
|
|
||||||
|
Gson gson = new Gson();
|
||||||
|
String json = gson.toJson(request);
|
||||||
|
JsonObject jsonObject = gson.fromJson(json, JsonObject.class);
|
||||||
|
|
||||||
|
assertThat(jsonObject.has("sp_appid")).isTrue();
|
||||||
|
assertThat(jsonObject.get("sp_appid").getAsString()).isEqualTo("wx8888888888888888");
|
||||||
|
assertThat(jsonObject.has("sub_appid")).isFalse();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user