Skip to content

Add missing sub_mchid and sub_appid fields to CombineCloseRequest.SubOrders #3656

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

Draft
wants to merge 2 commits into
base: develop
Choose a base branch
from
Draft
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
Expand Up @@ -87,5 +87,33 @@ public static class SubOrders implements Serializable {
*/
@SerializedName(value = "out_trade_no")
private String outTradeNo;
/**
* <pre>
* 字段名:二级商户号
* 变量名:sub_mchid
* 是否必填:是
* 类型:string[1,32]
* 描述:
* 二级商户商户号,由微信支付生成并下发。服务商子商户的商户号,被合单方。直连商户不用传二级商户号。
* 示例值:1900000109
* </pre>
*/
@SerializedName(value = "sub_mchid")
private String subMchid;
/**
* <pre>
* 字段名:子商户应用ID
* 变量名:sub_appid
* 是否必填:是
* 类型:string[1,32]
* 描述:
* 子商户申请的应用ID,全局唯一。请求基础下单接口时请注意APPID的应用属性,例如公众号场景下,
* 需使用应用属性为公众号的APPID 若sub_openid有传的情况下,
* sub_appid必填,且sub_appid需与sub_openid对应
* 示例值:wxd678efh567hg6999
* </pre>
*/
@SerializedName(value = "sub_appid")
private String subAppid;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.github.binarywang.wxpay.bean.request;

import com.google.gson.Gson;
import org.testng.annotations.Test;

import java.util.Arrays;

import static org.assertj.core.api.Assertions.assertThat;

/**
* @author <a href="https://github.com/binarywang">Binary Wang</a>
* created on 2024-12-19
*/
public class CombineCloseRequestTest {

@Test
public void testSerialization() {
CombineCloseRequest request = new CombineCloseRequest();
request.setCombineAppid("wxd678efh567hg6787");
request.setCombineOutTradeNo("P20150806125346");

CombineCloseRequest.SubOrders subOrder = new CombineCloseRequest.SubOrders();
subOrder.setMchid("1900000109");
subOrder.setOutTradeNo("20150806125346");
subOrder.setSubMchid("1230000109");
subOrder.setSubAppid("wxd678efh567hg6999");

request.setSubOrders(Arrays.asList(subOrder));

Gson gson = new Gson();
String json = gson.toJson(request);

// Verify that the JSON contains the new fields
assertThat(json).contains("\"sub_mchid\":\"1230000109\"");
assertThat(json).contains("\"sub_appid\":\"wxd678efh567hg6999\"");
assertThat(json).contains("\"combine_appid\":\"wxd678efh567hg6787\"");
assertThat(json).contains("\"mchid\":\"1900000109\"");
assertThat(json).contains("\"out_trade_no\":\"20150806125346\"");

// Verify deserialization works
CombineCloseRequest deserializedRequest = gson.fromJson(json, CombineCloseRequest.class);
assertThat(deserializedRequest.getCombineAppid()).isEqualTo("wxd678efh567hg6787");
assertThat(deserializedRequest.getSubOrders()).hasSize(1);
assertThat(deserializedRequest.getSubOrders().get(0).getSubMchid()).isEqualTo("1230000109");
assertThat(deserializedRequest.getSubOrders().get(0).getSubAppid()).isEqualTo("wxd678efh567hg6999");
}
}