diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxSignQueryResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxSignQueryResult.java index 00bf9cda2..ca435f5b0 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxSignQueryResult.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxSignQueryResult.java @@ -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) { diff --git a/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/result/WxSignQueryResultTest.java b/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/result/WxSignQueryResultTest.java index 52df2b6e2..12d62b148 100644 --- a/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/result/WxSignQueryResultTest.java +++ b/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/result/WxSignQueryResultTest.java @@ -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 = "\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " 123\n" + + " \n" + + " 1695\n" + + " \n" + + " \n" + + " 2015-07-01 10:00:00\n" + + " 2016-07-01 10:00:00\n" + + " \n" + + ""; + + 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 = "\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " 123\n" + + " \n" + + " 1695\n" + + " \n" + + " \n" + + " 2015-07-01 11:00:00\n" + + " 2\n" + + " \n" + + ""; + + 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; + } + } }