🎨 #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
|
||||
*
|
||||
* @author Pursuer
|
||||
* @version 1.0
|
||||
* @date 2023/3/2
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
public class WxPayPartnerRefundV3Request extends WxPayRefundV3Request implements Serializable {
|
||||
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>
|
||||
* 字段名:退款资金来源
|
||||
|
||||
@@ -404,6 +404,12 @@ public abstract class BaseWxPayServiceImpl implements WxPayService {
|
||||
|
||||
@Override
|
||||
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())) {
|
||||
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