content: /*
   * 支付宝开放平台API
   * 支付宝开放平台v3协议文档
   *
   * The version of the OpenAPI document: 2025-08-26
   * 
   *
   * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
   * https://openapi-generator.tech
   * Do not edit the class manually.
   */
  
  
  package com.alipay.v3.model;
  
  import java.util.Objects;
  import java.util.Arrays;
  import com.alipay.v3.model.CreditRiskInfo;
  import com.google.gson.TypeAdapter;
  import com.google.gson.annotations.JsonAdapter;
  import com.google.gson.annotations.SerializedName;
  import com.google.gson.stream.JsonReader;
  import com.google.gson.stream.JsonWriter;
  import io.swagger.annotations.ApiModel;
  import io.swagger.annotations.ApiModelProperty;
  import java.io.IOException;
  
  import com.google.gson.Gson;
  import com.google.gson.GsonBuilder;
  import com.google.gson.JsonArray;
  import com.google.gson.JsonDeserializationContext;
  import com.google.gson.JsonDeserializer;
  import com.google.gson.JsonElement;
  import com.google.gson.JsonObject;
  import com.google.gson.JsonParseException;
  import com.google.gson.TypeAdapterFactory;
  import com.google.gson.reflect.TypeToken;
  
  import java.lang.reflect.Type;
  import java.util.HashMap;
  import java.util.HashSet;
  import java.util.Map;
  import java.util.Map.Entry;
  import java.util.Set;
  
  import com.alipay.v3.JSON;
  
  /**
   * AlipayFundAuthOperationDetailQueryResponseModel
   */
  @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
  public class AlipayFundAuthOperationDetailQueryResponseModel {
    public static final String SERIALIZED_NAME_AMOUNT = "amount";
    @SerializedName(SERIALIZED_NAME_AMOUNT)
    private String amount;
  
    public static final String SERIALIZED_NAME_AUTH_NO = "auth_no";
    @SerializedName(SERIALIZED_NAME_AUTH_NO)
    private String authNo;
  
    public static final String SERIALIZED_NAME_CREDIT_AMOUNT = "credit_amount";
    @SerializedName(SERIALIZED_NAME_CREDIT_AMOUNT)
    private String creditAmount;
  
    public static final String SERIALIZED_NAME_CREDIT_MERCHANT_EXT = "credit_merchant_ext";
    @SerializedName(SERIALIZED_NAME_CREDIT_MERCHANT_EXT)
    private String creditMerchantExt;
  
    public static final String SERIALIZED_NAME_CREDIT_RISK_INFO = "credit_risk_info";
    @SerializedName(SERIALIZED_NAME_CREDIT_RISK_INFO)
    private CreditRiskInfo creditRiskInfo;
  
    public static final String SERIALIZED_NAME_ENTERPRISE_PAY_INFO = "enterprise_pay_info";
    @SerializedName(SERIALIZED_NAME_ENTERPRISE_PAY_INFO)
    private String enterprisePayInfo;
  
    public static final String SERIALIZED_NAME_EXTRA_PARAM = "extra_param";
    @SerializedName(SERIALIZED_NAME_EXTRA_PARAM)
    private String extraParam;
  
    public static final String SERIALIZED_NAME_FUND_AMOUNT = "fund_amount";
    @SerializedName(SERIALIZED_NAME_FUND_AMOUNT)
    private String fundAmount;
  
    public static final String SERIALIZED_NAME_GMT_CREATE = "gmt_create";
    @SerializedName(SERIALIZED_NAME_GMT_CREATE)
    private String gmtCreate;
  
    public static final String SERIALIZED_NAME_GMT_TRANS = "gmt_trans";
    @SerializedName(SERIALIZED_NAME_GMT_TRANS)
    private String gmtTrans;
  
    public static final String SERIALIZED_NAME_OPERATION_ID = "operation_id";
    @SerializedName(SERIALIZED_NAME_OPERATION_ID)
    private String operationId;
  
    public static final String SERIALIZED_NAME_OPERATION_TYPE = "operation_type";
    @SerializedName(SERIALIZED_NAME_OPERATION_TYPE)
    private String operationType;
  
    public static final String SERIALIZED_NAME_ORDER_STATUS = "order_status";
    @SerializedName(SERIALIZED_NAME_ORDER_STATUS)
    private String orderStatus;
  
    public static final String SERIALIZED_NAME_ORDER_TITLE = "order_title";
    @SerializedName(SERIALIZED_NAME_ORDER_TITLE)
    private String orderTitle;
  
    public static final String SERIALIZED_NAME_OUT_ORDER_NO = "out_order_no";
    @SerializedName(SERIALIZED_NAME_OUT_ORDER_NO)
    private String outOrderNo;
  
    public static final String SERIALIZED_NAME_OUT_REQUEST_NO = "out_request_no";
    @SerializedName(SERIALIZED_NAME_OUT_REQUEST_NO)
    private String outRequestNo;
  
    public static final String SERIALIZED_NAME_PAYER_LOGON_ID = "payer_logon_id";
    @SerializedName(SERIALIZED_NAME_PAYER_LOGON_ID)
    private String payerLogonId;
  
    public static final String SERIALIZED_NAME_PAYER_OPEN_ID = "payer_open_id";
    @SerializedName(SERIALIZED_NAME_PAYER_OPEN_ID)
    private String payerOpenId;
  
    public static final String SERIALIZED_NAME_PAYER_USER_ID = "payer_user_id";
    @SerializedName(SERIALIZED_NAME_PAYER_USER_ID)
    private String payerUserId;
  
    public static final String SERIALIZED_NAME_PRE_AUTH_TYPE = "pre_auth_type";
    @SerializedName(SERIALIZED_NAME_PRE_AUTH_TYPE)
    private String preAuthType;
  
    public static final String SERIALIZED_NAME_REMARK = "remark";
    @SerializedName(SERIALIZED_NAME_REMARK)
    private String remark;
  
    public static final String SERIALIZED_NAME_REST_AMOUNT = "rest_amount";
    @SerializedName(SERIALIZED_NAME_REST_AMOUNT)
    private String restAmount;
  
    public static final String SERIALIZED_NAME_REST_CREDIT_AMOUNT = "rest_credit_amount";
    @SerializedName(SERIALIZED_NAME_REST_CREDIT_AMOUNT)
    private String restCreditAmount;
  
    public static final String SERIALIZED_NAME_REST_FUND_AMOUNT = "rest_fund_amount";
    @SerializedName(SERIALIZED_NAME_REST_FUND_AMOUNT)
    private String restFundAmount;
  
    public static final String SERIALIZED_NAME_STATUS = "status";
    @SerializedName(SERIALIZED_NAME_STATUS)
    private String status;
  
    public static final String SERIALIZED_NAME_TOTAL_FREEZE_AMOUNT = "total_freeze_amount";
    @SerializedName(SERIALIZED_NAME_TOTAL_FREEZE_AMOUNT)
    private String totalFreezeAmount;
  
    public static final String SERIALIZED_NAME_TOTAL_FREEZE_CREDIT_AMOUNT = "total_freeze_credit_amount";
    @SerializedName(SERIALIZED_NAME_TOTAL_FREEZE_CREDIT_AMOUNT)
    private String totalFreezeCreditAmount;
  
    public static final String SERIALIZED_NAME_TOTAL_FREEZE_FUND_AMOUNT = "total_freeze_fund_amount";
    @SerializedName(SERIALIZED_NAME_TOTAL_FREEZE_FUND_AMOUNT)
    private String totalFreezeFundAmount;
  
    public static final String SERIALIZED_NAME_TOTAL_PAY_AMOUNT = "total_pay_amount";
    @SerializedName(SERIALIZED_NAME_TOTAL_PAY_AMOUNT)
    private String totalPayAmount;
  
    public static final String SERIALIZED_NAME_TOTAL_PAY_CREDIT_AMOUNT = "total_pay_credit_amount";
    @SerializedName(SERIALIZED_NAME_TOTAL_PAY_CREDIT_AMOUNT)
    private String totalPayCreditAmount;
  
    public static final String SERIALIZED_NAME_TOTAL_PAY_FUND_AMOUNT = "total_pay_fund_amount";
    @SerializedName(SERIALIZED_NAME_TOTAL_PAY_FUND_AMOUNT)
    private String totalPayFundAmount;
  
    public static final String SERIALIZED_NAME_TRANS_CURRENCY = "trans_currency";
    @SerializedName(SERIALIZED_NAME_TRANS_CURRENCY)
    private String transCurrency;
  
    public AlipayFundAuthOperationDetailQueryResponseModel() { 
    }
  
    public AlipayFundAuthOperationDetailQueryResponseModel amount(String amount) {
      
      this.amount = amount;
      return this;
    }
  
     /**
     * 该笔资金操作流水operation_id对应的操作金额，单位为：元（人民币）
     * @return amount
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "200.00", value = "该笔资金操作流水operation_id对应的操作金额，单位为：元（人民币）")
  
    public String getAmount() {
      return amount;
    }
  
  
    public void setAmount(String amount) {
      this.amount = amount;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel authNo(String authNo) {
      
      this.authNo = authNo;
      return this;
    }
  
     /**
     * 支付宝资金授权订单号
     * @return authNo
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "2014031600002001260000001000", value = "支付宝资金授权订单号")
  
    public String getAuthNo() {
      return authNo;
    }
  
  
    public void setAuthNo(String authNo) {
      this.authNo = authNo;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel creditAmount(String creditAmount) {
      
      this.creditAmount = creditAmount;
      return this;
    }
  
     /**
     * 该笔资金操作流水operation_id对应的操作信用金额
     * @return creditAmount
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "0.01", value = "该笔资金操作流水operation_id对应的操作信用金额")
  
    public String getCreditAmount() {
      return creditAmount;
    }
  
  
    public void setCreditAmount(String creditAmount) {
      this.creditAmount = creditAmount;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel creditMerchantExt(String creditMerchantExt) {
      
      this.creditMerchantExt = creditMerchantExt;
      return this;
    }
  
     /**
     * 芝麻透出给商户的信息，具体内容由商户与芝麻约定后返回
     * @return creditMerchantExt
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "{\"1003190\":\"true\"}", value = "芝麻透出给商户的信息，具体内容由商户与芝麻约定后返回")
  
    public String getCreditMerchantExt() {
      return creditMerchantExt;
    }
  
  
    public void setCreditMerchantExt(String creditMerchantExt) {
      this.creditMerchantExt = creditMerchantExt;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel creditRiskInfo(CreditRiskInfo creditRiskInfo) {
      
      this.creditRiskInfo = creditRiskInfo;
      return this;
    }
  
     /**
     * Get creditRiskInfo
     * @return creditRiskInfo
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(value = "")
  
    public CreditRiskInfo getCreditRiskInfo() {
      return creditRiskInfo;
    }
  
  
    public void setCreditRiskInfo(CreditRiskInfo creditRiskInfo) {
      this.creditRiskInfo = creditRiskInfo;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel enterprisePayInfo(String enterprisePayInfo) {
      
      this.enterprisePayInfo = enterprisePayInfo;
      return this;
    }
  
     /**
     * 因公付业务信息
     * @return enterprisePayInfo
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "{\"biz_info\":\"{\\\"enterprisePayAmount\\\":\\\"0.01\\\"}\"}", value = "因公付业务信息")
  
    public String getEnterprisePayInfo() {
      return enterprisePayInfo;
    }
  
  
    public void setEnterprisePayInfo(String enterprisePayInfo) {
      this.enterprisePayInfo = enterprisePayInfo;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel extraParam(String extraParam) {
      
      this.extraParam = extraParam;
      return this;
    }
  
     /**
     * 商户请求创建预授权订单时传入的扩展参数，仅返回商户自定义的扩展信息（merchantExt）
     * @return extraParam
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "{\"merchantExt\":\"key1=value1,key2=value2\"}", value = "商户请求创建预授权订单时传入的扩展参数，仅返回商户自定义的扩展信息（merchantExt）")
  
    public String getExtraParam() {
      return extraParam;
    }
  
  
    public void setExtraParam(String extraParam) {
      this.extraParam = extraParam;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel fundAmount(String fundAmount) {
      
      this.fundAmount = fundAmount;
      return this;
    }
  
     /**
     * 该笔资金操作流水operation_id对应的操作自有资金金额
     * @return fundAmount
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "0.01", value = "该笔资金操作流水operation_id对应的操作自有资金金额")
  
    public String getFundAmount() {
      return fundAmount;
    }
  
  
    public void setFundAmount(String fundAmount) {
      this.fundAmount = fundAmount;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel gmtCreate(String gmtCreate) {
      
      this.gmtCreate = gmtCreate;
      return this;
    }
  
     /**
     * 资金授权单据操作流水创建时间，  格式：YYYY-MM-DD HH:MM:SS
     * @return gmtCreate
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "2014-01-01 20:00:00", value = "资金授权单据操作流水创建时间，  格式：YYYY-MM-DD HH:MM:SS")
  
    public String getGmtCreate() {
      return gmtCreate;
    }
  
  
    public void setGmtCreate(String gmtCreate) {
      this.gmtCreate = gmtCreate;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel gmtTrans(String gmtTrans) {
      
      this.gmtTrans = gmtTrans;
      return this;
    }
  
     /**
     * 支付宝账务处理成功时间，  格式：YYYY-MM-DD HH:MM:SS
     * @return gmtTrans
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "2014-01-01 20:00:00", value = "支付宝账务处理成功时间，  格式：YYYY-MM-DD HH:MM:SS")
  
    public String getGmtTrans() {
      return gmtTrans;
    }
  
  
    public void setGmtTrans(String gmtTrans) {
      this.gmtTrans = gmtTrans;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel operationId(String operationId) {
      
      this.operationId = operationId;
      return this;
    }
  
     /**
     * 支付宝资金操作流水号
     * @return operationId
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "20140216355864862002", value = "支付宝资金操作流水号")
  
    public String getOperationId() {
      return operationId;
    }
  
  
    public void setOperationId(String operationId) {
      this.operationId = operationId;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel operationType(String operationType) {
      
      this.operationType = operationType;
      return this;
    }
  
     /**
     * 支付宝资金操作类型，表示当前查询到的这笔明细的操作类型。
     * @return operationType
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "UNFREEZE", value = "支付宝资金操作类型，表示当前查询到的这笔明细的操作类型。")
  
    public String getOperationType() {
      return operationType;
    }
  
  
    public void setOperationType(String operationType) {
      this.operationType = operationType;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel orderStatus(String orderStatus) {
      
      this.orderStatus = orderStatus;
      return this;
    }
  
     /**
     * 授权单状态：INIT（初始状态：已创建未授权）、AUTHORIZED（已授权状态：授权成功，可以进行转支付或解冻操作）、FINISH（完成状态：转支付完成且无剩余冻结资金）、CLOSED（关闭状态：授权未完成超时关闭或冻结资金全额解冻）
     * @return orderStatus
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "AUTHORIZED", value = "授权单状态：INIT（初始状态：已创建未授权）、AUTHORIZED（已授权状态：授权成功，可以进行转支付或解冻操作）、FINISH（完成状态：转支付完成且无剩余冻结资金）、CLOSED（关闭状态：授权未完成超时关闭或冻结资金全额解冻）")
  
    public String getOrderStatus() {
      return orderStatus;
    }
  
  
    public void setOrderStatus(String orderStatus) {
      this.orderStatus = orderStatus;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel orderTitle(String orderTitle) {
      
      this.orderTitle = orderTitle;
      return this;
    }
  
     /**
     * 业务订单的简单描述，如商品名称等
     * @return orderTitle
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "0元购土豪金", value = "业务订单的简单描述，如商品名称等")
  
    public String getOrderTitle() {
      return orderTitle;
    }
  
  
    public void setOrderTitle(String orderTitle) {
      this.orderTitle = orderTitle;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel outOrderNo(String outOrderNo) {
      
      this.outOrderNo = outOrderNo;
      return this;
    }
  
     /**
     * 商户的授权资金订单号
     * @return outOrderNo
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "20140216001", value = "商户的授权资金订单号")
  
    public String getOutOrderNo() {
      return outOrderNo;
    }
  
  
    public void setOutOrderNo(String outOrderNo) {
      this.outOrderNo = outOrderNo;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel outRequestNo(String outRequestNo) {
      
      this.outRequestNo = outRequestNo;
      return this;
    }
  
     /**
     * 商户资金操作的请求流水号
     * @return outRequestNo
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "20140216001001", value = "商户资金操作的请求流水号")
  
    public String getOutRequestNo() {
      return outRequestNo;
    }
  
  
    public void setOutRequestNo(String outRequestNo) {
      this.outRequestNo = outRequestNo;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel payerLogonId(String payerLogonId) {
      
      this.payerLogonId = payerLogonId;
      return this;
    }
  
     /**
     * 付款方支付宝账号（Email或手机号），仅作展示使用，默认会加“*”号处理
     * @return payerLogonId
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "ali*@alipay.com", value = "付款方支付宝账号（Email或手机号），仅作展示使用，默认会加“*”号处理")
  
    public String getPayerLogonId() {
      return payerLogonId;
    }
  
  
    public void setPayerLogonId(String payerLogonId) {
      this.payerLogonId = payerLogonId;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel payerOpenId(String payerOpenId) {
      
      this.payerOpenId = payerOpenId;
      return this;
    }
  
     /**
     * 支付宝openId，用户（userId）在应用（appId）下的唯一标识。
     * @return payerOpenId
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "03914IMEfXsS9K-tSvHy-IisrLlOfthFgDVo-hU30XtKPg9", value = "支付宝openId，用户（userId）在应用（appId）下的唯一标识。")
  
    public String getPayerOpenId() {
      return payerOpenId;
    }
  
  
    public void setPayerOpenId(String payerOpenId) {
      this.payerOpenId = payerOpenId;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel payerUserId(String payerUserId) {
      
      this.payerUserId = payerUserId;
      return this;
    }
  
     /**
     * 付款方支付宝账号对应的支付宝唯一用户号，以2088开头的16位纯数字组成
     * @return payerUserId
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "2088402019148643", value = "付款方支付宝账号对应的支付宝唯一用户号，以2088开头的16位纯数字组成")
  
    public String getPayerUserId() {
      return payerUserId;
    }
  
  
    public void setPayerUserId(String payerUserId) {
      this.payerUserId = payerUserId;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel preAuthType(String preAuthType) {
      
      this.preAuthType = preAuthType;
      return this;
    }
  
     /**
     * 预授权类型，信用预授权情况下值为 CREDIT_AUTH，表示该笔预授权为信用预授权，实际没有冻结用户资金；其它情况均不返回该字段。
     * @return preAuthType
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "CREDIT_AUTH", value = "预授权类型，信用预授权情况下值为 CREDIT_AUTH，表示该笔预授权为信用预授权，实际没有冻结用户资金；其它情况均不返回该字段。")
  
    public String getPreAuthType() {
      return preAuthType;
    }
  
  
    public void setPreAuthType(String preAuthType) {
      this.preAuthType = preAuthType;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel remark(String remark) {
      
      this.remark = remark;
      return this;
    }
  
     /**
     * 商户对本次操作的附言描述，长度不超过100个字母或50个汉字
     * @return remark
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "2014-05期解冻200.00元", value = "商户对本次操作的附言描述，长度不超过100个字母或50个汉字")
  
    public String getRemark() {
      return remark;
    }
  
  
    public void setRemark(String remark) {
      this.remark = remark;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel restAmount(String restAmount) {
      
      this.restAmount = restAmount;
      return this;
    }
  
     /**
     * 订单当前剩余冻结金额，单位为：元（人民币）。
     * @return restAmount
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "4600.00", value = "订单当前剩余冻结金额，单位为：元（人民币）。")
  
    public String getRestAmount() {
      return restAmount;
    }
  
  
    public void setRestAmount(String restAmount) {
      this.restAmount = restAmount;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel restCreditAmount(String restCreditAmount) {
      
      this.restCreditAmount = restCreditAmount;
      return this;
    }
  
     /**
     * 剩余冻结信用金额，单位为：元（人民币），精确到小数点后两位
     * @return restCreditAmount
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "0.01", value = "剩余冻结信用金额，单位为：元（人民币），精确到小数点后两位")
  
    public String getRestCreditAmount() {
      return restCreditAmount;
    }
  
  
    public void setRestCreditAmount(String restCreditAmount) {
      this.restCreditAmount = restCreditAmount;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel restFundAmount(String restFundAmount) {
      
      this.restFundAmount = restFundAmount;
      return this;
    }
  
     /**
     * 剩余冻结自有资金金额，单位为：元（人民币），精确到小数点后两位
     * @return restFundAmount
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "0.01", value = "剩余冻结自有资金金额，单位为：元（人民币），精确到小数点后两位")
  
    public String getRestFundAmount() {
      return restFundAmount;
    }
  
  
    public void setRestFundAmount(String restFundAmount) {
      this.restFundAmount = restFundAmount;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel status(String status) {
      
      this.status = status;
      return this;
    }
  
     /**
     * 资金操作流水的状态，  目前支持：   INIT：初始  SUCCESS：成功  CLOSED：关闭
     * @return status
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "SUCCESS", value = "资金操作流水的状态，  目前支持：   INIT：初始  SUCCESS：成功  CLOSED：关闭")
  
    public String getStatus() {
      return status;
    }
  
  
    public void setStatus(String status) {
      this.status = status;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel totalFreezeAmount(String totalFreezeAmount) {
      
      this.totalFreezeAmount = totalFreezeAmount;
      return this;
    }
  
     /**
     * 订单累计的冻结金额，单位为：元（人民币）
     * @return totalFreezeAmount
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "4800.00", value = "订单累计的冻结金额，单位为：元（人民币）")
  
    public String getTotalFreezeAmount() {
      return totalFreezeAmount;
    }
  
  
    public void setTotalFreezeAmount(String totalFreezeAmount) {
      this.totalFreezeAmount = totalFreezeAmount;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel totalFreezeCreditAmount(String totalFreezeCreditAmount) {
      
      this.totalFreezeCreditAmount = totalFreezeCreditAmount;
      return this;
    }
  
     /**
     * 累计冻结信用金额，单位为：元（人民币），精确到小数点后两位
     * @return totalFreezeCreditAmount
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "0.01", value = "累计冻结信用金额，单位为：元（人民币），精确到小数点后两位")
  
    public String getTotalFreezeCreditAmount() {
      return totalFreezeCreditAmount;
    }
  
  
    public void setTotalFreezeCreditAmount(String totalFreezeCreditAmount) {
      this.totalFreezeCreditAmount = totalFreezeCreditAmount;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel totalFreezeFundAmount(String totalFreezeFundAmount) {
      
      this.totalFreezeFundAmount = totalFreezeFundAmount;
      return this;
    }
  
     /**
     * 累计冻结自有资金金额，单位为：元（人民币），精确到小数点后两位
     * @return totalFreezeFundAmount
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "0.01", value = "累计冻结自有资金金额，单位为：元（人民币），精确到小数点后两位")
  
    public String getTotalFreezeFundAmount() {
      return totalFreezeFundAmount;
    }
  
  
    public void setTotalFreezeFundAmount(String totalFreezeFundAmount) {
      this.totalFreezeFundAmount = totalFreezeFundAmount;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel totalPayAmount(String totalPayAmount) {
      
      this.totalPayAmount = totalPayAmount;
      return this;
    }
  
     /**
     * 订单累计用于支付的金额，单位为：元（人民币）
     * @return totalPayAmount
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "0.00", value = "订单累计用于支付的金额，单位为：元（人民币）")
  
    public String getTotalPayAmount() {
      return totalPayAmount;
    }
  
  
    public void setTotalPayAmount(String totalPayAmount) {
      this.totalPayAmount = totalPayAmount;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel totalPayCreditAmount(String totalPayCreditAmount) {
      
      this.totalPayCreditAmount = totalPayCreditAmount;
      return this;
    }
  
     /**
     * 累计支付信用金额，单位为：元（人民币），精确到小数点后两位
     * @return totalPayCreditAmount
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "0.01", value = "累计支付信用金额，单位为：元（人民币），精确到小数点后两位")
  
    public String getTotalPayCreditAmount() {
      return totalPayCreditAmount;
    }
  
  
    public void setTotalPayCreditAmount(String totalPayCreditAmount) {
      this.totalPayCreditAmount = totalPayCreditAmount;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel totalPayFundAmount(String totalPayFundAmount) {
      
      this.totalPayFundAmount = totalPayFundAmount;
      return this;
    }
  
     /**
     * 累计支付自有资金金额，单位为：元（人民币），精确到小数点后两位
     * @return totalPayFundAmount
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "0.01", value = "累计支付自有资金金额，单位为：元（人民币），精确到小数点后两位")
  
    public String getTotalPayFundAmount() {
      return totalPayFundAmount;
    }
  
  
    public void setTotalPayFundAmount(String totalPayFundAmount) {
      this.totalPayFundAmount = totalPayFundAmount;
    }
  
  
    public AlipayFundAuthOperationDetailQueryResponseModel transCurrency(String transCurrency) {
      
      this.transCurrency = transCurrency;
      return this;
    }
  
     /**
     * 标价币种,  amount 对应的币种单位。支持澳元：AUD, 新西兰元：NZD, 台币：TWD, 美元：USD, 欧元：EUR, 英镑：GBP
     * @return transCurrency
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "USD", value = "标价币种,  amount 对应的币种单位。支持澳元：AUD, 新西兰元：NZD, 台币：TWD, 美元：USD, 欧元：EUR, 英镑：GBP")
  
    public String getTransCurrency() {
      return transCurrency;
    }
  
  
    public void setTransCurrency(String transCurrency) {
      this.transCurrency = transCurrency;
    }
  
    /**
     * A container for additional, undeclared properties.
     * This is a holder for any undeclared properties as specified with
     * the 'additionalProperties' keyword in the OAS document.
     */
    private Map<String, Object> additionalProperties;
  
    /**
     * Set the additional (undeclared) property with the specified name and value.
     * If the property does not already exist, create it otherwise replace it.
     *
     * @param key name of the property
     * @param value value of the property
     * @return the AlipayFundAuthOperationDetailQueryResponseModel instance itself
     */
    public AlipayFundAuthOperationDetailQueryResponseModel putAdditionalProperty(String key, Object value) {
      if (this.additionalProperties == null) {
          this.additionalProperties = new HashMap<String, Object>();
      }
      this.additionalProperties.put(key, value);
      return this;
    }
  
    /**
     * Return the additional (undeclared) property.
     *
     * @return a map of objects
     */
    public Map<String, Object> getAdditionalProperties() {
      return additionalProperties;
    }
  
    /**
     * Return the additional (undeclared) property with the specified name.
     *
     * @param key name of the property
     * @return an object
     */
    public Object getAdditionalProperty(String key) {
      if (this.additionalProperties == null) {
          return null;
      }
      return this.additionalProperties.get(key);
    }
  
  
    @Override
    public boolean equals(Object o) {
      if (this == o) {
        return true;
      }
      if (o == null || getClass() != o.getClass()) {
        return false;
      }
      AlipayFundAuthOperationDetailQueryResponseModel alipayFundAuthOperationDetailQueryResponseModel = (AlipayFundAuthOperationDetailQueryResponseModel) o;
      return Objects.equals(this.amount, alipayFundAuthOperationDetailQueryResponseModel.amount) &&
          Objects.equals(this.authNo, alipayFundAuthOperationDetailQueryResponseModel.authNo) &&
          Objects.equals(this.creditAmount, alipayFundAuthOperationDetailQueryResponseModel.creditAmount) &&
          Objects.equals(this.creditMerchantExt, alipayFundAuthOperationDetailQueryResponseModel.creditMerchantExt) &&
          Objects.equals(this.creditRiskInfo, alipayFundAuthOperationDetailQueryResponseModel.creditRiskInfo) &&
          Objects.equals(this.enterprisePayInfo, alipayFundAuthOperationDetailQueryResponseModel.enterprisePayInfo) &&
          Objects.equals(this.extraParam, alipayFundAuthOperationDetailQueryResponseModel.extraParam) &&
          Objects.equals(this.fundAmount, alipayFundAuthOperationDetailQueryResponseModel.fundAmount) &&
          Objects.equals(this.gmtCreate, alipayFundAuthOperationDetailQueryResponseModel.gmtCreate) &&
          Objects.equals(this.gmtTrans, alipayFundAuthOperationDetailQueryResponseModel.gmtTrans) &&
          Objects.equals(this.operationId, alipayFundAuthOperationDetailQueryResponseModel.operationId) &&
          Objects.equals(this.operationType, alipayFundAuthOperationDetailQueryResponseModel.operationType) &&
          Objects.equals(this.orderStatus, alipayFundAuthOperationDetailQueryResponseModel.orderStatus) &&
          Objects.equals(this.orderTitle, alipayFundAuthOperationDetailQueryResponseModel.orderTitle) &&
          Objects.equals(this.outOrderNo, alipayFundAuthOperationDetailQueryResponseModel.outOrderNo) &&
          Objects.equals(this.outRequestNo, alipayFundAuthOperationDetailQueryResponseModel.outRequestNo) &&
          Objects.equals(this.payerLogonId, alipayFundAuthOperationDetailQueryResponseModel.payerLogonId) &&
          Objects.equals(this.payerOpenId, alipayFundAuthOperationDetailQueryResponseModel.payerOpenId) &&
          Objects.equals(this.payerUserId, alipayFundAuthOperationDetailQueryResponseModel.payerUserId) &&
          Objects.equals(this.preAuthType, alipayFundAuthOperationDetailQueryResponseModel.preAuthType) &&
          Objects.equals(this.remark, alipayFundAuthOperationDetailQueryResponseModel.remark) &&
          Objects.equals(this.restAmount, alipayFundAuthOperationDetailQueryResponseModel.restAmount) &&
          Objects.equals(this.restCreditAmount, alipayFundAuthOperationDetailQueryResponseModel.restCreditAmount) &&
          Objects.equals(this.restFundAmount, alipayFundAuthOperationDetailQueryResponseModel.restFundAmount) &&
          Objects.equals(this.status, alipayFundAuthOperationDetailQueryResponseModel.status) &&
          Objects.equals(this.totalFreezeAmount, alipayFundAuthOperationDetailQueryResponseModel.totalFreezeAmount) &&
          Objects.equals(this.totalFreezeCreditAmount, alipayFundAuthOperationDetailQueryResponseModel.totalFreezeCreditAmount) &&
          Objects.equals(this.totalFreezeFundAmount, alipayFundAuthOperationDetailQueryResponseModel.totalFreezeFundAmount) &&
          Objects.equals(this.totalPayAmount, alipayFundAuthOperationDetailQueryResponseModel.totalPayAmount) &&
          Objects.equals(this.totalPayCreditAmount, alipayFundAuthOperationDetailQueryResponseModel.totalPayCreditAmount) &&
          Objects.equals(this.totalPayFundAmount, alipayFundAuthOperationDetailQueryResponseModel.totalPayFundAmount) &&
          Objects.equals(this.transCurrency, alipayFundAuthOperationDetailQueryResponseModel.transCurrency)&&
          Objects.equals(this.additionalProperties, alipayFundAuthOperationDetailQueryResponseModel.additionalProperties);
    }
  
    @Override
    public int hashCode() {
      return Objects.hash(amount, authNo, creditAmount, creditMerchantExt, creditRiskInfo, enterprisePayInfo, extraParam, fundAmount, gmtCreate, gmtTrans, operationId, operationType, orderStatus, orderTitle, outOrderNo, outRequestNo, payerLogonId, payerOpenId, payerUserId, preAuthType, remark, restAmount, restCreditAmount, restFundAmount, status, totalFreezeAmount, totalFreezeCreditAmount, totalFreezeFundAmount, totalPayAmount, totalPayCreditAmount, totalPayFundAmount, transCurrency, additionalProperties);
    }
  
    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append("class AlipayFundAuthOperationDetailQueryResponseModel {\n");
      sb.append("    amount: ").append(toIndentedString(amount)).append("\n");
      sb.append("    authNo: ").append(toIndentedString(authNo)).append("\n");
      sb.append("    creditAmount: ").append(toIndentedString(creditAmount)).append("\n");
      sb.append("    creditMerchantExt: ").append(toIndentedString(creditMerchantExt)).append("\n");
      sb.append("    creditRiskInfo: ").append(toIndentedString(creditRiskInfo)).append("\n");
      sb.append("    enterprisePayInfo: ").append(toIndentedString(enterprisePayInfo)).append("\n");
      sb.append("    extraParam: ").append(toIndentedString(extraParam)).append("\n");
      sb.append("    fundAmount: ").append(toIndentedString(fundAmount)).append("\n");
      sb.append("    gmtCreate: ").append(toIndentedString(gmtCreate)).append("\n");
      sb.append("    gmtTrans: ").append(toIndentedString(gmtTrans)).append("\n");
      sb.append("    operationId: ").append(toIndentedString(operationId)).append("\n");
      sb.append("    operationType: ").append(toIndentedString(operationType)).append("\n");
      sb.append("    orderStatus: ").append(toIndentedString(orderStatus)).append("\n");
      sb.append("    orderTitle: ").append(toIndentedString(orderTitle)).append("\n");
      sb.append("    outOrderNo: ").append(toIndentedString(outOrderNo)).append("\n");
      sb.append("    outRequestNo: ").append(toIndentedString(outRequestNo)).append("\n");
      sb.append("    payerLogonId: ").append(toIndentedString(payerLogonId)).append("\n");
      sb.append("    payerOpenId: ").append(toIndentedString(payerOpenId)).append("\n");
      sb.append("    payerUserId: ").append(toIndentedString(payerUserId)).append("\n");
      sb.append("    preAuthType: ").append(toIndentedString(preAuthType)).append("\n");
      sb.append("    remark: ").append(toIndentedString(remark)).append("\n");
      sb.append("    restAmount: ").append(toIndentedString(restAmount)).append("\n");
      sb.append("    restCreditAmount: ").append(toIndentedString(restCreditAmount)).append("\n");
      sb.append("    restFundAmount: ").append(toIndentedString(restFundAmount)).append("\n");
      sb.append("    status: ").append(toIndentedString(status)).append("\n");
      sb.append("    totalFreezeAmount: ").append(toIndentedString(totalFreezeAmount)).append("\n");
      sb.append("    totalFreezeCreditAmount: ").append(toIndentedString(totalFreezeCreditAmount)).append("\n");
      sb.append("    totalFreezeFundAmount: ").append(toIndentedString(totalFreezeFundAmount)).append("\n");
      sb.append("    totalPayAmount: ").append(toIndentedString(totalPayAmount)).append("\n");
      sb.append("    totalPayCreditAmount: ").append(toIndentedString(totalPayCreditAmount)).append("\n");
      sb.append("    totalPayFundAmount: ").append(toIndentedString(totalPayFundAmount)).append("\n");
      sb.append("    transCurrency: ").append(toIndentedString(transCurrency)).append("\n");
      sb.append("    additionalProperties: ").append(toIndentedString(additionalProperties)).append("\n");
      sb.append("}");
      return sb.toString();
    }
  
    /**
     * Convert the given object to string with each line indented by 4 spaces
     * (except the first line).
     */
    private String toIndentedString(Object o) {
      if (o == null) {
        return "null";
      }
      return o.toString().replace("\n", "\n    ");
    }
  
  
    public static HashSet<String> openapiFields;
    public static HashSet<String> openapiRequiredFields;
  
    static {
      // a set of all properties/fields (JSON key names)
      openapiFields = new HashSet<String>();
      openapiFields.add("amount");
      openapiFields.add("auth_no");
      openapiFields.add("credit_amount");
      openapiFields.add("credit_merchant_ext");
      openapiFields.add("credit_risk_info");
      openapiFields.add("enterprise_pay_info");
      openapiFields.add("extra_param");
      openapiFields.add("fund_amount");
      openapiFields.add("gmt_create");
      openapiFields.add("gmt_trans");
      openapiFields.add("operation_id");
      openapiFields.add("operation_type");
      openapiFields.add("order_status");
      openapiFields.add("order_title");
      openapiFields.add("out_order_no");
      openapiFields.add("out_request_no");
      openapiFields.add("payer_logon_id");
      openapiFields.add("payer_open_id");
      openapiFields.add("payer_user_id");
      openapiFields.add("pre_auth_type");
      openapiFields.add("remark");
      openapiFields.add("rest_amount");
      openapiFields.add("rest_credit_amount");
      openapiFields.add("rest_fund_amount");
      openapiFields.add("status");
      openapiFields.add("total_freeze_amount");
      openapiFields.add("total_freeze_credit_amount");
      openapiFields.add("total_freeze_fund_amount");
      openapiFields.add("total_pay_amount");
      openapiFields.add("total_pay_credit_amount");
      openapiFields.add("total_pay_fund_amount");
      openapiFields.add("trans_currency");
  
      // a set of required properties/fields (JSON key names)
      openapiRequiredFields = new HashSet<String>();
    }
  
   /**
    * Validates the JSON Object and throws an exception if issues found
    *
    * @param jsonObj JSON Object
    * @throws IOException if the JSON Object is invalid with respect to AlipayFundAuthOperationDetailQueryResponseModel
    */
    public static void validateJsonObject(JsonObject jsonObj) throws IOException {
        if (jsonObj == null) {
          if (AlipayFundAuthOperationDetailQueryResponseModel.openapiRequiredFields.isEmpty()) {
            return;
          } else { // has required fields
            throw new IllegalArgumentException(String.format("The required field(s) %s in AlipayFundAuthOperationDetailQueryResponseModel is not found in the empty JSON string", AlipayFundAuthOperationDetailQueryResponseModel.openapiRequiredFields.toString()));
          }
        }
        if (jsonObj.get("amount") != null && !jsonObj.get("amount").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `amount` to be a primitive type in the JSON string but got `%s`", jsonObj.get("amount").toString()));
        }
        if (jsonObj.get("auth_no") != null && !jsonObj.get("auth_no").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `auth_no` to be a primitive type in the JSON string but got `%s`", jsonObj.get("auth_no").toString()));
        }
        if (jsonObj.get("credit_amount") != null && !jsonObj.get("credit_amount").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `credit_amount` to be a primitive type in the JSON string but got `%s`", jsonObj.get("credit_amount").toString()));
        }
        if (jsonObj.get("credit_merchant_ext") != null && !jsonObj.get("credit_merchant_ext").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `credit_merchant_ext` to be a primitive type in the JSON string but got `%s`", jsonObj.get("credit_merchant_ext").toString()));
        }
        // validate the optional field `credit_risk_info`
        if (jsonObj.getAsJsonObject("credit_risk_info") != null) {
          CreditRiskInfo.validateJsonObject(jsonObj.getAsJsonObject("credit_risk_info"));
        }
        if (jsonObj.get("enterprise_pay_info") != null && !jsonObj.get("enterprise_pay_info").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `enterprise_pay_info` to be a primitive type in the JSON string but got `%s`", jsonObj.get("enterprise_pay_info").toString()));
        }
        if (jsonObj.get("extra_param") != null && !jsonObj.get("extra_param").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `extra_param` to be a primitive type in the JSON string but got `%s`", jsonObj.get("extra_param").toString()));
        }
        if (jsonObj.get("fund_amount") != null && !jsonObj.get("fund_amount").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `fund_amount` to be a primitive type in the JSON string but got `%s`", jsonObj.get("fund_amount").toString()));
        }
        if (jsonObj.get("gmt_create") != null && !jsonObj.get("gmt_create").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `gmt_create` to be a primitive type in the JSON string but got `%s`", jsonObj.get("gmt_create").toString()));
        }
        if (jsonObj.get("gmt_trans") != null && !jsonObj.get("gmt_trans").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `gmt_trans` to be a primitive type in the JSON string but got `%s`", jsonObj.get("gmt_trans").toString()));
        }
        if (jsonObj.get("operation_id") != null && !jsonObj.get("operation_id").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `operation_id` to be a primitive type in the JSON string but got `%s`", jsonObj.get("operation_id").toString()));
        }
        if (jsonObj.get("operation_type") != null && !jsonObj.get("operation_type").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `operation_type` to be a primitive type in the JSON string but got `%s`", jsonObj.get("operation_type").toString()));
        }
        if (jsonObj.get("order_status") != null && !jsonObj.get("order_status").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `order_status` to be a primitive type in the JSON string but got `%s`", jsonObj.get("order_status").toString()));
        }
        if (jsonObj.get("order_title") != null && !jsonObj.get("order_title").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `order_title` to be a primitive type in the JSON string but got `%s`", jsonObj.get("order_title").toString()));
        }
        if (jsonObj.get("out_order_no") != null && !jsonObj.get("out_order_no").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `out_order_no` to be a primitive type in the JSON string but got `%s`", jsonObj.get("out_order_no").toString()));
        }
        if (jsonObj.get("out_request_no") != null && !jsonObj.get("out_request_no").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `out_request_no` to be a primitive type in the JSON string but got `%s`", jsonObj.get("out_request_no").toString()));
        }
        if (jsonObj.get("payer_logon_id") != null && !jsonObj.get("payer_logon_id").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `payer_logon_id` to be a primitive type in the JSON string but got `%s`", jsonObj.get("payer_logon_id").toString()));
        }
        if (jsonObj.get("payer_open_id") != null && !jsonObj.get("payer_open_id").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `payer_open_id` to be a primitive type in the JSON string but got `%s`", jsonObj.get("payer_open_id").toString()));
        }
        if (jsonObj.get("payer_user_id") != null && !jsonObj.get("payer_user_id").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `payer_user_id` to be a primitive type in the JSON string but got `%s`", jsonObj.get("payer_user_id").toString()));
        }
        if (jsonObj.get("pre_auth_type") != null && !jsonObj.get("pre_auth_type").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `pre_auth_type` to be a primitive type in the JSON string but got `%s`", jsonObj.get("pre_auth_type").toString()));
        }
        if (jsonObj.get("remark") != null && !jsonObj.get("remark").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `remark` to be a primitive type in the JSON string but got `%s`", jsonObj.get("remark").toString()));
        }
        if (jsonObj.get("rest_amount") != null && !jsonObj.get("rest_amount").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `rest_amount` to be a primitive type in the JSON string but got `%s`", jsonObj.get("rest_amount").toString()));
        }
        if (jsonObj.get("rest_credit_amount") != null && !jsonObj.get("rest_credit_amount").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `rest_credit_amount` to be a primitive type in the JSON string but got `%s`", jsonObj.get("rest_credit_amount").toString()));
        }
        if (jsonObj.get("rest_fund_amount") != null && !jsonObj.get("rest_fund_amount").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `rest_fund_amount` to be a primitive type in the JSON string but got `%s`", jsonObj.get("rest_fund_amount").toString()));
        }
        if (jsonObj.get("status") != null && !jsonObj.get("status").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `status` to be a primitive type in the JSON string but got `%s`", jsonObj.get("status").toString()));
        }
        if (jsonObj.get("total_freeze_amount") != null && !jsonObj.get("total_freeze_amount").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `total_freeze_amount` to be a primitive type in the JSON string but got `%s`", jsonObj.get("total_freeze_amount").toString()));
        }
        if (jsonObj.get("total_freeze_credit_amount") != null && !jsonObj.get("total_freeze_credit_amount").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `total_freeze_credit_amount` to be a primitive type in the JSON string but got `%s`", jsonObj.get("total_freeze_credit_amount").toString()));
        }
        if (jsonObj.get("total_freeze_fund_amount") != null && !jsonObj.get("total_freeze_fund_amount").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `total_freeze_fund_amount` to be a primitive type in the JSON string but got `%s`", jsonObj.get("total_freeze_fund_amount").toString()));
        }
        if (jsonObj.get("total_pay_amount") != null && !jsonObj.get("total_pay_amount").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `total_pay_amount` to be a primitive type in the JSON string but got `%s`", jsonObj.get("total_pay_amount").toString()));
        }
        if (jsonObj.get("total_pay_credit_amount") != null && !jsonObj.get("total_pay_credit_amount").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `total_pay_credit_amount` to be a primitive type in the JSON string but got `%s`", jsonObj.get("total_pay_credit_amount").toString()));
        }
        if (jsonObj.get("total_pay_fund_amount") != null && !jsonObj.get("total_pay_fund_amount").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `total_pay_fund_amount` to be a primitive type in the JSON string but got `%s`", jsonObj.get("total_pay_fund_amount").toString()));
        }
        if (jsonObj.get("trans_currency") != null && !jsonObj.get("trans_currency").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `trans_currency` to be a primitive type in the JSON string but got `%s`", jsonObj.get("trans_currency").toString()));
        }
    }
  
    public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
      @SuppressWarnings("unchecked")
      @Override
      public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
         if (!AlipayFundAuthOperationDetailQueryResponseModel.class.isAssignableFrom(type.getRawType())) {
           return null; // this class only serializes 'AlipayFundAuthOperationDetailQueryResponseModel' and its subtypes
         }
         final TypeAdapter<JsonElement> elementAdapter = gson.getAdapter(JsonElement.class);
         final TypeAdapter<AlipayFundAuthOperationDetailQueryResponseModel> thisAdapter
                          = gson.getDelegateAdapter(this, TypeToken.get(AlipayFundAuthOperationDetailQueryResponseModel.class));
  
         return (TypeAdapter<T>) new TypeAdapter<AlipayFundAuthOperationDetailQueryResponseModel>() {
             @Override
             public void write(JsonWriter out, AlipayFundAuthOperationDetailQueryResponseModel value) throws IOException {
               JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject();
               obj.remove("additionalProperties");
               // serialize additonal properties
               if (value.getAdditionalProperties() != null) {
                 for (Map.Entry<String, Object> entry : value.getAdditionalProperties().entrySet()) {
                   if (entry.getValue() instanceof String)
                     obj.addProperty(entry.getKey(), (String) entry.getValue());
                   else if (entry.getValue() instanceof Number)
                     obj.addProperty(entry.getKey(), (Number) entry.getValue());
                   else if (entry.getValue() instanceof Boolean)
                     obj.addProperty(entry.getKey(), (Boolean) entry.getValue());
                   else if (entry.getValue() instanceof Character)
                     obj.addProperty(entry.getKey(), (Character) entry.getValue());
                   else {
                     obj.add(entry.getKey(), gson.toJsonTree(entry.getValue()).getAsJsonObject());
                   }
                 }
               }
               elementAdapter.write(out, obj);
             }
  
             @Override
             public AlipayFundAuthOperationDetailQueryResponseModel read(JsonReader in) throws IOException {
               JsonObject jsonObj = elementAdapter.read(in).getAsJsonObject();
               validateJsonObject(jsonObj);
               // store additional fields in the deserialized instance
               AlipayFundAuthOperationDetailQueryResponseModel instance = thisAdapter.fromJsonTree(jsonObj);
               for (Map.Entry<String, JsonElement> entry : jsonObj.entrySet()) {
                 if (!openapiFields.contains(entry.getKey())) {
                   if (entry.getValue().isJsonPrimitive()) { // primitive type
                     if (entry.getValue().getAsJsonPrimitive().isString())
                       instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsString());
                     else if (entry.getValue().getAsJsonPrimitive().isNumber())
                       instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsNumber());
                     else if (entry.getValue().getAsJsonPrimitive().isBoolean())
                       instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsBoolean());
                     else
                       throw new IllegalArgumentException(String.format("The field `%s` has unknown primitive type. Value: %s", entry.getKey(), entry.getValue().toString()));
                   } else { // non-primitive type
                     instance.putAdditionalProperty(entry.getKey(), gson.fromJson(entry.getValue(), HashMap.class));
                   }
                 }
               }
               return instance;
             }
  
         }.nullSafe();
      }
    }
  
   /**
    * Create an instance of AlipayFundAuthOperationDetailQueryResponseModel given an JSON string
    *
    * @param jsonString JSON string
    * @return An instance of AlipayFundAuthOperationDetailQueryResponseModel
    * @throws IOException if the JSON string is invalid with respect to AlipayFundAuthOperationDetailQueryResponseModel
    */
    public static AlipayFundAuthOperationDetailQueryResponseModel fromJson(String jsonString) throws IOException {
      return JSON.getGson().fromJson(jsonString, AlipayFundAuthOperationDetailQueryResponseModel.class);
    }
  
   /**
    * Convert an instance of AlipayFundAuthOperationDetailQueryResponseModel to an JSON string
    *
    * @return JSON string
    */
    public String toJson() {
      return JSON.getGson().toJson(this);
    }
  }
  
  