package com.ruoyi.newwxpay.transfer;

import com.google.gson.annotations.SerializedName;
import com.wechat.pay.java.core.util.StringUtil;
import io.swagger.annotations.ApiModelProperty;

public class InitiateSingleTransferResponse {
    public String getOutBillNo() {
        return outBillNo;
    }

    public void setOutBillNo(String outBillNo) {
        this.outBillNo = outBillNo;
    }

    public String getTransferBillNo() {
        return transferBillNo;
    }

    public void setTransferBillNo(String transferBillNo) {
        this.transferBillNo = transferBillNo;
    }

    public String getCreateTime() {
        return createTime;
    }

    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }

    /**
     * 【商户单号】 商户系统内部的商家单号，要求此参数只能由数字、大小写字母组成，在商户系统内部唯一
     */
    @SerializedName("out_bill_no")
    private String outBillNo;

    /**
     * 【微信转账单号】 微信转账单号，微信商家转账系统返回的唯一标识
     */
    @SerializedName("transfer_bill_no")
    private String transferBillNo;

    /**
     * 【单据创建时间】 单据受理成功时返回，按照使用rfc3339所定义的格式，格式为yyyy-MM-DDThh:mm:ss+TIMEZONE
     */
    @SerializedName("create_time")
    private String createTime;

    /**
     * 【单据状态】 商家转账订单状态
     * ACCEPTED: 转账已受理
     * PROCESSING: 转账锁定资金中。如果一直停留在该状态，建议检查账户余额是否足够，如余额不足，可充值后再原单重试。
     * WAIT_USER_CONFIRM: 待收款用户确认，可拉起微信收款确认页面进行收款确认
     * TRANSFERING: 转账中，可拉起微信收款确认页面再次重试确认收款
     * SUCCESS: 转账成功
     * FAIL: 转账失败
     * CANCELING: 商户撤销请求受理成功，该笔转账正在撤销中
     * CANCELLED: 转账撤销完成
     */
    @SerializedName("state")
    private String state;

    public String getFailReason() {
        return failReason;
    }

    public void setFailReason(String failReason) {
        this.failReason = failReason;
    }

    public String getPackageInfo() {
        return packageInfo;
    }

    public void setPackageInfo(String packageInfo) {
        this.packageInfo = packageInfo;
    }

    /**
     * 【失败原因】 订单已失败或者已退资金时，会返回订单失败原因
     */
    @SerializedName("fail_reason")
    private String failReason;

    /**
     * 【跳转领取页面的package信息】 跳转微信支付收款页的package信息，APP调起用户确认收款或者JSAPI调起用户确认收款 时需要使用的参数。
     * 单据创建后，用户24小时内不领取将过期关闭，建议拉起用户确认收款页面前，先查单据状态：如单据状态为待收款用户确认，可用之前的package信息拉起；单据到终态时需更换单号重新发起转账。
     */
    @SerializedName("package_info")
    private String packageInfo;




    public InitiateSingleTransferResponse() {

    }

    public String getMchId() {
        return mchId;
    }

    public void setMchId(String mchId) {
        this.mchId = mchId;
    }

    public String getAppId() {
        return appId;
    }

    public void setAppId(String appId) {
        this.appId = appId;
    }

    /**
     * 【跳转领取页面的package信息】 要用的商户ID
     */
    private String mchId;
    /**
     * 跳转领取页面的package信息】 要用的appId
     */
    private String appId;

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("class InitiateSingleTransferResponse {\n");
        sb.append("    outBillNo: ").append(StringUtil.toIndentedString(this.outBillNo)).append("\n");
        sb.append("    transferBillNo: ").append(StringUtil.toIndentedString(this.transferBillNo)).append("\n");
        sb.append("    createTime: ").append(StringUtil.toIndentedString(this.createTime)).append("\n");
        sb.append("    state: ").append(StringUtil.toIndentedString(this.state)).append("\n");
        sb.append("    failReason: ").append(StringUtil.toIndentedString(this.failReason)).append("\n");
        sb.append("    packageInfo: ").append(StringUtil.toIndentedString(this.packageInfo)).append("\n");
        sb.append("}");
        return sb.toString();
    }
}
