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

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