🎨 WxMpXmlMessage 对象支持 jackson 序列化注解(无功能性影响,非强依赖)

This commit is contained in:
Scruel Tao 2021-12-07 15:42:36 +08:00 committed by GitHub
parent 7f11938799
commit e2f370eedc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 130 additions and 1 deletions

View File

@ -187,6 +187,11 @@
<artifactId>gson</artifactId> <artifactId>gson</artifactId>
<version>2.8.0</version> <version>2.8.0</version>
</dependency> </dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.13.0</version>
</dependency>
<!-- 测试所用依赖 --> <!-- 测试所用依赖 -->
<dependency> <dependency>

View File

@ -84,6 +84,11 @@
<groupId>org.redisson</groupId> <groupId>org.redisson</groupId>
<artifactId>redisson</artifactId> <artifactId>redisson</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<optional>true</optional>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -1,5 +1,7 @@
package me.chanjar.weixin.mp.bean.message; package me.chanjar.weixin.mp.bean.message;
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.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamConverter; import com.thoughtworks.xstream.annotations.XStreamConverter;
import lombok.Data; import lombok.Data;
@ -33,6 +35,7 @@ import java.util.Map;
@Data @Data
@Slf4j @Slf4j
@XStreamAlias("xml") @XStreamAlias("xml")
@JacksonXmlRootElement(localName = "xml")
public class WxMpXmlMessage implements Serializable { public class WxMpXmlMessage implements Serializable {
private static final long serialVersionUID = -3586245291677274914L; private static final long serialVersionUID = -3586245291677274914L;
@ -46,97 +49,123 @@ public class WxMpXmlMessage implements Serializable {
/////////////////////// ///////////////////////
@XStreamAlias("ToUserName") @XStreamAlias("ToUserName")
@JacksonXmlProperty(localName = "ToUserName")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String toUser; private String toUser;
@XStreamAlias("FromUserName") @XStreamAlias("FromUserName")
@JacksonXmlProperty(localName = "FromUserName")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String fromUser; private String fromUser;
@XStreamAlias("CreateTime") @XStreamAlias("CreateTime")
@JacksonXmlProperty(localName = "CreateTime")
private Long createTime; private Long createTime;
@XStreamAlias("MsgType") @XStreamAlias("MsgType")
@JacksonXmlProperty(localName = "MsgType")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String msgType; private String msgType;
@XStreamAlias("Content") @XStreamAlias("Content")
@JacksonXmlProperty(localName = "Content")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String content; private String content;
@XStreamAlias("MenuId") @XStreamAlias("MenuId")
@JacksonXmlProperty(localName = "MenuId")
private Long menuId; private Long menuId;
@XStreamAlias("MsgId") @XStreamAlias("MsgId")
@JacksonXmlProperty(localName = "MsgId")
private Long msgId; private Long msgId;
@XStreamAlias("PicUrl") @XStreamAlias("PicUrl")
@JacksonXmlProperty(localName = "PicUrl")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String picUrl; private String picUrl;
@XStreamAlias("MediaId") @XStreamAlias("MediaId")
@JacksonXmlProperty(localName = "MediaId")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String mediaId; private String mediaId;
@XStreamAlias("Format") @XStreamAlias("Format")
@JacksonXmlProperty(localName = "Format")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String format; private String format;
@XStreamAlias("ThumbMediaId") @XStreamAlias("ThumbMediaId")
@JacksonXmlProperty(localName = "ThumbMediaId")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String thumbMediaId; private String thumbMediaId;
@XStreamAlias("Location_X") @XStreamAlias("Location_X")
@JacksonXmlProperty(localName = "Location_X")
private Double locationX; private Double locationX;
@XStreamAlias("Location_Y") @XStreamAlias("Location_Y")
@JacksonXmlProperty(localName = "Location_Y")
private Double locationY; private Double locationY;
@XStreamAlias("Scale") @XStreamAlias("Scale")
@JacksonXmlProperty(localName = "Scale")
private Double scale; private Double scale;
@XStreamAlias("Label") @XStreamAlias("Label")
@JacksonXmlProperty(localName = "Label")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String label; private String label;
@XStreamAlias("Title") @XStreamAlias("Title")
@JacksonXmlProperty(localName = "Title")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String title; private String title;
@XStreamAlias("Description") @XStreamAlias("Description")
@JacksonXmlProperty(localName = "Description")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String description; private String description;
@XStreamAlias("Url") @XStreamAlias("Url")
@JacksonXmlProperty(localName = "Url")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String url; private String url;
@XStreamAlias("Event") @XStreamAlias("Event")
@JacksonXmlProperty(localName = "Event")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String event; private String event;
@XStreamAlias("EventKey") @XStreamAlias("EventKey")
@JacksonXmlProperty(localName = "EventKey")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String eventKey; private String eventKey;
@XStreamAlias("Ticket") @XStreamAlias("Ticket")
@JacksonXmlProperty(localName = "Ticket")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String ticket; private String ticket;
@XStreamAlias("Latitude") @XStreamAlias("Latitude")
@JacksonXmlProperty(localName = "Latitude")
private Double latitude; private Double latitude;
@XStreamAlias("Longitude") @XStreamAlias("Longitude")
@JacksonXmlProperty(localName = "Longitude")
private Double longitude; private Double longitude;
@XStreamAlias("Precision") @XStreamAlias("Precision")
@JacksonXmlProperty(localName = "Precision")
private Double precision; private Double precision;
@XStreamAlias("Recognition") @XStreamAlias("Recognition")
@JacksonXmlProperty(localName = "Recognition")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String recognition; private String recognition;
@XStreamAlias("UnionId") @XStreamAlias("UnionId")
@JacksonXmlProperty(localName = "UnionId")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String unionId; private String unionId;
@ -147,28 +176,33 @@ public class WxMpXmlMessage implements Serializable {
* 群发的结果. * 群发的结果.
*/ */
@XStreamAlias("Status") @XStreamAlias("Status")
@JacksonXmlProperty(localName = "Status")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String status; private String status;
/** /**
* group_id下粉丝数或者openid_list中的粉丝数. * group_id下粉丝数或者openid_list中的粉丝数.
*/ */
@XStreamAlias("TotalCount") @XStreamAlias("TotalCount")
@JacksonXmlProperty(localName = "TotalCount")
private Integer totalCount; private Integer totalCount;
/** /**
* 过滤过滤是指特定地区性别的过滤用户设置拒收的过滤用户接收已超4条的过滤准备发送的粉丝数. * 过滤过滤是指特定地区性别的过滤用户设置拒收的过滤用户接收已超4条的过滤准备发送的粉丝数.
* 原则上filterCount = sentCount + errorCount * 原则上filterCount = sentCount + errorCount
*/ */
@XStreamAlias("FilterCount") @XStreamAlias("FilterCount")
@JacksonXmlProperty(localName = "FilterCount")
private Integer filterCount; private Integer filterCount;
/** /**
* 发送成功的粉丝数. * 发送成功的粉丝数.
*/ */
@XStreamAlias("SentCount") @XStreamAlias("SentCount")
@JacksonXmlProperty(localName = "SentCount")
private Integer sentCount; private Integer sentCount;
/** /**
* 发送失败的粉丝数. * 发送失败的粉丝数.
*/ */
@XStreamAlias("ErrorCount") @XStreamAlias("ErrorCount")
@JacksonXmlProperty(localName = "ErrorCount")
private Integer errorCount; private Integer errorCount;
/////////////////////////////////////// ///////////////////////////////////////
@ -178,16 +212,19 @@ public class WxMpXmlMessage implements Serializable {
* 创建或关闭客服会话时的客服帐号. * 创建或关闭客服会话时的客服帐号.
*/ */
@XStreamAlias("KfAccount") @XStreamAlias("KfAccount")
@JacksonXmlProperty(localName = "KfAccount")
private String kfAccount; private String kfAccount;
/** /**
* 转接客服会话时的转入客服帐号. * 转接客服会话时的转入客服帐号.
*/ */
@XStreamAlias("ToKfAccount") @XStreamAlias("ToKfAccount")
@JacksonXmlProperty(localName = "ToKfAccount")
private String toKfAccount; private String toKfAccount;
/** /**
* 转接客服会话时的转出客服帐号. * 转接客服会话时的转出客服帐号.
*/ */
@XStreamAlias("FromKfAccount") @XStreamAlias("FromKfAccount")
@JacksonXmlProperty(localName = "FromKfAccount")
private String fromKfAccount; private String fromKfAccount;
/////////////////////////////////////// ///////////////////////////////////////
@ -195,10 +232,12 @@ public class WxMpXmlMessage implements Serializable {
/////////////////////////////////////// ///////////////////////////////////////
@XStreamAlias("CardId") @XStreamAlias("CardId")
@JacksonXmlProperty(localName = "CardId")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String cardId; private String cardId;
@XStreamAlias("FriendUserName") @XStreamAlias("FriendUserName")
@JacksonXmlProperty(localName = "FriendUserName")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String friendUserName; private String friendUserName;
@ -206,23 +245,28 @@ public class WxMpXmlMessage implements Serializable {
* 是否为转赠1代表是0代表否. * 是否为转赠1代表是0代表否.
*/ */
@XStreamAlias("IsGiveByFriend") @XStreamAlias("IsGiveByFriend")
@JacksonXmlProperty(localName = "IsGiveByFriend")
private Integer isGiveByFriend; private Integer isGiveByFriend;
@XStreamAlias("UserCardCode") @XStreamAlias("UserCardCode")
@JacksonXmlProperty(localName = "UserCardCode")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String userCardCode; private String userCardCode;
@XStreamAlias("OldUserCardCode") @XStreamAlias("OldUserCardCode")
@JacksonXmlProperty(localName = "OldUserCardCode")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String oldUserCardCode; private String oldUserCardCode;
@XStreamAlias("OuterId") @XStreamAlias("OuterId")
@JacksonXmlProperty(localName = "OuterId")
private Integer outerId; private Integer outerId;
/** /**
* 用户删除会员卡后可重新找回当用户本次操作为找回时该值为1否则为0. * 用户删除会员卡后可重新找回当用户本次操作为找回时该值为1否则为0.
*/ */
@XStreamAlias("IsRestoreMemberCard") @XStreamAlias("IsRestoreMemberCard")
@JacksonXmlProperty(localName = "IsRestoreMemberCard")
private String isRestoreMemberCard; private String isRestoreMemberCard;
/** /**
@ -235,18 +279,21 @@ public class WxMpXmlMessage implements Serializable {
* </pre> * </pre>
*/ */
@XStreamAlias("OuterStr") @XStreamAlias("OuterStr")
@JacksonXmlProperty(localName = "OuterStr")
private String outerStr; private String outerStr;
/** /**
* 是否转赠退回0代表不是1代表是. * 是否转赠退回0代表不是1代表是.
*/ */
@XStreamAlias("IsReturnBack") @XStreamAlias("IsReturnBack")
@JacksonXmlProperty(localName = "IsReturnBack")
private String isReturnBack; private String isReturnBack;
/** /**
* 是否是群转赠0代表不是1代表是. * 是否是群转赠0代表不是1代表是.
*/ */
@XStreamAlias("IsChatRoom") @XStreamAlias("IsChatRoom")
@JacksonXmlProperty(localName = "IsChatRoom")
private String isChatRoom; private String isChatRoom;
/** /**
@ -254,6 +301,7 @@ public class WxMpXmlMessage implements Serializable {
* 支持开发者统计API核销FROM_API公众平台核销FROM_MP卡券商户助手核销FROM_MOBILE_HELPER核销员微信号 * 支持开发者统计API核销FROM_API公众平台核销FROM_MP卡券商户助手核销FROM_MOBILE_HELPER核销员微信号
*/ */
@XStreamAlias("ConsumeSource") @XStreamAlias("ConsumeSource")
@JacksonXmlProperty(localName = "ConsumeSource")
private String consumeSource; private String consumeSource;
/** /**
@ -261,24 +309,28 @@ public class WxMpXmlMessage implements Serializable {
* 当前卡券核销的门店名称只有通过自助核销和买单核销时才会出现该字段 * 当前卡券核销的门店名称只有通过自助核销和买单核销时才会出现该字段
*/ */
@XStreamAlias("LocationName") @XStreamAlias("LocationName")
@JacksonXmlProperty(localName = "LocationName")
private String locationName; private String locationName;
/** /**
* 核销该卡券核销员的openid只有通过卡券商户助手核销时才会出现. * 核销该卡券核销员的openid只有通过卡券商户助手核销时才会出现.
*/ */
@XStreamAlias("StaffOpenId") @XStreamAlias("StaffOpenId")
@JacksonXmlProperty(localName = "StaffOpenId")
private String staffOpenId; private String staffOpenId;
/** /**
* 自助核销时用户输入的验证码. * 自助核销时用户输入的验证码.
*/ */
@XStreamAlias("VerifyCode") @XStreamAlias("VerifyCode")
@JacksonXmlProperty(localName = "VerifyCode")
private String verifyCode; private String verifyCode;
/** /**
* 自助核销时用户输入的备注金额. * 自助核销时用户输入的备注金额.
*/ */
@XStreamAlias("RemarkAmount") @XStreamAlias("RemarkAmount")
@JacksonXmlProperty(localName = "RemarkAmount")
private String remarkAmount; private String remarkAmount;
/** /**
@ -288,6 +340,7 @@ public class WxMpXmlMessage implements Serializable {
* </pre> * </pre>
*/ */
@XStreamAlias("Detail") @XStreamAlias("Detail")
@JacksonXmlProperty(localName = "Detail")
private String detail; private String detail;
/** /**
@ -297,6 +350,7 @@ public class WxMpXmlMessage implements Serializable {
* </pre> * </pre>
*/ */
@XStreamAlias("ModifyBonus") @XStreamAlias("ModifyBonus")
@JacksonXmlProperty(localName = "ModifyBonus")
private String modifyBonus; private String modifyBonus;
/** /**
@ -306,6 +360,7 @@ public class WxMpXmlMessage implements Serializable {
* </pre> * </pre>
*/ */
@XStreamAlias("ModifyBalance") @XStreamAlias("ModifyBalance")
@JacksonXmlProperty(localName = "ModifyBalance")
private String modifyBalance; private String modifyBalance;
/** /**
@ -315,6 +370,7 @@ public class WxMpXmlMessage implements Serializable {
* </pre> * </pre>
*/ */
@XStreamAlias("TransId") @XStreamAlias("TransId")
@JacksonXmlProperty(localName = "TransId")
private String transId; private String transId;
/** /**
@ -324,6 +380,7 @@ public class WxMpXmlMessage implements Serializable {
* </pre> * </pre>
*/ */
@XStreamAlias("LocationId") @XStreamAlias("LocationId")
@JacksonXmlProperty(localName = "LocationId")
private String locationId; private String locationId;
/** /**
@ -333,6 +390,7 @@ public class WxMpXmlMessage implements Serializable {
* </pre> * </pre>
*/ */
@XStreamAlias("Fee") @XStreamAlias("Fee")
@JacksonXmlProperty(localName = "Fee")
private String fee; private String fee;
/** /**
@ -342,72 +400,86 @@ public class WxMpXmlMessage implements Serializable {
* </pre> * </pre>
*/ */
@XStreamAlias("OriginalFee") @XStreamAlias("OriginalFee")
@JacksonXmlProperty(localName = "OriginalFee")
private String originalFee; private String originalFee;
@XStreamAlias("ScanCodeInfo") @XStreamAlias("ScanCodeInfo")
@JacksonXmlProperty(localName = "ScanCodeInfo")
private ScanCodeInfo scanCodeInfo = new ScanCodeInfo(); private ScanCodeInfo scanCodeInfo = new ScanCodeInfo();
@XStreamAlias("SendPicsInfo") @XStreamAlias("SendPicsInfo")
@JacksonXmlProperty(localName = "SendPicsInfo")
private SendPicsInfo sendPicsInfo = new SendPicsInfo(); private SendPicsInfo sendPicsInfo = new SendPicsInfo();
@XStreamAlias("SendLocationInfo") @XStreamAlias("SendLocationInfo")
@JacksonXmlProperty(localName = "SendLocationInfo")
private SendLocationInfo sendLocationInfo = new SendLocationInfo(); private SendLocationInfo sendLocationInfo = new SendLocationInfo();
@XStreamAlias("ArticleUrlResult") @XStreamAlias("ArticleUrlResult")
@JacksonXmlProperty(localName = "ArticleUrlResult")
private ArticleUrlResult articleUrlResult = new ArticleUrlResult(); private ArticleUrlResult articleUrlResult = new ArticleUrlResult();
/** /**
* 审核不通过原因 * 审核不通过原因
*/ */
@XStreamAlias("RefuseReason") @XStreamAlias("RefuseReason")
@JacksonXmlProperty(localName = "RefuseReason")
private String refuseReason; private String refuseReason;
/** /**
* 是否为朋友推荐0代表否1代表是 * 是否为朋友推荐0代表否1代表是
*/ */
@XStreamAlias("IsRecommendByFriend") @XStreamAlias("IsRecommendByFriend")
@JacksonXmlProperty(localName = "IsRecommendByFriend")
private String isRecommendByFriend; private String isRecommendByFriend;
/** /**
* 购买券点时实际支付成功的时间 * 购买券点时实际支付成功的时间
*/ */
@XStreamAlias("PayFinishTime") @XStreamAlias("PayFinishTime")
@JacksonXmlProperty(localName = "PayFinishTime")
private String payFinishTime; private String payFinishTime;
/** /**
* 购买券点时支付二维码的生成时间 * 购买券点时支付二维码的生成时间
*/ */
@XStreamAlias("CreateOrderTime") @XStreamAlias("CreateOrderTime")
@JacksonXmlProperty(localName = "CreateOrderTime")
private String createOrderTime; private String createOrderTime;
/** /**
* 购买券点时支付二维码的生成时间 * 购买券点时支付二维码的生成时间
*/ */
@XStreamAlias("Desc") @XStreamAlias("Desc")
@JacksonXmlProperty(localName = "Desc")
private String desc; private String desc;
/** /**
* 剩余免费券点数量 * 剩余免费券点数量
*/ */
@XStreamAlias("FreeCoinCount") @XStreamAlias("FreeCoinCount")
@JacksonXmlProperty(localName = "FreeCoinCount")
private String freeCoinCount; private String freeCoinCount;
/** /**
* 剩余付费券点数量 * 剩余付费券点数量
*/ */
@XStreamAlias("PayCoinCount") @XStreamAlias("PayCoinCount")
@JacksonXmlProperty(localName = "PayCoinCount")
private String payCoinCount; private String payCoinCount;
/** /**
* 本次变动的免费券点数量 * 本次变动的免费券点数量
*/ */
@XStreamAlias("RefundFreeCoinCount") @XStreamAlias("RefundFreeCoinCount")
@JacksonXmlProperty(localName = "RefundFreeCoinCount")
private String refundFreeCoinCount; private String refundFreeCoinCount;
/** /**
* 本次变动的付费券点数量 * 本次变动的付费券点数量
*/ */
@XStreamAlias("RefundPayCoinCount") @XStreamAlias("RefundPayCoinCount")
@JacksonXmlProperty(localName = "RefundPayCoinCount")
private String refundPayCoinCount; private String refundPayCoinCount;
/** /**
@ -417,18 +489,21 @@ public class WxMpXmlMessage implements Serializable {
* </pre> * </pre>
*/ */
@XStreamAlias("OrderType") @XStreamAlias("OrderType")
@JacksonXmlProperty(localName = "OrderType")
private String orderType; private String orderType;
/** /**
* 系统备注说明此次变动的缘由如开通账户奖励门店奖励核销奖励以及充值扣减 * 系统备注说明此次变动的缘由如开通账户奖励门店奖励核销奖励以及充值扣减
*/ */
@XStreamAlias("Memo") @XStreamAlias("Memo")
@JacksonXmlProperty(localName = "Memo")
private String memo; private String memo;
/** /**
* 所开发票的详情 * 所开发票的详情
*/ */
@XStreamAlias("ReceiptInfo") @XStreamAlias("ReceiptInfo")
@JacksonXmlProperty(localName = "ReceiptInfo")
private String receiptInfo; private String receiptInfo;
@ -439,12 +514,14 @@ public class WxMpXmlMessage implements Serializable {
* 商户自己内部ID即字段中的sid. * 商户自己内部ID即字段中的sid.
*/ */
@XStreamAlias("UniqId") @XStreamAlias("UniqId")
@JacksonXmlProperty(localName = "UniqId")
private String storeUniqId; private String storeUniqId;
/** /**
* 微信的门店ID微信内门店唯一标示ID. * 微信的门店ID微信内门店唯一标示ID.
*/ */
@XStreamAlias("PoiId") @XStreamAlias("PoiId")
@JacksonXmlProperty(localName = "PoiId")
private String poiId; private String poiId;
/** /**
@ -453,12 +530,14 @@ public class WxMpXmlMessage implements Serializable {
* 在商品审核结果推送时verify_ok表示审核通过verify_not_pass表示审核未通过 * 在商品审核结果推送时verify_ok表示审核通过verify_not_pass表示审核未通过
*/ */
@XStreamAlias("Result") @XStreamAlias("Result")
@JacksonXmlProperty(localName = "Result")
private String result; private String result;
/** /**
* 成功的通知信息或审核失败的驳回理由. * 成功的通知信息或审核失败的驳回理由.
*/ */
@XStreamAlias("msg") @XStreamAlias("msg")
@JacksonXmlProperty(localName = "msg")
private String msg; private String msg;
/////////////////////////////////////// ///////////////////////////////////////
@ -470,16 +549,19 @@ public class WxMpXmlMessage implements Serializable {
* 认证过期失效通知: 有效期 (整形)指的是时间戳表示已于该时间戳认证过期需要重新发起微信认证 * 认证过期失效通知: 有效期 (整形)指的是时间戳表示已于该时间戳认证过期需要重新发起微信认证
*/ */
@XStreamAlias("ExpiredTime") @XStreamAlias("ExpiredTime")
@JacksonXmlProperty(localName = "ExpiredTime")
private Long expiredTime; private Long expiredTime;
/** /**
* 失败发生时间 (整形)时间戳. * 失败发生时间 (整形)时间戳.
*/ */
@XStreamAlias("FailTime") @XStreamAlias("FailTime")
@JacksonXmlProperty(localName = "FailTime")
private Long failTime; private Long failTime;
/** /**
* 认证失败的原因. * 认证失败的原因.
*/ */
@XStreamAlias("FailReason") @XStreamAlias("FailReason")
@JacksonXmlProperty(localName = "FailReason")
private String failReason; private String failReason;
/////////////////////////////////////// ///////////////////////////////////////
@ -489,6 +571,7 @@ public class WxMpXmlMessage implements Serializable {
* 订单ID. * 订单ID.
*/ */
@XStreamAlias("OrderId") @XStreamAlias("OrderId")
@JacksonXmlProperty(localName = "OrderId")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String orderId; private String orderId;
@ -496,12 +579,14 @@ public class WxMpXmlMessage implements Serializable {
* 订单状态. * 订单状态.
*/ */
@XStreamAlias("OrderStatus") @XStreamAlias("OrderStatus")
@JacksonXmlProperty(localName = "OrderStatus")
private String orderStatus; private String orderStatus;
/** /**
* 商品ID. * 商品ID.
*/ */
@XStreamAlias("ProductId") @XStreamAlias("ProductId")
@JacksonXmlProperty(localName = "ProductId")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String productId; private String productId;
@ -509,6 +594,7 @@ public class WxMpXmlMessage implements Serializable {
* 商品SKU信息. * 商品SKU信息.
*/ */
@XStreamAlias("SkuInfo") @XStreamAlias("SkuInfo")
@JacksonXmlProperty(localName = "SkuInfo")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String skuInfo; private String skuInfo;
@ -520,6 +606,7 @@ public class WxMpXmlMessage implements Serializable {
* 目前为"公众账号原始ID" * 目前为"公众账号原始ID"
*/ */
@XStreamAlias("DeviceType") @XStreamAlias("DeviceType")
@JacksonXmlProperty(localName = "DeviceType")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String deviceType; private String deviceType;
@ -528,6 +615,7 @@ public class WxMpXmlMessage implements Serializable {
* 第三方提供 * 第三方提供
*/ */
@XStreamAlias("DeviceID") @XStreamAlias("DeviceID")
@JacksonXmlProperty(localName = "DeviceID")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String deviceId; private String deviceId;
@ -536,6 +624,7 @@ public class WxMpXmlMessage implements Serializable {
* 因此响应中该字段第三方需要原封不变的带回 * 因此响应中该字段第三方需要原封不变的带回
*/ */
@XStreamAlias("SessionID") @XStreamAlias("SessionID")
@JacksonXmlProperty(localName = "SessionID")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String sessionId; private String sessionId;
@ -543,10 +632,12 @@ public class WxMpXmlMessage implements Serializable {
* 微信用户账号的OpenID. * 微信用户账号的OpenID.
*/ */
@XStreamAlias("OpenID") @XStreamAlias("OpenID")
@JacksonXmlProperty(localName = "OpenID")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String openId; private String openId;
@XStreamAlias("HardWare") @XStreamAlias("HardWare")
@JacksonXmlProperty(localName = "HardWare")
private HardWare hardWare = new HardWare(); private HardWare hardWare = new HardWare();
/** /**
@ -556,6 +647,7 @@ public class WxMpXmlMessage implements Serializable {
* 2订阅设备状态 * 2订阅设备状态
*/ */
@XStreamAlias("OpType") @XStreamAlias("OpType")
@JacksonXmlProperty(localName = "OpType")
private Integer opType; private Integer opType;
/** /**
@ -563,6 +655,7 @@ public class WxMpXmlMessage implements Serializable {
* 0未连接1已连接 * 0未连接1已连接
*/ */
@XStreamAlias("DeviceStatus") @XStreamAlias("DeviceStatus")
@JacksonXmlProperty(localName = "DeviceStatus")
private Integer deviceStatus; private Integer deviceStatus;
/////////////////////////////////////// ///////////////////////////////////////
@ -572,12 +665,14 @@ public class WxMpXmlMessage implements Serializable {
* 审核成功时的时间整形时间戳 * 审核成功时的时间整形时间戳
*/ */
@XStreamAlias("SuccTime") @XStreamAlias("SuccTime")
@JacksonXmlProperty(localName = "SuccTime")
private Long successTime; private Long successTime;
/** /**
* 审核失败的原因 * 审核失败的原因
*/ */
@XStreamAlias("Reason") @XStreamAlias("Reason")
@JacksonXmlProperty(localName = "Reason")
private String reason; private String reason;
/////////////////////////////////////// ///////////////////////////////////////
@ -587,65 +682,76 @@ public class WxMpXmlMessage implements Serializable {
* 商品编码标准 * 商品编码标准
*/ */
@XStreamAlias("KeyStandard") @XStreamAlias("KeyStandard")
@JacksonXmlProperty(localName = "KeyStandard")
private String keyStandard; private String keyStandard;
/** /**
* 商品编码内容 * 商品编码内容
*/ */
@XStreamAlias("KeyStr") @XStreamAlias("KeyStr")
@JacksonXmlProperty(localName = "KeyStr")
private String keyStr; private String keyStr;
/** /**
* 用户在微信内设置的国家 * 用户在微信内设置的国家
*/ */
@XStreamAlias("Country") @XStreamAlias("Country")
@JacksonXmlProperty(localName = "Country")
private String country; private String country;
/** /**
* 用户在微信内设置的省份 * 用户在微信内设置的省份
*/ */
@XStreamAlias("Province") @XStreamAlias("Province")
@JacksonXmlProperty(localName = "Province")
private String province; private String province;
/** /**
* 用户在微信内设置的城市 * 用户在微信内设置的城市
*/ */
@XStreamAlias("City") @XStreamAlias("City")
@JacksonXmlProperty(localName = "City")
private String city; private String city;
/** /**
* 用户的性别1为男性2为女性0代表未知 * 用户的性别1为男性2为女性0代表未知
*/ */
@XStreamAlias("Sex") @XStreamAlias("Sex")
@JacksonXmlProperty(localName = "Sex")
private String sex; private String sex;
/** /**
* 打开商品主页的场景1为扫码2为其他打开场景如会话收藏或朋友圈 * 打开商品主页的场景1为扫码2为其他打开场景如会话收藏或朋友圈
*/ */
@XStreamAlias("Scene") @XStreamAlias("Scene")
@JacksonXmlProperty(localName = "Scene")
private String scene; private String scene;
/** /**
* 调用获取商品二维码接口时传入的extinfo为标识参数 * 调用获取商品二维码接口时传入的extinfo为标识参数
*/ */
@XStreamAlias("ExtInfo") @XStreamAlias("ExtInfo")
@JacksonXmlProperty(localName = "ExtInfo")
private String extInfo; private String extInfo;
/** /**
* 用户的实时地理位置信息目前只精确到省一级可在国家统计局网站查到对应明细 http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201504/t20150415_712722.html * 用户的实时地理位置信息目前只精确到省一级可在国家统计局网站查到对应明细 http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201504/t20150415_712722.html
*/ */
@XStreamAlias("RegionCode") @XStreamAlias("RegionCode")
@JacksonXmlProperty(localName = "RegionCode")
private String regionCode; private String regionCode;
/** /**
* 审核未通过的原因. * 审核未通过的原因.
*/ */
@XStreamAlias("ReasonMsg") @XStreamAlias("ReasonMsg")
@JacksonXmlProperty(localName = "ReasonMsg")
private String reasonMsg; private String reasonMsg;
/** /**
* 给用户发菜单消息类型的客服消息后用户所点击的菜单ID. * 给用户发菜单消息类型的客服消息后用户所点击的菜单ID.
*/ */
@XStreamAlias("bizmsgmenuid") @XStreamAlias("bizmsgmenuid")
@JacksonXmlProperty(localName = "bizmsgmenuid")
private String bizMsgMenuId; private String bizMsgMenuId;
/*------------------ 电子发票 ------------------*/ /*------------------ 电子发票 ------------------*/
@ -653,36 +759,42 @@ public class WxMpXmlMessage implements Serializable {
* 授权成功的订单号与失败订单号两者必显示其一 * 授权成功的订单号与失败订单号两者必显示其一
*/ */
@XStreamAlias("SuccOrderId") @XStreamAlias("SuccOrderId")
@JacksonXmlProperty(localName = "SuccOrderId")
private String succOrderId; private String succOrderId;
/** /**
* 授权失败的订单号与成功订单号两者必显示其一 * 授权失败的订单号与成功订单号两者必显示其一
*/ */
@XStreamAlias("FailOrderId") @XStreamAlias("FailOrderId")
@JacksonXmlProperty(localName = "FailOrderId")
private String failOrderId; private String failOrderId;
/** /**
* 获取授权页链接的AppId * 获取授权页链接的AppId
*/ */
@XStreamAlias("AuthorizeAppId") @XStreamAlias("AuthorizeAppId")
@JacksonXmlProperty(localName = "AuthorizeAppId")
private String authorizeAppId; private String authorizeAppId;
/** /**
* 授权来源web公众号开票appapp开票wxa小程序开票waph5开票 * 授权来源web公众号开票appapp开票wxa小程序开票waph5开票
*/ */
@XStreamAlias("source") @XStreamAlias("source")
@JacksonXmlProperty(localName = "source")
private String source; private String source;
/** /**
* 发票请求流水号唯一识别发票请求的流水号 * 发票请求流水号唯一识别发票请求的流水号
*/ */
@XStreamAlias("fpqqlsh") @XStreamAlias("fpqqlsh")
@JacksonXmlProperty(localName = "fpqqlsh")
private String fpqqlsh; private String fpqqlsh;
/** /**
* 纳税人识别码 * 纳税人识别码
*/ */
@XStreamAlias("nsrsbh") @XStreamAlias("nsrsbh")
@JacksonXmlProperty(localName = "nsrsbh")
private String nsrsbh; private String nsrsbh;

View File

@ -1,5 +1,7 @@
package me.chanjar.weixin.mp.bean.message; package me.chanjar.weixin.mp.bean.message;
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.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamConverter; import com.thoughtworks.xstream.annotations.XStreamConverter;
import lombok.Data; import lombok.Data;
@ -11,23 +13,28 @@ import me.chanjar.weixin.mp.util.xml.XStreamTransformer;
import java.io.Serializable; import java.io.Serializable;
@XStreamAlias("xml")
@Data @Data
@XStreamAlias("xml")
@JacksonXmlRootElement(localName = "xml")
public abstract class WxMpXmlOutMessage implements Serializable { public abstract class WxMpXmlOutMessage implements Serializable {
private static final long serialVersionUID = -381382011286216263L; private static final long serialVersionUID = -381382011286216263L;
@XStreamAlias("ToUserName") @XStreamAlias("ToUserName")
@JacksonXmlProperty(localName = "ToUserName")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
protected String toUserName; protected String toUserName;
@XStreamAlias("FromUserName") @XStreamAlias("FromUserName")
@JacksonXmlProperty(localName = "FromUserName")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
protected String fromUserName; protected String fromUserName;
@XStreamAlias("CreateTime") @XStreamAlias("CreateTime")
@JacksonXmlProperty(localName = "CreateTime")
protected Long createTime; protected Long createTime;
@XStreamAlias("MsgType") @XStreamAlias("MsgType")
@JacksonXmlProperty(localName = "MsgType")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
protected String msgType; protected String msgType;