Skip to content

Commit 1788d90

Browse files
authored
🎨 #3715 企业微信回调消息中的MsgId改为字符串类型
1 parent e6a844a commit 1788d90

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/message/WxCpXmlMessage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ public class WxCpXmlMessage implements Serializable {
9292
private String content;
9393

9494
@XStreamAlias("MsgId")
95-
private Long msgId;
95+
private String msgId;
9696

9797
@XStreamAlias("PicUrl")
9898
@XStreamConverter(value = XStreamCDataConverter.class)

weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpXmlMessageTest.java

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public void testFromXml() {
7272
assertEquals(wxMessage.getCreateTime(), Long.valueOf(1348831860));
7373
assertEquals(wxMessage.getMsgType(), WxConsts.XmlMsgType.TEXT);
7474
assertEquals(wxMessage.getContent(), "this is a test");
75-
assertEquals(wxMessage.getMsgId(), Long.valueOf(1234567890123456L));
75+
assertEquals(wxMessage.getMsgId(), "1234567890123456");
7676
assertEquals(wxMessage.getPicUrl(), "this is a url");
7777
assertEquals(wxMessage.getMediaId(), "media_id");
7878
assertEquals(wxMessage.getFormat(), "Format");
@@ -442,4 +442,33 @@ public void testUploadMediaJobFinishEvent() {
442442
assertThat(wxCpXmlMessage.getJobId()).isEqualTo("jobid_S0MrnndvRG5fadSlLwiBqiDDbM143UqTmKP3152FZk4");
443443
assertThat(wxCpXmlMessage.getEvent()).isEqualTo(UPLOAD_MEDIA_JOB_FINISH);
444444
}
445+
446+
/**
447+
* Test both numeric and string msgId formats to ensure backward compatibility
448+
*/
449+
public void testMsgIdStringAndNumericFormats() {
450+
// Test with numeric msgId (old format)
451+
String xmlWithNumeric = "<xml>"
452+
+ "<ToUserName><![CDATA[toUser]]></ToUserName>"
453+
+ "<FromUserName><![CDATA[fromUser]]></FromUserName>"
454+
+ "<CreateTime>1348831860</CreateTime>"
455+
+ "<MsgType><![CDATA[text]]></MsgType>"
456+
+ "<Content><![CDATA[this is a test]]></Content>"
457+
+ "<MsgId>1234567890123456</MsgId>"
458+
+ "</xml>";
459+
WxCpXmlMessage wxMessageNumeric = WxCpXmlMessage.fromXml(xmlWithNumeric);
460+
assertEquals(wxMessageNumeric.getMsgId(), "1234567890123456");
461+
462+
// Test with string msgId (new format - the actual issue case)
463+
String xmlWithString = "<xml>"
464+
+ "<ToUserName><![CDATA[toUser]]></ToUserName>"
465+
+ "<FromUserName><![CDATA[fromUser]]></FromUserName>"
466+
+ "<CreateTime>1348831860</CreateTime>"
467+
+ "<MsgType><![CDATA[text]]></MsgType>"
468+
+ "<Content><![CDATA[this is a test]]></Content>"
469+
+ "<MsgId>CAIQg/PKxgYY2sC9tpuAgAMg9/zKaw==</MsgId>"
470+
+ "</xml>";
471+
WxCpXmlMessage wxMessageString = WxCpXmlMessage.fromXml(xmlWithString);
472+
assertEquals(wxMessageString.getMsgId(), "CAIQg/PKxgYY2sC9tpuAgAMg9/zKaw==");
473+
}
445474
}

0 commit comments

Comments
 (0)