From 3f8b6e1c7a76102f134e31361f4702bbdf352c4c Mon Sep 17 00:00:00 2001 From: Scruel Tao Date: Wed, 8 Dec 2021 14:51:06 +0800 Subject: [PATCH] =?UTF-8?q?:new:=20=E5=A2=9E=E5=8A=A0=20WxMpXmlOutMessage?= =?UTF-8?q?=20=E8=BF=94=E5=9B=9E=E5=8C=85=E5=90=AB=E8=A2=AB=E5=8A=A0?= =?UTF-8?q?=E5=AF=86=E4=BF=A1=E6=81=AF=E5=AF=B9=E8=B1=A1=E7=9A=84=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mp/bean/message/WxMpXmlOutMessage.java | 51 +++++++++++++++++-- 1 file changed, 48 insertions(+), 3 deletions(-) diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutMessage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutMessage.java index 1d2b073f0..b4f1aa989 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutMessage.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutMessage.java @@ -1,10 +1,12 @@ package me.chanjar.weixin.mp.bean.message; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlCData; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamConverter; import lombok.Data; +import me.chanjar.weixin.common.util.crypto.WxCryptUtil; import me.chanjar.weixin.common.util.xml.XStreamCDataConverter; import me.chanjar.weixin.mp.config.WxMpConfigStorage; import me.chanjar.weixin.mp.builder.outxml.*; @@ -20,13 +22,15 @@ public abstract class WxMpXmlOutMessage implements Serializable { private static final long serialVersionUID = -381382011286216263L; @XStreamAlias("ToUserName") - @JacksonXmlProperty(localName = "ToUserName") @XStreamConverter(value = XStreamCDataConverter.class) + @JacksonXmlProperty(localName = "ToUserName") + @JacksonXmlCData protected String toUserName; @XStreamAlias("FromUserName") - @JacksonXmlProperty(localName = "FromUserName") @XStreamConverter(value = XStreamCDataConverter.class) + @JacksonXmlProperty(localName = "ToUserName") + @JacksonXmlCData protected String fromUserName; @XStreamAlias("CreateTime") @@ -34,10 +38,36 @@ public abstract class WxMpXmlOutMessage implements Serializable { protected Long createTime; @XStreamAlias("MsgType") - @JacksonXmlProperty(localName = "MsgType") @XStreamConverter(value = XStreamCDataConverter.class) + @JacksonXmlProperty(localName = "MsgType") + @JacksonXmlCData protected String msgType; + + @XStreamAlias("Encrypt") + @XStreamConverter(value = XStreamCDataConverter.class) + @JacksonXmlProperty(localName = "Encrypt") + @JacksonXmlCData + private String encrypt; + + @XStreamAlias("MsgSignature") + @XStreamConverter(value = XStreamCDataConverter.class) + @JacksonXmlProperty(localName = "MsgSignature") + @JacksonXmlCData + private String msgSignature; + + @XStreamAlias("TimeStamp") + @XStreamConverter(value = XStreamCDataConverter.class) + @JacksonXmlProperty(localName = "TimeStamp") + @JacksonXmlCData + private String timeStamp; + + @XStreamAlias("Nonce") + @XStreamConverter(value = XStreamCDataConverter.class) + @JacksonXmlProperty(localName = "Nonce") + @JacksonXmlCData + private String nonce; + /** * 获得文本消息builder */ @@ -99,6 +129,21 @@ public abstract class WxMpXmlOutMessage implements Serializable { return XStreamTransformer.toXml((Class) this.getClass(), this); } + /** + * 转换成加密的结果 + */ + public WxMpXmlOutMessage toEncrypted(WxMpConfigStorage wxMpConfigStorage) { + String plainXml = toXml(); + WxMpCryptUtil pc = new WxMpCryptUtil(wxMpConfigStorage); + WxCryptUtil.EncryptContext context = pc.encryptContext(plainXml); + WxMpXmlOutMessage res = new WxMpXmlOutMessage() {}; + res.setNonce(context.getNonce()); + res.setEncrypt(context.getEncrypt()); + res.setTimeStamp(context.getTimeStamp()); + res.setMsgSignature(context.getSignature()); + return res; + } + /** * 转换成加密的xml格式 */