微信支付修复红包查询结果类解析问题

This commit is contained in:
Binary Wang 2018-01-24 14:21:03 +08:00
parent 6b408eabf2
commit 8db4935428
2 changed files with 187 additions and 135 deletions

View File

@ -5,15 +5,11 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/** /**
* <pre> * <pre>
* 注释中各行对应含义
* 字段名
* 字段
* 必填
* 示例值
* 类型
* 说明
* Created by Binary Wang on 2016-11-28. * Created by Binary Wang on 2016-11-28.
* </pre> * </pre>
* *
@ -24,15 +20,16 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor @NoArgsConstructor
@XStreamAlias("xml") @XStreamAlias("xml")
public class WxPayRedpackQueryResult extends BaseWxPayResult { public class WxPayRedpackQueryResult extends BaseWxPayResult {
private static final long serialVersionUID = -3849864122189552906L;
/** /**
* <pre> * <pre>
* 商户订单号 * 字段含义商户订单号.
* mch_billno * 字段名mch_billno
* * 否必填
* 10000098201411111234567890 * 示例值10000098201411111234567890
* String(28) * 类型String(28)
* 商户使用查询API填写的商户单号的原路返回 * 字段说明商户使用查询API填写的商户单号的原路返回
* </pre> * </pre>
*/ */
@XStreamAlias("mch_billno") @XStreamAlias("mch_billno")
@ -40,12 +37,12 @@ public class WxPayRedpackQueryResult extends BaseWxPayResult {
/** /**
* <pre> * <pre>
* 红包单号 * 字段含义红包单号.
* detail_id * 字段名detail_id
* * 否必填
* 1000000000201503283103439304 * 示例值1000000000201503283103439304
* String(32) * 类型String(32)
* 使用API发放现金红包时返回的红包单号 * 字段说明使用API发放现金红包时返回的红包单号
* </pre> * </pre>
*/ */
@XStreamAlias("detail_id") @XStreamAlias("detail_id")
@ -53,12 +50,12 @@ public class WxPayRedpackQueryResult extends BaseWxPayResult {
/** /**
* <pre> * <pre>
* 红包状态 * 字段含义红包状态.
* status * 字段名status
* * 否必填
* RECEIVED * 示例值RECEIVED
* string(16) * 类型string(16)
* SENDING:发放中 * 字段说明SENDING:发放中
* SENT:已发放待领取 * SENT:已发放待领取
* FAILED发放失败 * FAILED发放失败
* RECEIVED:已领取 * RECEIVED:已领取
@ -71,12 +68,12 @@ public class WxPayRedpackQueryResult extends BaseWxPayResult {
/** /**
* <pre> * <pre>
* 发放类型 * 字段含义发放类型.
* send_type * 字段名send_type
* * 否必填
* API * 示例值API
* String(32) * 类型String(32)
* API:通过API接口发放 * 字段说明API:通过API接口发放
* UPLOAD:通过上传文件方式发放 * UPLOAD:通过上传文件方式发放
* ACTIVITY:通过活动方式发放 * ACTIVITY:通过活动方式发放
* </pre> * </pre>
@ -86,12 +83,12 @@ public class WxPayRedpackQueryResult extends BaseWxPayResult {
/** /**
* <pre> * <pre>
* 红包类型 * 字段含义红包类型.
* hb_type * 字段名hb_type
* * 否必填
* GROUP * 示例值GROUP
* String(32) * 类型String(32)
* GROUP:裂变红包 * 字段说明GROUP:裂变红包
* NORMAL:普通红包 * NORMAL:普通红包
* </pre> * </pre>
*/ */
@ -100,12 +97,12 @@ public class WxPayRedpackQueryResult extends BaseWxPayResult {
/** /**
* <pre> * <pre>
* 红包个数 * 字段含义红包个数.
* total_num * 字段名total_num
* * 否必填
* 1 * 示例值1
* int * 类型int
* 红包个数 * 字段说明红包个数
* </pre> * </pre>
*/ */
@XStreamAlias("total_num") @XStreamAlias("total_num")
@ -113,12 +110,12 @@ public class WxPayRedpackQueryResult extends BaseWxPayResult {
/** /**
* <pre> * <pre>
* 红包金额 * 字段含义红包金额.
* total_amount * 字段名total_amount
* * 否必填
* 5000 * 示例值5000
* int * 类型int
* 红包总金额单位分 * 字段说明红包总金额单位分
* </pre> * </pre>
*/ */
@XStreamAlias("total_amount") @XStreamAlias("total_amount")
@ -126,12 +123,12 @@ public class WxPayRedpackQueryResult extends BaseWxPayResult {
/** /**
* <pre> * <pre>
* 失败原因 * 字段含义失败原因.
* reason * 字段名reason
* * 是否必填
* 余额不足 * 示例值余额不足
* String(32) * 类型String(32)
* 发送失败原因 * 字段说明发送失败原因
* </pre> * </pre>
*/ */
@XStreamAlias("reason") @XStreamAlias("reason")
@ -139,12 +136,12 @@ public class WxPayRedpackQueryResult extends BaseWxPayResult {
/** /**
* <pre> * <pre>
* 红包发送时间 * 字段含义红包发送时间.
* send_time * 字段名send_time
* * 否必填
* 2015-04-21 20:00:00 * 示例值2015-04-21 20:00:00
* String(32) * 类型String(32)
* 红包的发送时间 * 字段说明红包的发送时间
* </pre> * </pre>
*/ */
@XStreamAlias("send_time") @XStreamAlias("send_time")
@ -152,12 +149,12 @@ public class WxPayRedpackQueryResult extends BaseWxPayResult {
/** /**
* <pre> * <pre>
* 红包退款时间 * 字段含义红包退款时间.
* refund_time * 字段名 refund_time
* * 是否必填
* 2015-04-21 23:03:00 * 示例值2015-04-21 23:03:00
* String(32) * 类型String(32)
* 红包的退款时间如果其未领取的退款 * 字段说明红包的退款时间如果其未领取的退款
* </pre> * </pre>
*/ */
@XStreamAlias("refund_time") @XStreamAlias("refund_time")
@ -165,12 +162,12 @@ public class WxPayRedpackQueryResult extends BaseWxPayResult {
/** /**
* <pre> * <pre>
* 红包退款金额 * 字段含义红包退款金额.
* refund_amount * 字段名refund_amount
* * 是否必填
* 8000 * 示例值8000
* Int * 类型Int
* 红包退款金额 * 字段说明红包退款金额
* </pre> * </pre>
*/ */
@XStreamAlias("refund_amount") @XStreamAlias("refund_amount")
@ -178,12 +175,12 @@ public class WxPayRedpackQueryResult extends BaseWxPayResult {
/** /**
* <pre> * <pre>
* 祝福语 * 字段含义祝福语.
* wishing * 字段名wishing
* * 是否必填
* 新年快乐 * 示例值新年快乐
* String(128) * 类型String(128)
* 祝福语 * 字段说明祝福语
* </pre> * </pre>
*/ */
@XStreamAlias("wishing") @XStreamAlias("wishing")
@ -191,12 +188,12 @@ public class WxPayRedpackQueryResult extends BaseWxPayResult {
/** /**
* <pre> * <pre>
* 活动描述 * 字段含义活动描述.
* remark * 字段名remark
* * 是否必填
* 新年红包 * 示例值新年红包
* String(256) * 类型String(256)
* 活动描述低版本微信可见 * 字段说明活动描述低版本微信可见
* </pre> * </pre>
*/ */
@XStreamAlias("remark") @XStreamAlias("remark")
@ -204,12 +201,12 @@ public class WxPayRedpackQueryResult extends BaseWxPayResult {
/** /**
* <pre> * <pre>
* 活动名称 * 字段含义活动名称.
* act_name * 字段名act_name
* * 是否必填
* 新年红包 * 示例值新年红包
* String(32) * 类型String(32)
* 发红包的活动名称 * 字段说明发红包的活动名称
* </pre> * </pre>
*/ */
@XStreamAlias("act_name") @XStreamAlias("act_name")
@ -217,53 +214,57 @@ public class WxPayRedpackQueryResult extends BaseWxPayResult {
/** /**
* <pre> * <pre>
* 裂变红包领取列表 * 字段含义裂变红包领取列表.
* hblist * 字段名redpackList
* * 是否必填
* * 字段说明 裂变红包的领取列表
*
* 裂变红包的领取列表
* </pre> * </pre>
*/ */
@XStreamAlias("hblist") @XStreamAlias("redpackList")
private String hblist; private List<RedpackInfo> redpackList;
/** @Data
* <pre> @XStreamAlias("hbinfo")
* 领取红包的Openid public static class RedpackInfo implements Serializable {
* openid private static final long serialVersionUID = 7829773321457772100L;
* /**
* ohO4GtzOAAYMp2yapORH3dQB3W18 * <pre>
* String(32) * 字段含义领取红包的Openid.
* 领取红包的openid * 字段名 openid
* </pre> * 是否必填
*/ * 示例值ohO4GtzOAAYMp2yapORH3dQB3W18
@XStreamAlias("openid") * 类型String(32)
private String openid; * 字段说明领取红包的openid
* </pre>
*/
@XStreamAlias("openid")
private String openid;
/** /**
* <pre> * <pre>
* 金额 * 字段含义金额.
* amount * 字段名 amount
* * 是否必填
* 100 * 示例值100
* int * 类型int
* 领取金额 * 字段说明领取金额
* </pre> * </pre>
*/ */
@XStreamAlias("amount") @XStreamAlias("amount")
private Integer amount; private Integer amount;
/**
* <pre>
* 字段含义接收时间.
* 字段名 rcv_time
* 是否必填
* 示例值2015-04-21 20:00:00
* 类型String(32)
* 字段说明领取红包的时间
* </pre>
*/
@XStreamAlias("rcv_time")
private String receiveTime;
}
/**
* <pre>
* 接收时间
* rcv_time
*
* 2015-04-21 20:00:00
* String(32)
* 领取红包的时间
* </pre>
*/
@XStreamAlias("rcv_time")
private String receiveTime;
} }

View File

@ -0,0 +1,51 @@
package com.github.binarywang.wxpay.bean.result;
import org.testng.annotations.*;
import static org.assertj.core.api.Assertions.assertThat;
/**
* <pre>
*
* Created by Binary Wang on 2018/1/24.
* </pre>
*
* @author <a href="https://github.com/binarywang">Binary Wang</a>
*/
public class WxPayRedpackQueryResultTest {
@Test
public void testFromXML() {
String xmlString = "<xml>\n" +
"<return_code><![CDATA[SUCCESS]]></return_code>\n" +
"<return_msg><![CDATA[OK]]></return_msg>\n" +
"<result_code><![CDATA[SUCCESS]]></result_code>\n" +
"<err_code><![CDATA[SUCCESS]]></err_code>\n" +
"<err_code_des><![CDATA[OK]]></err_code_des>\n" +
"<mch_billno><![CDATA[1473919402201801230145075410]]></mch_billno>\n" +
"<mch_id><![CDATA[1497236182]]></mch_id>\n" +
"<detail_id><![CDATA[1000041701201801233000139830103]]></detail_id>\n" +
"<status><![CDATA[RECEIVED]]></status>\n" +
"<send_type><![CDATA[API]]></send_type>\n" +
"<hb_type><![CDATA[NORMAL]]></hb_type>\n" +
"<total_num>1</total_num>\n" +
"<total_amount>100</total_amount>\n" +
"<send_time><![CDATA[2018-01-23 13:45:08]]></send_time>\n" +
"<redpackList>\n" +
"<hbinfo>\n" +
"<openid><![CDATA[o3yHF0uHuckI3yE6lwWiFQBQdVDI]]></openid>\n" +
"<amount>100</amount>\n" +
"<rcv_time><![CDATA[2018-01-23 13:45:31]]></rcv_time>\n" +
"</hbinfo>\n" +
"</redpackList>\n" +
"</xml>";
WxPayRedpackQueryResult orderQueryResult = WxPayRedpackQueryResult.fromXML(xmlString, WxPayRedpackQueryResult.class);
System.out.println(orderQueryResult);
assertThat(orderQueryResult).isNotNull();
assertThat(orderQueryResult.getRedpackList()).isNotEmpty();
assertThat(orderQueryResult.getRedpackList().get(0).getAmount()).isEqualTo(100);
assertThat(orderQueryResult.getRedpackList().get(0).getOpenid()).isEqualTo("o3yHF0uHuckI3yE6lwWiFQBQdVDI");
assertThat(orderQueryResult.getRedpackList().get(0).getReceiveTime()).isEqualTo("2018-01-23 13:45:31");
}
}