1
0
mirror of synced 2025-12-17 21:18:07 +08:00

#389 微信支付查询退款返回结果中增加退款成功时间字段

This commit is contained in:
Binary Wang
2017-12-02 15:07:39 +08:00
parent 919a534962
commit f7dab9267e
2 changed files with 223 additions and 205 deletions

View File

@@ -14,13 +14,6 @@ import java.util.Arrays;
/** /**
* <pre> * <pre>
* 微信支付-申请退款请求参数 * 微信支付-申请退款请求参数
* 注释中各行每个字段描述对应如下:
* <li>字段名
* <li>变量名
* <li>是否必填
* <li>类型
* <li>示例值
* <li>描述
* Created by Binary Wang on 2016-10-08. * Created by Binary Wang on 2016-10-08.
* </pre> * </pre>
* *
@@ -34,53 +27,52 @@ import java.util.Arrays;
@XStreamAlias("xml") @XStreamAlias("xml")
public class WxPayRefundRequest extends WxPayBaseRequest { public class WxPayRefundRequest extends WxPayBaseRequest {
private static final String[] REFUND_ACCOUNT = new String[]{ private static final String[] REFUND_ACCOUNT = new String[]{
RefundAccountSource.RECHARGE_FUNDS, RefundAccountSource.RECHARGE_FUNDS, RefundAccountSource.UNSETTLED_FUNDS};
RefundAccountSource.UNSETTLED_FUNDS
};
/** /**
* <pre> * <pre>
* 设备号 * 字段名:设备号.
* device_info * 变量名:device_info
* 否 * 是否必填:
* String(32) * 类型:String(32)
* 13467007045764 * 示例值:13467007045764
* 终端设备号 * 描述:终端设备号
* </pre> * </pre>
*/ */
@XStreamAlias("device_info") @XStreamAlias("device_info")
private String deviceInfo; private String deviceInfo;
/** /**
* <pre> * <pre>
* 微信订单号 * 字段名:微信订单号.
* transaction_id * 变量名:transaction_id
* 跟out_trade_no二选一 * 是否必填:跟out_trade_no二选一
* String(28) * 类型:String(28)
* 1217752501201400000000000000 * 示例值:1217752501201400000000000000
* 微信生成的订单号,在支付通知中有返回 * 描述:微信生成的订单号,在支付通知中有返回
* </pre> * </pre>
*/ */
@XStreamAlias("transaction_id") @XStreamAlias("transaction_id")
private String transactionId; private String transactionId;
/** /**
* <pre> * <pre>
* 商户订单号 * 字段名:商户订单号.
* out_trade_no * 变量名:out_trade_no
* 跟transaction_id二选一 * 是否必填:跟transaction_id二选一
* String(32) * 类型:String(32)
* 1217752501201400000000000000 * 示例值:1217752501201400000000000000
* 商户侧传给微信的订单号 * 描述:商户侧传给微信的订单号
* </pre> * </pre>
*/ */
@XStreamAlias("out_trade_no") @XStreamAlias("out_trade_no")
private String outTradeNo; private String outTradeNo;
/** /**
* <pre> * <pre>
* 商户退款单号 * 字段名:商户退款单号.
* out_refund_no * 变量名:out_refund_no
* 是 * 是否必填:是
* String(32) * 类型:String(32)
* 1217752501201400000000000000 * 示例值:1217752501201400000000000000
* 商户系统内部的退款单号,商户系统内部唯一,同一退款单号多次请求只退一笔 * 描述:商户系统内部的退款单号,商户系统内部唯一,同一退款单号多次请求只退一笔
* </pre> * </pre>
*/ */
@Required @Required
@@ -88,12 +80,12 @@ public class WxPayRefundRequest extends WxPayBaseRequest {
private String outRefundNo; private String outRefundNo;
/** /**
* <pre> * <pre>
* 订单金额 * 字段名:订单金额.
* total_fee * 变量名:total_fee
* 是 * 是否必填:是
* Int * 类型:Int
* 100 * 示例值:100
* 订单总金额,单位为分,只能为整数,详见支付金额 * 描述:订单总金额,单位为分,只能为整数,详见支付金额
* </pre> * </pre>
*/ */
@Required @Required
@@ -101,12 +93,12 @@ public class WxPayRefundRequest extends WxPayBaseRequest {
private Integer totalFee; private Integer totalFee;
/** /**
* <pre> * <pre>
* 退款金额 * 字段名:退款金额.
* refund_fee * 变量名:refund_fee
* 是 * 是否必填:是
* Int * 类型:Int
* 100 * 示例值:100
* 退款总金额,订单总金额,单位为分,只能为整数,详见支付金额 * 描述:退款总金额,订单总金额,单位为分,只能为整数,详见支付金额
* </pre> * </pre>
*/ */
@Required @Required
@@ -114,24 +106,24 @@ public class WxPayRefundRequest extends WxPayBaseRequest {
private Integer refundFee; private Integer refundFee;
/** /**
* <pre> * <pre>
* 货币种类 * 字段名:货币种类.
* refund_fee_type * 变量名:refund_fee_type
* 否 * 是否必填:
* String(8) * 类型:String(8)
* CNY * 示例值:CNY
* 货币类型符合ISO 4217标准的三位字母代码默认人民币CNY其他值列表详见货币类型 * 描述:货币类型符合ISO 4217标准的三位字母代码默认人民币CNY其他值列表详见货币类型
* </pre> * </pre>
*/ */
@XStreamAlias("refund_fee_type") @XStreamAlias("refund_fee_type")
private String refundFeeType; private String refundFeeType;
/** /**
* <pre> * <pre>
* 操作员 * 字段名:操作员.
* op_user_id * 变量名:op_user_id
* 是 * 是否必填:是
* String(32) * 类型:String(32)
* 1900000109 * 示例值:1900000109
* 操作员帐号, 默认为商户号 * 描述:操作员帐号, 默认为商户号
* </pre> * </pre>
*/ */
//@Required //@Required
@@ -139,12 +131,12 @@ public class WxPayRefundRequest extends WxPayBaseRequest {
private String opUserId; private String opUserId;
/** /**
* <pre> * <pre>
* 退款资金来源 * 字段名:退款资金来源.
* refund_account * 变量名:refund_account
* 否 * 是否必填:
* String(30) * 类型:String(30)
* REFUND_SOURCE_RECHARGE_FUNDS * 示例值:REFUND_SOURCE_RECHARGE_FUNDS
* 仅针对老资金流商户使用, * 描述:仅针对老资金流商户使用,
* <li>REFUND_SOURCE_UNSETTLED_FUNDS---未结算资金退款(默认使用未结算资金退款), * <li>REFUND_SOURCE_UNSETTLED_FUNDS---未结算资金退款(默认使用未结算资金退款),
* <li>REFUND_SOURCE_RECHARGE_FUNDS---可用余额退款 * <li>REFUND_SOURCE_RECHARGE_FUNDS---可用余额退款
* </pre> * </pre>
@@ -153,12 +145,12 @@ public class WxPayRefundRequest extends WxPayBaseRequest {
private String refundAccount; private String refundAccount;
/** /**
* <pre> * <pre>
* 退款原因 * 字段名:退款原因.
* refund_account * 变量名:refund_account
* 否 * 是否必填:
* String(80) * 类型:String(80)
* 商品已售完 * 示例值:商品已售完
* 若商户传入,会在下发给用户的退款消息中体现退款原因 * 描述:若商户传入,会在下发给用户的退款消息中体现退款原因
* </pre> * </pre>
*/ */
@XStreamAlias("refund_desc") @XStreamAlias("refund_desc")
@@ -177,8 +169,8 @@ public class WxPayRefundRequest extends WxPayBaseRequest {
protected void checkConstraints() throws WxPayException { protected void checkConstraints() throws WxPayException {
if (StringUtils.isNotBlank(this.getRefundAccount())) { if (StringUtils.isNotBlank(this.getRefundAccount())) {
if (!ArrayUtils.contains(REFUND_ACCOUNT, this.getRefundAccount())) { if (!ArrayUtils.contains(REFUND_ACCOUNT, this.getRefundAccount())) {
throw new WxPayException(String.format("refund_account目前必须为%s其中之一,实际值:%s", throw new WxPayException(
Arrays.toString(REFUND_ACCOUNT), this.getRefundAccount())); String.format("refund_account目前必须为%s其中之一,实际值:%s", Arrays.toString(REFUND_ACCOUNT), this.getRefundAccount()));
} }
} }

View File

@@ -8,6 +8,7 @@ import java.util.List;
/** /**
* <pre> * <pre>
* 微信支付-退款查询返回结果
* Created by Binary Wang on 2016-11-24. * Created by Binary Wang on 2016-11-24.
* </pre> * </pre>
* *
@@ -20,96 +21,104 @@ import java.util.List;
public class WxPayRefundQueryResult extends WxPayBaseResult { public class WxPayRefundQueryResult extends WxPayBaseResult {
/** /**
* <pre> * <pre>
* 设备号 * 字段名:设备号.
* device_info * 变量名:device_info
* 否 * 是否必填:
* String(32) * 类型:String(32)
* 013467007045764 * 示例值:013467007045764
* 终端设备号 * 描述:终端设备号
* </pre>
*/ */
@XStreamAlias("device_info") @XStreamAlias("device_info")
private String deviceInfo; private String deviceInfo;
/** /**
* <pre> * <pre>
* 微信订单号 * 字段名:微信订单号.
* transaction_id * 变量名:transaction_id
* 是 * 是否必填:是
* String(32) * 类型:String(32)
* 1217752501201407033233368018 * 示例值:1217752501201407033233368018
* 微信订单号 * 描述:微信订单号
* </pre>
*/ */
@XStreamAlias("transaction_id") @XStreamAlias("transaction_id")
private String transactionId; private String transactionId;
/** /**
* <pre> * <pre>
* 商户订单号 * 字段名:商户订单号.
* out_trade_no * 变量名:out_trade_no
* 是 * 是否必填:是
* String(32) * 类型:String(32)
* 1217752501201407033233368018 * 示例值:1217752501201407033233368018
* 商户系统内部的订单号 * 描述:商户系统内部的订单号
* </pre>
*/ */
@XStreamAlias("out_trade_no") @XStreamAlias("out_trade_no")
private String outTradeNo; private String outTradeNo;
/** /**
* <pre> * <pre>
* 订单金额 * 字段名:订单金额.
* total_fee * 变量名:total_fee
* 是 * 是否必填:是
* Int * 类型:Int
* 100 * 示例值:100
* 订单总金额,单位为分,只能为整数,详见支付金额 * 描述:订单总金额,单位为分,只能为整数,详见支付金额
* </pre>
*/ */
@XStreamAlias("total_fee") @XStreamAlias("total_fee")
private Integer totalFee; private Integer totalFee;
/** /**
* <pre> * <pre>
* 应结订单金额 * 字段名:应结订单金额.
* settlement_total_fee * 变量名:settlement_total_fee
* 否 * 是否必填:
* Int * 类型:Int
* 100 * 示例值:100
* 应结订单金额=订单金额-非充值代金券金额,应结订单金额<=订单金额。 * 描述:应结订单金额=订单金额-非充值代金券金额,应结订单金额<=订单金额。
* </pre>
*/ */
@XStreamAlias("settlement_total_fee") @XStreamAlias("settlement_total_fee")
private Integer settlementTotalFee; private Integer settlementTotalFee;
/** /**
* <pre> * <pre>
* 货币种类 * 字段名:货币种类.
* fee_type * 变量名:fee_type
* 否 * 是否必填:
* String(8) * 类型:String(8)
* CNY * 示例值:CNY
* 订单金额货币类型符合ISO 4217标准的三位字母代码默认人民币CNY其他值列表详见货币类型 * 描述:订单金额货币类型符合ISO 4217标准的三位字母代码默认人民币CNY其他值列表详见货币类型
* </pre>
*/ */
@XStreamAlias("fee_type") @XStreamAlias("fee_type")
private String feeType; private String feeType;
/** /**
* <pre> * <pre>
* 现金支付金额 * 字段名:现金支付金额.
* cash_fee * 变量名:cash_fee
* 是 * 是否必填:是
* Int * 类型:Int
* 100 * 示例值:100
* 现金支付金额,单位为分,只能为整数,详见支付金额 * 描述:现金支付金额,单位为分,只能为整数,详见支付金额
* </pre>
*/ */
@XStreamAlias("cash_fee") @XStreamAlias("cash_fee")
private Integer cashFee; private Integer cashFee;
/** /**
* <pre> * <pre>
* 退款笔数 * 字段名:退款笔数.
* refund_count * 变量名:refund_count
* 是 * 是否必填:是
* Int * 类型:Int
* 1 * 示例值:1
* 退款记录数 * 描述:退款记录数
* </pre>
*/ */
@XStreamAlias("refund_count") @XStreamAlias("refund_count")
private Integer refundCount; private Integer refundCount;
@@ -117,7 +126,7 @@ public class WxPayRefundQueryResult extends WxPayBaseResult {
private List<RefundRecord> refundRecords; private List<RefundRecord> refundRecords;
/** /**
* 组装生成退款记录属性的内容 * 组装生成退款记录属性的内容.
*/ */
public void composeRefundRecords() { public void composeRefundRecords() {
if (this.refundCount != null && this.refundCount > 0) { if (this.refundCount != null && this.refundCount > 0) {
@@ -137,6 +146,7 @@ public class WxPayRefundQueryResult extends WxPayBaseResult {
refundRecord.setCouponRefundCount(this.getXmlValueAsInt("xml/coupon_refund_count_" + i)); refundRecord.setCouponRefundCount(this.getXmlValueAsInt("xml/coupon_refund_count_" + i));
refundRecord.setRefundStatus(this.getXmlValue("xml/refund_status_" + i)); refundRecord.setRefundStatus(this.getXmlValue("xml/refund_status_" + i));
refundRecord.setRefundRecvAccount(this.getXmlValue("xml/refund_recv_accout_" + i)); refundRecord.setRefundRecvAccount(this.getXmlValue("xml/refund_recv_accout_" + i));
refundRecord.setRefundSuccessTime(this.getXmlValue("xml/refund_success_time_" + i));
if (refundRecord.getCouponRefundCount() == null || refundRecord.getCouponRefundCount() == 0) { if (refundRecord.getCouponRefundCount() == null || refundRecord.getCouponRefundCount() == 0) {
continue; continue;
@@ -151,6 +161,8 @@ public class WxPayRefundQueryResult extends WxPayBaseResult {
) )
); );
} }
refundRecord.setRefundCoupons(coupons);
} }
} }
@@ -163,12 +175,12 @@ public class WxPayRefundQueryResult extends WxPayBaseResult {
public static class RefundRecord { public static class RefundRecord {
/** /**
* <pre> * <pre>
* 商户退款单号 * 字段名:商户退款单号.
* out_refund_no_$n * 变量名:out_refund_no_$n
* 是 * 是否必填:是
* String(32) * 类型:String(32)
* 1217752501201407033233368018 * 示例值:1217752501201407033233368018
* 商户退款单号 * 描述:商户退款单号
* </pre> * </pre>
*/ */
@XStreamAlias("out_refund_no") @XStreamAlias("out_refund_no")
@@ -176,12 +188,12 @@ public class WxPayRefundQueryResult extends WxPayBaseResult {
/** /**
* <pre> * <pre>
* 微信退款单号 * 字段名:微信退款单号.
* refund_id_$n * 变量名:refund_id_$n
* 是 * 是否必填:是
* String(28) * 类型:String(28)
* 1217752501201407033233368018 * 示例值:1217752501201407033233368018
* 微信退款单号 * 描述:微信退款单号
* </pre> * </pre>
*/ */
@XStreamAlias("refund_id") @XStreamAlias("refund_id")
@@ -189,12 +201,12 @@ public class WxPayRefundQueryResult extends WxPayBaseResult {
/** /**
* <pre> * <pre>
* 退款渠道 * 字段名:退款渠道.
* refund_channel_$n * 变量名:refund_channel_$n
* 否 * 是否必填:
* String(16) * 类型:String(16)
* ORIGINAL * 示例值:ORIGINAL
* ORIGINAL—原路退款 BALANCE—退回到余额 * 描述:ORIGINAL—原路退款 BALANCE—退回到余额
* </pre> * </pre>
*/ */
@XStreamAlias("refund_channel") @XStreamAlias("refund_channel")
@@ -202,12 +214,12 @@ public class WxPayRefundQueryResult extends WxPayBaseResult {
/** /**
* <pre> * <pre>
* 申请退款金额 * 字段名:申请退款金额.
* refund_fee_$n * 变量名:refund_fee_$n
* 是 * 是否必填:是
* Int * 类型:Int
* 100 * 示例值:100
* 退款总金额,单位为分,可以做部分退款 * 描述:退款总金额,单位为分,可以做部分退款
* </pre> * </pre>
*/ */
@XStreamAlias("refund_fee") @XStreamAlias("refund_fee")
@@ -215,12 +227,12 @@ public class WxPayRefundQueryResult extends WxPayBaseResult {
/** /**
* <pre> * <pre>
* 退款金额 * 字段名:退款金额.
* settlement_refund_fee_$n * 变量名:settlement_refund_fee_$n
* 否 * 是否必填:
* Int * 类型:Int
* 100 * 示例值:100
* 退款金额=申请退款金额-非充值代金券退款金额,退款金额<=申请退款金额 * 描述:退款金额=申请退款金额-非充值代金券退款金额,退款金额<=申请退款金额
* </pre> * </pre>
*/ */
@XStreamAlias("settlement_refund_fee") @XStreamAlias("settlement_refund_fee")
@@ -228,12 +240,12 @@ public class WxPayRefundQueryResult extends WxPayBaseResult {
/** /**
* <pre> * <pre>
* 退款资金来源 * 字段名:退款资金来源.
* refund_account * 变量名:refund_account
* 否 * 是否必填:
* String(30) * 类型:String(30)
* REFUND_SOURCE_RECHARGE_FUNDS * 示例值:REFUND_SOURCE_RECHARGE_FUNDS
* REFUND_SOURCE_RECHARGE_FUNDS---可用余额退款/基本账户, REFUND_SOURCE_UNSETTLED_FUNDS---未结算资金退款 * 描述:REFUND_SOURCE_RECHARGE_FUNDS---可用余额退款/基本账户, REFUND_SOURCE_UNSETTLED_FUNDS---未结算资金退款
* </pre> * </pre>
*/ */
@XStreamAlias("refund_account") @XStreamAlias("refund_account")
@@ -241,12 +253,12 @@ public class WxPayRefundQueryResult extends WxPayBaseResult {
/** /**
* <pre> * <pre>
* 代金券类型 * 字段名:代金券类型.
* coupon_type_$n * 变量名:coupon_type_$n
* 否 * 是否必填:
* Int * 类型:Int
* CASH * 示例值:CASH
* CASH--充值代金券 , NO_CASH---非充值代金券。订单使用代金券时有返回取值CASH、NO_CASH。$n为下标,从0开始编号举例coupon_type_$0 * 描述:CASH--充值代金券 , NO_CASH---非充值代金券。订单使用代金券时有返回取值CASH、NO_CASH。$n为下标,从0开始编号举例coupon_type_$0
* </pre> * </pre>
*/ */
@XStreamAlias("coupon_type") @XStreamAlias("coupon_type")
@@ -254,12 +266,12 @@ public class WxPayRefundQueryResult extends WxPayBaseResult {
/** /**
* <pre> * <pre>
* 代金券退款金额 * 字段名:代金券退款金额.
* coupon_refund_fee_$n * 变量名:coupon_refund_fee_$n
* 否 * 是否必填:
* Int * 类型:Int
* 100 * 示例值:100
* 代金券退款金额<=退款金额,退款金额-代金券或立减优惠退款金额为现金,说明详见代金券或立减优惠 * 描述:代金券退款金额<=退款金额,退款金额-代金券或立减优惠退款金额为现金,说明详见代金券或立减优惠
* </pre> * </pre>
*/ */
@XStreamAlias("coupon_refund_fee") @XStreamAlias("coupon_refund_fee")
@@ -267,12 +279,12 @@ public class WxPayRefundQueryResult extends WxPayBaseResult {
/** /**
* <pre> * <pre>
* 退款代金券使用数量 * 字段名:退款代金券使用数量.
* coupon_refund_count_$n * 变量名:coupon_refund_count_$n
* 否 * 是否必填:
* Int * 类型:Int
* 1 * 示例值:1
* 退款代金券使用数量 ,$n为下标,从0开始编号 * 描述:退款代金券使用数量 ,$n为下标,从0开始编号
* </pre> * </pre>
*/ */
@XStreamAlias("coupon_refund_count") @XStreamAlias("coupon_refund_count")
@@ -282,12 +294,12 @@ public class WxPayRefundQueryResult extends WxPayBaseResult {
/** /**
* <pre> * <pre>
* 退款状态 * 字段名:退款状态.
* refund_status_$n * 变量名:refund_status_$n
* 是 * 是否必填:是
* String(16) * 类型:String(16)
* SUCCESS * 示例值:SUCCESS
* 退款状态: * 描述:退款状态:
* SUCCESS—退款成功 * SUCCESS—退款成功
* FAIL—退款失败 * FAIL—退款失败
* PROCESSING—退款处理中 * PROCESSING—退款处理中
@@ -297,30 +309,44 @@ public class WxPayRefundQueryResult extends WxPayBaseResult {
*/ */
@XStreamAlias("refund_status") @XStreamAlias("refund_status")
private String refundStatus; private String refundStatus;
/** /**
* <pre> * <pre>
* 退款入账账户 * 字段名:退款入账账户.
* refund_recv_accout_$n * 变量名:refund_recv_accout_$n
* 是 * 是否必填:是
* String(64) * 类型:String(64)
* 招商银行信用卡0403 * 示例值:招商银行信用卡0403
* 取当前退款单的退款入账方1退回银行卡{银行名称}{卡类型}{卡尾号}2退回支付用户零钱:支付用户零钱 * 描述:取当前退款单的退款入账方1退回银行卡{银行名称}{卡类型}{卡尾号}2退回支付用户零钱:支付用户零钱
* </pre> * </pre>
*/ */
@XStreamAlias("refund_recv_accout") @XStreamAlias("refund_recv_accout")
private String refundRecvAccount; private String refundRecvAccount;
/**
* <pre>
* 字段名:退款成功时间.
* 变量名refund_success_time_$n
* 是否必填:否
* 类型String(20)
* 示例值2016-07-25 15:26:26
* 描述:退款成功时间,当退款状态为退款成功时有返回。$n为下标从0开始编号。
* </pre>
*/
@XStreamAlias("refund_success_time")
private String refundSuccessTime;
@Data @Data
@NoArgsConstructor @NoArgsConstructor
public static class RefundCoupon { public static class RefundCoupon {
/** /**
* <pre> * <pre>
* 退款代金券批次ID * 字段名:退款代金券批次ID.
* coupon_refund_batch_id_$n_$m * 变量名:coupon_refund_batch_id_$n_$m
* 否 * 是否必填:
* String(20) * 类型:String(20)
* 100 * 示例值:100
* 退款代金券批次ID ,$n为下标$m为下标从0开始编号 * 描述:退款代金券批次ID ,$n为下标$m为下标从0开始编号
* </pre> * </pre>
* *
* @deprecated 貌似是被去掉了,但不知是何时! * @deprecated 貌似是被去掉了,但不知是何时!
@@ -330,12 +356,12 @@ public class WxPayRefundQueryResult extends WxPayBaseResult {
/** /**
* <pre> * <pre>
* 退款代金券ID * 字段名:退款代金券ID.
* coupon_refund_id_$n_$m * 变量名:coupon_refund_id_$n_$m
* 否 * 是否必填:
* String(20) * 类型:String(20)
* 10000 * 示例值:10000
* 退款代金券ID, $n为下标$m为下标从0开始编号 * 描述:退款代金券ID, $n为下标$m为下标从0开始编号
* </pre> * </pre>
*/ */
@XStreamAlias("coupon_refund_id") @XStreamAlias("coupon_refund_id")
@@ -343,12 +369,12 @@ public class WxPayRefundQueryResult extends WxPayBaseResult {
/** /**
* <pre> * <pre>
* 单个退款代金券支付金额 * 字段名:单个退款代金券支付金额.
* coupon_refund_fee_$n_$m * 变量名:coupon_refund_fee_$n_$m
* 否 * 是否必填:
* Int * 类型:Int
* 100 * 示例值:100
* 单个退款代金券支付金额, $n为下标$m为下标从0开始编号 * 描述:单个退款代金券支付金额, $n为下标$m为下标从0开始编号
* </pre> * </pre>
*/ */
@XStreamAlias("coupon_refund_fee") @XStreamAlias("coupon_refund_fee")