1
0
mirror of synced 2026-04-13 20:48:55 +08:00

fix: 添加WxSignQueryResult向后兼容构造函数并补充change_type/operate_time单元测试

Agent-Logs-Url: https://github.com/binarywang/WxJava/sessions/8bd848c3-daae-447f-ac54-3c2c0c8dcfb6

Co-authored-by: binarywang <1343140+binarywang@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-04-11 12:54:56 +00:00
committed by GitHub
parent a8afc1d3c6
commit 1957e0f867
2 changed files with 81 additions and 0 deletions

View File

@@ -116,6 +116,22 @@ public class WxSignQueryResult extends BaseWxPayResult implements Serializable {
@XStreamAlias("operate_time")
private String operateTime;
/**
* 为保持向后兼容保留的构造函数(不含 changeType、operateTime 字段)。
*
* @deprecated 请使用包含所有字段的全参构造函数。
*/
@Deprecated
public WxSignQueryResult(String contractId, String planId, Long requestSerial,
String contractCode, String contractDisplayAccount,
Integer contractState, String contractSignedTime,
String contractExpiredTime, String contractTerminatedTime,
Integer contractTerminatedMode, String contractTerminationRemark,
String openId) {
this(contractId, planId, requestSerial, contractCode, contractDisplayAccount,
contractState, contractSignedTime, contractExpiredTime, contractTerminatedTime,
contractTerminatedMode, contractTerminationRemark, openId, null, null);
}
@Override
protected void loadXml(Document d) {

View File

@@ -117,9 +117,74 @@ public class WxSignQueryResultTest {
Assert.assertNull(result.getContractTerminatedTime());
Assert.assertNull(result.getContractTerminatedMode());
Assert.assertNull(result.getContractTerminationRemark());
Assert.assertNull(result.getChangeType());
Assert.assertNull(result.getOperateTime());
} finally {
// 恢复默认值
XmlConfig.fastMode = false;
}
}
/**
* 测试签约回调通知 XML 解析 - change_type = ADD
*/
@Test
public void testFromXML_SignCallback_Add() {
String xmlString = "<xml>\n" +
" <return_code><![CDATA[SUCCESS]]></return_code>\n" +
" <appid><![CDATA[wx426b3015555b46be]]></appid>\n" +
" <mch_id><![CDATA[10000098]]></mch_id>\n" +
" <contract_id><![CDATA[Wx15463511252015071056489715]]></contract_id>\n" +
" <plan_id>123</plan_id>\n" +
" <openid><![CDATA[ozoKAt9TIPHfwVMkcniiNKZ1vbyw]]></openid>\n" +
" <request_serial>1695</request_serial>\n" +
" <contract_code><![CDATA[100001256]]></contract_code>\n" +
" <change_type><![CDATA[ADD]]></change_type>\n" +
" <operate_time>2015-07-01 10:00:00</operate_time>\n" +
" <contract_expired_time>2016-07-01 10:00:00</contract_expired_time>\n" +
" <sign><![CDATA[C380BEC2BFD727A4B6845133519F3AD6]]></sign>\n" +
"</xml>";
XmlConfig.fastMode = true;
try {
WxSignQueryResult result = WxSignQueryResult.fromXML(xmlString, WxSignQueryResult.class);
Assert.assertEquals(result.getChangeType(), "ADD");
Assert.assertEquals(result.getOperateTime(), "2015-07-01 10:00:00");
} finally {
XmlConfig.fastMode = false;
}
}
/**
* 测试解约回调通知 XML 解析 - change_type = DELETE
*/
@Test
public void testFromXML_SignCallback_Delete() {
String xmlString = "<xml>\n" +
" <return_code><![CDATA[SUCCESS]]></return_code>\n" +
" <appid><![CDATA[wx426b3015555b46be]]></appid>\n" +
" <mch_id><![CDATA[10000098]]></mch_id>\n" +
" <contract_id><![CDATA[Wx15463511252015071056489715]]></contract_id>\n" +
" <plan_id>123</plan_id>\n" +
" <openid><![CDATA[ozoKAt9TIPHfwVMkcniiNKZ1vbyw]]></openid>\n" +
" <request_serial>1695</request_serial>\n" +
" <contract_code><![CDATA[100001256]]></contract_code>\n" +
" <change_type><![CDATA[DELETE]]></change_type>\n" +
" <operate_time>2015-07-01 11:00:00</operate_time>\n" +
" <contract_termination_mode>2</contract_termination_mode>\n" +
" <sign><![CDATA[C380BEC2BFD727A4B6845133519F3AD6]]></sign>\n" +
"</xml>";
XmlConfig.fastMode = true;
try {
WxSignQueryResult result = WxSignQueryResult.fromXML(xmlString, WxSignQueryResult.class);
Assert.assertEquals(result.getChangeType(), "DELETE");
Assert.assertEquals(result.getOperateTime(), "2015-07-01 11:00:00");
Assert.assertEquals(result.getContractTerminatedMode().intValue(), 2);
} finally {
XmlConfig.fastMode = false;
}
}
}