|
@@ -1,5 +1,11 @@ |
|
|
package me.chanjar.weixin.mp.bean.message; |
|
|
package me.chanjar.weixin.mp.bean.message; |
|
|
|
|
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
|
|
|
import java.io.InputStream; |
|
|
|
|
|
import java.io.Serializable; |
|
|
|
|
|
|
|
|
|
|
|
import org.apache.commons.io.IOUtils; |
|
|
|
|
|
|
|
|
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; |
|
@@ -9,15 +15,10 @@ import me.chanjar.weixin.common.util.xml.XStreamCDataConverter; |
|
|
import me.chanjar.weixin.mp.api.WxMpConfigStorage; |
|
|
import me.chanjar.weixin.mp.api.WxMpConfigStorage; |
|
|
import me.chanjar.weixin.mp.util.crypto.WxMpCryptUtil; |
|
|
import me.chanjar.weixin.mp.util.crypto.WxMpCryptUtil; |
|
|
import me.chanjar.weixin.mp.util.xml.XStreamTransformer; |
|
|
import me.chanjar.weixin.mp.util.xml.XStreamTransformer; |
|
|
import org.apache.commons.io.IOUtils; |
|
|
|
|
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
|
|
|
import java.io.InputStream; |
|
|
|
|
|
import java.io.Serializable; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* <pre> |
|
|
* <pre> |
|
|
* 微信推送过来的消息,xml格式 |
|
|
|
|
|
|
|
|
* 微信推送过来的消息,xml格式. |
|
|
* 部分未注释的字段的解释请查阅相关微信开发文档: |
|
|
* 部分未注释的字段的解释请查阅相关微信开发文档: |
|
|
* <a href="http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453&token=&lang=zh_CN">接收普通消息</a> |
|
|
* <a href="http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453&token=&lang=zh_CN">接收普通消息</a> |
|
|
* <a href="http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140454&token=&lang=zh_CN">接收事件推送</a> |
|
|
* <a href="http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140454&token=&lang=zh_CN">接收事件推送</a> |
|
@@ -129,28 +130,29 @@ public class WxMpXmlMessage implements Serializable { |
|
|
// 群发消息返回的结果 |
|
|
// 群发消息返回的结果 |
|
|
/////////////////////////////////////// |
|
|
/////////////////////////////////////// |
|
|
/** |
|
|
/** |
|
|
* 群发的结果 |
|
|
|
|
|
|
|
|
* 群发的结果. |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("Status") |
|
|
@XStreamAlias("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") |
|
|
private Integer totalCount; |
|
|
private Integer totalCount; |
|
|
/** |
|
|
/** |
|
|
* 过滤(过滤是指特定地区、性别的过滤、用户设置拒收的过滤,用户接收已超4条的过滤)后,准备发送的粉丝数,原则上,filterCount = sentCount + errorCount |
|
|
|
|
|
|
|
|
* 过滤(过滤是指特定地区、性别的过滤、用户设置拒收的过滤,用户接收已超4条的过滤)后,准备发送的粉丝数. |
|
|
|
|
|
* 原则上,filterCount = sentCount + errorCount |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("FilterCount") |
|
|
@XStreamAlias("FilterCount") |
|
|
private Integer filterCount; |
|
|
private Integer filterCount; |
|
|
/** |
|
|
/** |
|
|
* 发送成功的粉丝数 |
|
|
|
|
|
|
|
|
* 发送成功的粉丝数. |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("SentCount") |
|
|
@XStreamAlias("SentCount") |
|
|
private Integer sentCount; |
|
|
private Integer sentCount; |
|
|
/** |
|
|
/** |
|
|
* 发送失败的粉丝数 |
|
|
|
|
|
|
|
|
* 发送失败的粉丝数. |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("ErrorCount") |
|
|
@XStreamAlias("ErrorCount") |
|
|
private Integer errorCount; |
|
|
private Integer errorCount; |
|
@@ -159,17 +161,17 @@ public class WxMpXmlMessage implements Serializable { |
|
|
// 客服会话管理相关事件推送 |
|
|
// 客服会话管理相关事件推送 |
|
|
/////////////////////////////////////// |
|
|
/////////////////////////////////////// |
|
|
/** |
|
|
/** |
|
|
* 创建或关闭客服会话时的客服帐号 |
|
|
|
|
|
|
|
|
* 创建或关闭客服会话时的客服帐号. |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("KfAccount") |
|
|
@XStreamAlias("KfAccount") |
|
|
private String kfAccount; |
|
|
private String kfAccount; |
|
|
/** |
|
|
/** |
|
|
* 转接客服会话时的转入客服帐号 |
|
|
|
|
|
|
|
|
* 转接客服会话时的转入客服帐号. |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("ToKfAccount") |
|
|
@XStreamAlias("ToKfAccount") |
|
|
private String toKfAccount; |
|
|
private String toKfAccount; |
|
|
/** |
|
|
/** |
|
|
* 转接客服会话时的转出客服帐号 |
|
|
|
|
|
|
|
|
* 转接客服会话时的转出客服帐号. |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("FromKfAccount") |
|
|
@XStreamAlias("FromKfAccount") |
|
|
private String fromKfAccount; |
|
|
private String fromKfAccount; |
|
@@ -177,6 +179,7 @@ public class WxMpXmlMessage implements Serializable { |
|
|
/////////////////////////////////////// |
|
|
/////////////////////////////////////// |
|
|
// 卡券相关事件推送 |
|
|
// 卡券相关事件推送 |
|
|
/////////////////////////////////////// |
|
|
/////////////////////////////////////// |
|
|
|
|
|
|
|
|
@XStreamAlias("CardId") |
|
|
@XStreamAlias("CardId") |
|
|
@XStreamConverter(value = XStreamCDataConverter.class) |
|
|
@XStreamConverter(value = XStreamCDataConverter.class) |
|
|
private String cardId; |
|
|
private String cardId; |
|
@@ -185,8 +188,11 @@ public class WxMpXmlMessage implements Serializable { |
|
|
@XStreamConverter(value = XStreamCDataConverter.class) |
|
|
@XStreamConverter(value = XStreamCDataConverter.class) |
|
|
private String friendUserName; |
|
|
private String friendUserName; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 是否为转赠,1代表是,0代表否. |
|
|
|
|
|
*/ |
|
|
@XStreamAlias("IsGiveByFriend") |
|
|
@XStreamAlias("IsGiveByFriend") |
|
|
private Integer isGiveByFriend; // 是否为转赠,1代表是,0代表否 |
|
|
|
|
|
|
|
|
private Integer isGiveByFriend; |
|
|
|
|
|
|
|
|
@XStreamAlias("UserCardCode") |
|
|
@XStreamAlias("UserCardCode") |
|
|
@XStreamConverter(value = XStreamCDataConverter.class) |
|
|
@XStreamConverter(value = XStreamCDataConverter.class) |
|
@@ -200,14 +206,14 @@ public class WxMpXmlMessage implements Serializable { |
|
|
private Integer outerId; |
|
|
private Integer outerId; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 用户删除会员卡后可重新找回,当用户本次操作为找回时,该值为1,否则为0 |
|
|
|
|
|
|
|
|
* 用户删除会员卡后可重新找回,当用户本次操作为找回时,该值为1,否则为0. |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("IsRestoreMemberCard") |
|
|
@XStreamAlias("IsRestoreMemberCard") |
|
|
private String isRestoreMemberCard; |
|
|
private String isRestoreMemberCard; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* <pre> |
|
|
* <pre> |
|
|
* 领取场景值,用于领取渠道数据统计。可在生成二维码接口及添加Addcard接口中自定义该字段的字符串值。 |
|
|
|
|
|
|
|
|
* 领取场景值,用于领取渠道数据统计。可在生成二维码接口及添加Addcard接口中自定义该字段的字符串值. |
|
|
* 核销卡券时:开发者发起核销时传入的自定义参数,用于进行核销渠道统计 |
|
|
* 核销卡券时:开发者发起核销时传入的自定义参数,用于进行核销渠道统计 |
|
|
* 另外: |
|
|
* 另外: |
|
|
* 官网文档中,微信卡券>>卡券事件推送>>2.7 进入会员卡事件推送 user_view_card |
|
|
* 官网文档中,微信卡券>>卡券事件推送>>2.7 进入会员卡事件推送 user_view_card |
|
@@ -218,43 +224,45 @@ public class WxMpXmlMessage implements Serializable { |
|
|
private String outerStr; |
|
|
private String outerStr; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 是否转赠退回,0代表不是,1代表是。 |
|
|
|
|
|
|
|
|
* 是否转赠退回,0代表不是,1代表是. |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("IsReturnBack") |
|
|
@XStreamAlias("IsReturnBack") |
|
|
private String isReturnBack; |
|
|
private String isReturnBack; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 是否是群转赠,0代表不是,1代表是。 |
|
|
|
|
|
|
|
|
* 是否是群转赠,0代表不是,1代表是. |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("IsChatRoom") |
|
|
@XStreamAlias("IsChatRoom") |
|
|
private String isChatRoom; |
|
|
private String isChatRoom; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 核销来源。支持开发者统计API核销(FROM_API)、公众平台核销(FROM_MP)、卡券商户助手核销(FROM_MOBILE_HELPER)(核销员微信号) |
|
|
|
|
|
|
|
|
* 核销来源. |
|
|
|
|
|
* 支持开发者统计API核销(FROM_API)、公众平台核销(FROM_MP)、卡券商户助手核销(FROM_MOBILE_HELPER)(核销员微信号) |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("ConsumeSource") |
|
|
@XStreamAlias("ConsumeSource") |
|
|
private String consumeSource; |
|
|
private String consumeSource; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 门店名称,当前卡券核销的门店名称(只有通过自助核销和买单核销时才会出现该字段) |
|
|
|
|
|
|
|
|
* 门店名称. |
|
|
|
|
|
* 当前卡券核销的门店名称(只有通过自助核销和买单核销时才会出现该字段) |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("LocationName") |
|
|
@XStreamAlias("LocationName") |
|
|
private String locationName; |
|
|
private String locationName; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 核销该卡券核销员的openid(只有通过卡券商户助手核销时才会出现) |
|
|
|
|
|
|
|
|
* 核销该卡券核销员的openid(只有通过卡券商户助手核销时才会出现). |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("StaffOpenId") |
|
|
@XStreamAlias("StaffOpenId") |
|
|
private String staffOpenId; |
|
|
private String staffOpenId; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 自助核销时,用户输入的验证码 |
|
|
|
|
|
|
|
|
* 自助核销时,用户输入的验证码. |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("VerifyCode") |
|
|
@XStreamAlias("VerifyCode") |
|
|
private String verifyCode; |
|
|
private String verifyCode; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 自助核销时,用户输入的备注金额 |
|
|
|
|
|
|
|
|
* 自助核销时,用户输入的备注金额. |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("RemarkAmount") |
|
|
@XStreamAlias("RemarkAmount") |
|
|
private String remarkAmount; |
|
|
private String remarkAmount; |
|
@@ -262,7 +270,7 @@ public class WxMpXmlMessage implements Serializable { |
|
|
/** |
|
|
/** |
|
|
* <pre> |
|
|
* <pre> |
|
|
* 官网文档中,微信卡券>>卡券事件推送>>2.10 库存报警事件card_sku_remind |
|
|
* 官网文档中,微信卡券>>卡券事件推送>>2.10 库存报警事件card_sku_remind |
|
|
* Detail:报警详细信息 |
|
|
|
|
|
|
|
|
* Detail:报警详细信息. |
|
|
* </pre> |
|
|
* </pre> |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("Detail") |
|
|
@XStreamAlias("Detail") |
|
@@ -271,7 +279,7 @@ public class WxMpXmlMessage implements Serializable { |
|
|
/** |
|
|
/** |
|
|
* <pre> |
|
|
* <pre> |
|
|
* 官网文档中,微信卡券>>卡券事件推送>>2.9 会员卡内容更新事件 update_member_card |
|
|
* 官网文档中,微信卡券>>卡券事件推送>>2.9 会员卡内容更新事件 update_member_card |
|
|
* ModifyBonus:变动的积分值 |
|
|
|
|
|
|
|
|
* ModifyBonus:变动的积分值. |
|
|
* </pre> |
|
|
* </pre> |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("ModifyBonus") |
|
|
@XStreamAlias("ModifyBonus") |
|
@@ -280,7 +288,7 @@ public class WxMpXmlMessage implements Serializable { |
|
|
/** |
|
|
/** |
|
|
* <pre> |
|
|
* <pre> |
|
|
* 官网文档中,微信卡券>>卡券事件推送>>2.9 会员卡内容更新事件 update_member_card |
|
|
* 官网文档中,微信卡券>>卡券事件推送>>2.9 会员卡内容更新事件 update_member_card |
|
|
* ModifyBalance:变动的余额值 |
|
|
|
|
|
|
|
|
* ModifyBalance:变动的余额值. |
|
|
* </pre> |
|
|
* </pre> |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("ModifyBalance") |
|
|
@XStreamAlias("ModifyBalance") |
|
@@ -289,7 +297,7 @@ public class WxMpXmlMessage implements Serializable { |
|
|
/** |
|
|
/** |
|
|
* <pre> |
|
|
* <pre> |
|
|
* 官网文档中,微信卡券>>卡券事件推送>>2.6 买单事件推送 User_pay_from_pay_cell |
|
|
* 官网文档中,微信卡券>>卡券事件推送>>2.6 买单事件推送 User_pay_from_pay_cell |
|
|
* TransId:微信支付交易订单号(只有使用买单功能核销的卡券才会出现) |
|
|
|
|
|
|
|
|
* TransId:微信支付交易订单号(只有使用买单功能核销的卡券才会出现). |
|
|
* </pre> |
|
|
* </pre> |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("TransId") |
|
|
@XStreamAlias("TransId") |
|
@@ -335,29 +343,25 @@ public class WxMpXmlMessage implements Serializable { |
|
|
// 门店审核事件推送 |
|
|
// 门店审核事件推送 |
|
|
/////////////////////////////////////// |
|
|
/////////////////////////////////////// |
|
|
/** |
|
|
/** |
|
|
* UniqId |
|
|
|
|
|
* 商户自己内部ID,即字段中的sid |
|
|
|
|
|
|
|
|
* 商户自己内部ID,即字段中的sid. |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("UniqId") |
|
|
@XStreamAlias("UniqId") |
|
|
private String storeUniqId; |
|
|
private String storeUniqId; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* PoiId |
|
|
|
|
|
* 微信的门店ID,微信内门店唯一标示ID |
|
|
|
|
|
|
|
|
* 微信的门店ID,微信内门店唯一标示ID. |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("PoiId") |
|
|
@XStreamAlias("PoiId") |
|
|
private String poiId; |
|
|
private String poiId; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* Result |
|
|
|
|
|
* 审核结果,成功succ 或失败fail |
|
|
|
|
|
|
|
|
* 审核结果,成功succ 或失败fail. |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("Result") |
|
|
@XStreamAlias("Result") |
|
|
private String result; |
|
|
private String result; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* msg |
|
|
|
|
|
* 成功的通知信息,或审核失败的驳回理由 |
|
|
|
|
|
|
|
|
* 成功的通知信息,或审核失败的驳回理由. |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("msg") |
|
|
@XStreamAlias("msg") |
|
|
private String msg; |
|
|
private String msg; |
|
@@ -366,46 +370,74 @@ public class WxMpXmlMessage implements Serializable { |
|
|
// 微信认证事件推送 |
|
|
// 微信认证事件推送 |
|
|
/////////////////////////////////////// |
|
|
/////////////////////////////////////// |
|
|
/** |
|
|
/** |
|
|
* ExpiredTime |
|
|
|
|
|
* 资质认证成功/名称认证成功: 有效期 (整形),指的是时间戳,将于该时间戳认证过期 |
|
|
|
|
|
|
|
|
* 资质认证成功/名称认证成功: 有效期 (整形),指的是时间戳,将于该时间戳认证过期. |
|
|
* 年审通知: 有效期 (整形),指的是时间戳,将于该时间戳认证过期,需尽快年审 |
|
|
* 年审通知: 有效期 (整形),指的是时间戳,将于该时间戳认证过期,需尽快年审 |
|
|
* 认证过期失效通知: 有效期 (整形),指的是时间戳,表示已于该时间戳认证过期,需要重新发起微信认证 |
|
|
* 认证过期失效通知: 有效期 (整形),指的是时间戳,表示已于该时间戳认证过期,需要重新发起微信认证 |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("ExpiredTime") |
|
|
@XStreamAlias("ExpiredTime") |
|
|
private Long expiredTime; |
|
|
private Long expiredTime; |
|
|
/** |
|
|
/** |
|
|
* FailTime |
|
|
|
|
|
* 失败发生时间 (整形),时间戳 |
|
|
|
|
|
|
|
|
* 失败发生时间 (整形),时间戳. |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("FailTime") |
|
|
@XStreamAlias("FailTime") |
|
|
private Long failTime; |
|
|
private Long failTime; |
|
|
/** |
|
|
/** |
|
|
* FailReason |
|
|
|
|
|
* 认证失败的原因 |
|
|
|
|
|
|
|
|
* 认证失败的原因. |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("FailReason") |
|
|
@XStreamAlias("FailReason") |
|
|
private String failReason; |
|
|
private String failReason; |
|
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////// |
|
|
|
|
|
// 微信小店 6.1订单付款通知 |
|
|
|
|
|
/////////////////////////////////////// |
|
|
|
|
|
/** |
|
|
|
|
|
* 订单ID. |
|
|
|
|
|
*/ |
|
|
|
|
|
@XStreamAlias("OrderId") |
|
|
|
|
|
@XStreamConverter(value = XStreamCDataConverter.class) |
|
|
|
|
|
private String orderId; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 订单状态. |
|
|
|
|
|
*/ |
|
|
|
|
|
@XStreamAlias("OrderStatus") |
|
|
|
|
|
private String orderStatus; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 商品ID. |
|
|
|
|
|
*/ |
|
|
|
|
|
@XStreamAlias("ProductId") |
|
|
|
|
|
@XStreamConverter(value = XStreamCDataConverter.class) |
|
|
|
|
|
private String productId; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 商品SKU信息. |
|
|
|
|
|
*/ |
|
|
|
|
|
@XStreamAlias("SkuInfo") |
|
|
|
|
|
@XStreamConverter(value = XStreamCDataConverter.class) |
|
|
|
|
|
private String skuInfo; |
|
|
|
|
|
|
|
|
/////////////////////////////////////// |
|
|
/////////////////////////////////////// |
|
|
// 微信硬件平台相关事件推送 |
|
|
// 微信硬件平台相关事件推送 |
|
|
/////////////////////////////////////// |
|
|
/////////////////////////////////////// |
|
|
/** |
|
|
/** |
|
|
* 设备类型,目前为"公众账号原始ID" |
|
|
|
|
|
|
|
|
* 设备类型. |
|
|
|
|
|
* 目前为"公众账号原始ID" |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("DeviceType") |
|
|
@XStreamAlias("DeviceType") |
|
|
@XStreamConverter(value = XStreamCDataConverter.class) |
|
|
@XStreamConverter(value = XStreamCDataConverter.class) |
|
|
private String deviceType; |
|
|
private String deviceType; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 设备ID,第三方提供 |
|
|
|
|
|
|
|
|
* 设备ID. |
|
|
|
|
|
* 第三方提供 |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("DeviceID") |
|
|
@XStreamAlias("DeviceID") |
|
|
@XStreamConverter(value = XStreamCDataConverter.class) |
|
|
@XStreamConverter(value = XStreamCDataConverter.class) |
|
|
private String deviceId; |
|
|
private String deviceId; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 微信用户账号的OpenID |
|
|
|
|
|
|
|
|
* 微信用户账号的OpenID. |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("OpenID") |
|
|
@XStreamAlias("OpenID") |
|
|
@XStreamConverter(value = XStreamCDataConverter.class) |
|
|
@XStreamConverter(value = XStreamCDataConverter.class) |
|
@@ -415,13 +447,17 @@ public class WxMpXmlMessage implements Serializable { |
|
|
private HardWare hardWare = new HardWare(); |
|
|
private HardWare hardWare = new HardWare(); |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 请求类型:0:退订设备状态;1:心跳;(心跳的处理方式跟订阅一样)2:订阅设备状态 |
|
|
|
|
|
|
|
|
* 请求类型. |
|
|
|
|
|
* 0:退订设备状态; |
|
|
|
|
|
* 1:心跳;(心跳的处理方式跟订阅一样) |
|
|
|
|
|
* 2:订阅设备状态 |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("OpType") |
|
|
@XStreamAlias("OpType") |
|
|
private Integer opType; |
|
|
private Integer opType; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 设备状态:0:未连接;1:已连接 |
|
|
|
|
|
|
|
|
* 设备状态. |
|
|
|
|
|
* 0:未连接;1:已连接 |
|
|
*/ |
|
|
*/ |
|
|
@XStreamAlias("DeviceStatus") |
|
|
@XStreamAlias("DeviceStatus") |
|
|
private Integer deviceStatus; |
|
|
private Integer deviceStatus; |
|
@@ -437,7 +473,7 @@ public class WxMpXmlMessage implements Serializable { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 从加密字符串转换 |
|
|
|
|
|
|
|
|
* 从加密字符串转换. |
|
|
* |
|
|
* |
|
|
* @param encryptedXml 密文 |
|
|
* @param encryptedXml 密文 |
|
|
* @param wxMpConfigStorage 配置存储器对象 |
|
|
* @param wxMpConfigStorage 配置存储器对象 |
|
@@ -445,21 +481,17 @@ public class WxMpXmlMessage implements Serializable { |
|
|
* @param nonce 随机串 |
|
|
* @param nonce 随机串 |
|
|
* @param msgSignature 签名串 |
|
|
* @param msgSignature 签名串 |
|
|
*/ |
|
|
*/ |
|
|
public static WxMpXmlMessage fromEncryptedXml(String encryptedXml, |
|
|
|
|
|
WxMpConfigStorage wxMpConfigStorage, String timestamp, String nonce, |
|
|
|
|
|
String msgSignature) { |
|
|
|
|
|
|
|
|
public static WxMpXmlMessage fromEncryptedXml(String encryptedXml, WxMpConfigStorage wxMpConfigStorage, String timestamp, |
|
|
|
|
|
String nonce, String msgSignature) { |
|
|
WxMpCryptUtil cryptUtil = new WxMpCryptUtil(wxMpConfigStorage); |
|
|
WxMpCryptUtil cryptUtil = new WxMpCryptUtil(wxMpConfigStorage); |
|
|
String plainText = cryptUtil.decrypt(msgSignature, timestamp, nonce, |
|
|
|
|
|
encryptedXml); |
|
|
|
|
|
|
|
|
String plainText = cryptUtil.decrypt(msgSignature, timestamp, nonce, encryptedXml); |
|
|
return fromXml(plainText); |
|
|
return fromXml(plainText); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public static WxMpXmlMessage fromEncryptedXml(InputStream is, |
|
|
|
|
|
WxMpConfigStorage wxMpConfigStorage, String timestamp, String nonce, |
|
|
|
|
|
String msgSignature) { |
|
|
|
|
|
|
|
|
public static WxMpXmlMessage fromEncryptedXml(InputStream is, WxMpConfigStorage wxMpConfigStorage, String timestamp, |
|
|
|
|
|
String nonce, String msgSignature) { |
|
|
try { |
|
|
try { |
|
|
return fromEncryptedXml(IOUtils.toString(is, "UTF-8"), wxMpConfigStorage, |
|
|
|
|
|
timestamp, nonce, msgSignature); |
|
|
|
|
|
|
|
|
return fromEncryptedXml(IOUtils.toString(is, "UTF-8"), wxMpConfigStorage, timestamp, nonce, msgSignature); |
|
|
} catch (IOException e) { |
|
|
} catch (IOException e) { |
|
|
throw new RuntimeException(e); |
|
|
throw new RuntimeException(e); |
|
|
} |
|
|
} |
|
@@ -491,7 +523,6 @@ public class WxMpXmlMessage implements Serializable { |
|
|
* {@link WxConsts.XmlMsgType#NEWS} |
|
|
* {@link WxConsts.XmlMsgType#NEWS} |
|
|
* {@link WxConsts.XmlMsgType#MUSIC} |
|
|
* {@link WxConsts.XmlMsgType#MUSIC} |
|
|
* </pre> |
|
|
* </pre> |
|
|
* |
|
|
|
|
|
*/ |
|
|
*/ |
|
|
public void setMsgType(String msgType) { |
|
|
public void setMsgType(String msgType) { |
|
|
this.msgType = msgType; |
|
|
this.msgType = msgType; |
|
|