🎨 ProfitSharingResult类增加分账接收方列表字段解析方法

This commit is contained in:
Binary Wang 2022-08-22 22:36:38 +08:00 committed by GitHub
commit f94e67056d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,13 +1,17 @@
package com.github.binarywang.wxpay.bean.profitsharing;
import com.github.binarywang.wxpay.bean.result.BaseWxPayResult;
import com.google.gson.annotations.SerializedName;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.w3c.dom.Document;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.Serializable;
import java.util.List;
/**
* @author Wang GuangXin 2019/10/22 10:06
@ -20,6 +24,11 @@ import java.io.Serializable;
public class ProfitSharingResult extends BaseWxPayResult implements Serializable {
private static final long serialVersionUID = 7435709584788869456L;
/**
* GSON工具
*/
private static final Gson GSON = new GsonBuilder().create();
/**
* 微信订单号.
*/
@ -43,11 +52,32 @@ public class ProfitSharingResult extends BaseWxPayResult implements Serializable
private String status;
/**
* 分账接收方列表.
* 分账接收方列表
*/
@XStreamAlias("receivers")
private String receivers;
/**
* 分账接收方列表
*/
private List<Receiver> receiverList;
/**
* 获取分账接收方列表方法
*
* @return
*/
public List<Receiver> getReceiverList() {
if (receiverList == null && receivers != null && receivers.length() > 0) {
List<String> tempList = GSON.fromJson(receivers, List.class);
for (String str : tempList) {
Receiver receiver = GSON.fromJson(str, Receiver.class);
receiverList.add(receiver);
}
}
return receiverList;
}
@Override
protected void loadXml(Document d) {
transactionId = readXmlString(d, "transaction_id");
@ -56,4 +86,134 @@ public class ProfitSharingResult extends BaseWxPayResult implements Serializable
status = readXmlString(d, "status");
receivers = readXmlString(d, "receivers");
}
/**
* 分账接收方列表对象
*/
@Data
public static class Receiver implements Serializable {
private static final long serialVersionUID = 4240983048700956806L;
/**
* <pre>
* 字段名分账接收方类型
* 是否必填
* 描述
* 枚举值
* MERCHANT_ID商户号mch_id或者sub_mch_id
* PERSONAL_OPENID个人openid由服务商的APPID转换得到
* PERSONAL_SUB_OPENID个人sub_openid由品牌主的APPID转换得到
* </pre>
*/
@SerializedName("type")
private String type;
/**
* <pre>
* 字段名分账接收方帐号
* 是否必填
* 描述
* 1分账接收方类型为MERCHANT_ID时分账接收方账号为商户号
* 2分账接收方类型为PERSONAL_OPENID时分账接收方账号为个人openid
* </pre>
*/
@SerializedName("account")
private String account;
/**
* <pre>
* 字段名分账金额
* 是否必填
* 描述 分账金额单位为分只能为整数不能超过原订单支付金额及最大分账比例金额
* </pre>
*/
@SerializedName("amount")
private Long amount;
/**
* <pre>
* 字段名分账接收商户号
* 是否必填
* 描述 仅分账接收方类型为MERCHANT_ID时填写微信支付分配的商户号
* </pre>
*/
@SerializedName(("receiver_mchid"))
private String receiverMchid;
/**
* <pre>
* 字段名分账描述
* 是否必填
* 描述 分账的原因描述分账账单中需要体现
* </pre>
*/
@SerializedName("description")
private String description;
/**
* <pre>
* 字段名分账结果
* 是否必填
* 描述
* 1PENDING待分账
* 2SUCCESS分账成功
* 3CLOSED已关闭
* </pre>
*/
@SerializedName("result")
private String result;
/**
* <pre>
* 字段名分账失败原因
* 是否必填
* 描述包含以下枚举值
* 1ACCOUNT_ABNORMAL : 分账接收账户异常
* 2NO_RELATION : 分账关系已解除
* 3RECEIVER_HIGH_RISK : 高风险接收方
* 4RECEIVER_REAL_NAME_NOT_VERIFIED : 接收方未实名
* 5NO_AUTH : 分账权限已解除
* </pre>
*/
@SerializedName("fail_reason")
private String failReason;
/**
* <pre>
* 字段名分账创建时间
* 是否必填
* 描述遵循rfc3339标准格式格式为YYYY-MM-DDTHH:mm:ss.sss+TIMEZONE
* YYYY-MM-DD表示年月日T出现在字符串中表示time元素的开头
* HH:mm:ss.sss表示时分秒毫秒
* TIMEZONE表示时区+08:00表示东八区时间领先UTC 8小时即北京时间
* 例如2015-05-20T13:29:35.120+08:00表示北京时间2015年5月20日 13点29分35秒
* </pre>
*/
@SerializedName("create_time")
private String createTime;
/**
* <pre>
* 字段名分账完成时间
* 是否必填
* 描述遵循rfc3339标准格式格式为YYYY-MM-DDTHH:mm:ss.sss+TIMEZONE
* YYYY-MM-DD表示年月日T出现在字符串中表示time元素的开头
* HH:mm:ss.sss表示时分秒毫秒
* TIMEZONE表示时区+08:00表示东八区时间领先UTC 8小时即北京时间
* 例如2015-05-20T13:29:35.120+08:00表示北京时间2015年5月20日 13点29分35秒
* </pre>
*/
@SerializedName("finish_time")
private String finishTime;
/**
* <pre>
* 字段名微信分账明细单号
* 是否必填
* 每笔分账业务执行的明细单号可与资金账单对账使用
* 例如36011111111111111111111
* </pre>
*/
@SerializedName("detail_id")
private String detailId;
}
}