🆕 增加 WxMpXmlOutMessage 返回包含被加密信息对象的方法

This commit is contained in:
Scruel Tao 2021-12-08 14:51:06 +08:00 committed by GitHub
parent 05fd45b853
commit 3f8b6e1c7a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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<WxMpXmlOutMessage>) 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格式
*/