All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.binarywang.wxpay.bean.profitsharing.result.ProfitSharingResult Maven / Gradle / Ivy

The newest version!
package com.github.binarywang.wxpay.bean.profitsharing.result;

import com.github.binarywang.wxpay.bean.result.BaseWxPayResult;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.annotations.SerializedName;
import com.google.gson.reflect.TypeToken;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.w3c.dom.Document;

import java.io.Serializable;
import java.util.Collections;
import java.util.List;

/**
 * @author Wang GuangXin 2019/10/22 10:06
 * @version 1.0
 */
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@XStreamAlias("xml")
public class ProfitSharingResult extends BaseWxPayResult implements Serializable {
  private static final long serialVersionUID = 7435709584788869456L;

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

  /**
   * 微信订单号.
   */
  @XStreamAlias("transaction_id")
  private String transactionId;
  /**
   * 商户分账单号.
   */
  @XStreamAlias("out_order_no")
  private String outOrderNo;
  /**
   * 微信分账单号.
   */
  @XStreamAlias("order_id")
  private String orderId;

  /**
   * 分账单状态.
   */
  @XStreamAlias("status")
  private String status;

  /**
   * 分账接收方列表
   */
  @XStreamAlias("receivers")
  private String receivers;

  /**
   * 分账接收方列表
   */
  private List receiverList;

  /**
   * 获取分账接收方列表方法
   *
   */
  public List getReceiverList() {
    if (receiverList != null) {
      return receiverList;
    }

    if (StringUtils.isNotEmpty(receivers)) {
      this.receiverList = GSON.fromJson(receivers, new TypeToken>() {
      }.getType());
      return receiverList;
    }

    return Collections.emptyList();
  }

  @Override
  protected void loadXml(Document d) {
    transactionId = readXmlString(d, "transaction_id");
    outOrderNo = readXmlString(d, "out_order_no");
    orderId = readXmlString(d, "order_id");
    status = readXmlString(d, "status");
    receivers = readXmlString(d, "receivers");
  }

  /**
   * 分账接收方列表对象
   */
  @Data
  public static class Receiver implements Serializable {
    private static final long serialVersionUID = 4240983048700956806L;

    /**
     * 
     * 字段名:分账接收方类型
     * 是否必填:是
     * 描述:
     * 枚举值:
     * MERCHANT_ID:商户号(mch_id或者sub_mch_id)
     * PERSONAL_OPENID:个人openid(由服务商的APPID转换得到)
     * PERSONAL_SUB_OPENID:个人sub_openid(由品牌主的APPID转换得到)
     * 
*/ @SerializedName("type") private String type; /** *
     * 字段名:分账接收方帐号
     * 是否必填:是
     * 描述:
     * 1、分账接收方类型为MERCHANT_ID时,分账接收方账号为商户号
     * 2、分账接收方类型为PERSONAL_OPENID时,分账接收方账号为个人openid
     * 
*/ @SerializedName("account") private String account; /** *
     * 字段名:分账金额
     * 是否必填:是
     * 描述: 分账金额,单位为分,只能为整数,不能超过原订单支付金额及最大分账比例金额
     * 
*/ @SerializedName("amount") private Integer amount; /** *
     * 字段名:分账接收商户号
     * 是否必填:是
     * 描述: 仅分账接收方类型为MERCHANT_ID时,填写微信支付分配的商户号
     * 
*/ @SerializedName(("receiver_mchid")) private String receiverMchid; /** *
     * 字段名:分账描述
     * 是否必填:是
     * 描述: 分账的原因描述,分账账单中需要体现
     * 
*/ @SerializedName("description") private String description; /** *
     * 字段名:分账结果
     * 是否必填:是
     * 描述:
     * 1、PENDING:待分账
     * 2、SUCCESS:分账成功
     * 3、CLOSED:已关闭
     * 
*/ @SerializedName("result") private String result; /** *
     * 字段名:分账失败原因
     * 是否必填:是
     * 描述:包含以下枚举值:
     * 1、ACCOUNT_ABNORMAL : 分账接收账户异常
     * 2、NO_RELATION : 分账关系已解除
     * 3、RECEIVER_HIGH_RISK : 高风险接收方
     * 4、RECEIVER_REAL_NAME_NOT_VERIFIED : 接收方未实名
     * 5、NO_AUTH : 分账权限已解除
     * 
*/ @SerializedName("fail_reason") private String failReason; /** *
     * 字段名:分账创建时间
     * 是否必填:是
     * 描述:遵循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秒。
     * 
*/ @SerializedName("create_time") private String createTime; /** *
     * 字段名:分账完成时间
     * 是否必填:是
     * 描述:遵循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秒。
     * 
*/ @SerializedName("finish_time") private String finishTime; /** *
     * 字段名:微信分账明细单号
     * 是否必填:是
     * 每笔分账业务执行的明细单号,可与资金账单对账使用,
     * 例如:36011111111111111111111
     * 
*/ @SerializedName("detail_id") private String detailId; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy