Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -20,6 +24,11 @@
public class ProfitSharingResult extends BaseWxPayResult implements Serializable {
private static final long serialVersionUID = 7435709584788869456L;

/**
* GSON工具
*/
private static final Gson GSON = new GsonBuilder().create();

/**
* 微信订单号.
*/
Expand All @@ -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");
Expand All @@ -56,4 +86,134 @@ protected void loadXml(Document d) {
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>
* 字段名:分账结果
* 是否必填:是
* 描述:
* 1、PENDING:待分账
* 2、SUCCESS:分账成功
* 3、CLOSED:已关闭
* </pre>
*/
@SerializedName("result")
private String result;

/**
* <pre>
* 字段名:分账失败原因
* 是否必填:是
* 描述:包含以下枚举值:
* 1、ACCOUNT_ABNORMAL : 分账接收账户异常
* 2、NO_RELATION : 分账关系已解除
* 3、RECEIVER_HIGH_RISK : 高风险接收方
* 4、RECEIVER_REAL_NAME_NOT_VERIFIED : 接收方未实名
* 5、NO_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;
}
}