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.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 java.util.ArrayList;
  import java.util.List;
  
  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;
  
  /**
   * AlipayOpenAgentCommonSignModel
   */
  @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
  public class AlipayOpenAgentCommonSignModel {
    public static final String SERIALIZED_NAME_ALIPAY_LIFE_NAME = "alipay_life_name";
    @SerializedName(SERIALIZED_NAME_ALIPAY_LIFE_NAME)
    private String alipayLifeName;
  
    public static final String SERIALIZED_NAME_APP_MARKET = "app_market";
    @SerializedName(SERIALIZED_NAME_APP_MARKET)
    private String appMarket;
  
    public static final String SERIALIZED_NAME_APP_NAME = "app_name";
    @SerializedName(SERIALIZED_NAME_APP_NAME)
    private String appName;
  
    public static final String SERIALIZED_NAME_APP_STATUS = "app_status";
    @SerializedName(SERIALIZED_NAME_APP_STATUS)
    private String appStatus;
  
    public static final String SERIALIZED_NAME_APP_TEST_ACCOUNT = "app_test_account";
    @SerializedName(SERIALIZED_NAME_APP_TEST_ACCOUNT)
    private String appTestAccount;
  
    public static final String SERIALIZED_NAME_APP_TEST_ACCOUNT_PASSWORD = "app_test_account_password";
    @SerializedName(SERIALIZED_NAME_APP_TEST_ACCOUNT_PASSWORD)
    private String appTestAccountPassword;
  
    public static final String SERIALIZED_NAME_BATCH_NO = "batch_no";
    @SerializedName(SERIALIZED_NAME_BATCH_NO)
    private String batchNo;
  
    public static final String SERIALIZED_NAME_BUSINESS_LICENSE_NO = "business_license_no";
    @SerializedName(SERIALIZED_NAME_BUSINESS_LICENSE_NO)
    private String businessLicenseNo;
  
    public static final String SERIALIZED_NAME_DATE_LIMITATION = "date_limitation";
    @SerializedName(SERIALIZED_NAME_DATE_LIMITATION)
    private String dateLimitation;
  
    public static final String SERIALIZED_NAME_DOWNLOAD_LINK = "download_link";
    @SerializedName(SERIALIZED_NAME_DOWNLOAD_LINK)
    private String downloadLink;
  
    public static final String SERIALIZED_NAME_H5_MEMO = "h_5_memo";
    @SerializedName(SERIALIZED_NAME_H5_MEMO)
    private String h5Memo;
  
    public static final String SERIALIZED_NAME_H5_SITES = "h_5_sites";
    @SerializedName(SERIALIZED_NAME_H5_SITES)
    private String h5Sites;
  
    public static final String SERIALIZED_NAME_H5_STATUS = "h_5_status";
    @SerializedName(SERIALIZED_NAME_H5_STATUS)
    private String h5Status;
  
    public static final String SERIALIZED_NAME_LIFE_APP_ID = "life_app_id";
    @SerializedName(SERIALIZED_NAME_LIFE_APP_ID)
    private String lifeAppId;
  
    public static final String SERIALIZED_NAME_LONG_TERM = "long_term";
    @SerializedName(SERIALIZED_NAME_LONG_TERM)
    private Boolean longTerm;
  
    public static final String SERIALIZED_NAME_MCC_CODE = "mcc_code";
    @SerializedName(SERIALIZED_NAME_MCC_CODE)
    private String mccCode;
  
    public static final String SERIALIZED_NAME_MINI_APP_ID = "mini_app_id";
    @SerializedName(SERIALIZED_NAME_MINI_APP_ID)
    private String miniAppId;
  
    public static final String SERIALIZED_NAME_MINI_APP_NAME = "mini_app_name";
    @SerializedName(SERIALIZED_NAME_MINI_APP_NAME)
    private String miniAppName;
  
    public static final String SERIALIZED_NAME_MOBILE_TYPE = "mobile_type";
    @SerializedName(SERIALIZED_NAME_MOBILE_TYPE)
    private String mobileType;
  
    public static final String SERIALIZED_NAME_PRODUCT_CODE = "product_code";
    @SerializedName(SERIALIZED_NAME_PRODUCT_CODE)
    private String productCode;
  
    public static final String SERIALIZED_NAME_RATE = "rate";
    @SerializedName(SERIALIZED_NAME_RATE)
    private String rate;
  
    public static final String SERIALIZED_NAME_SHOP_CITY_CODE = "shop_city_code";
    @SerializedName(SERIALIZED_NAME_SHOP_CITY_CODE)
    private String shopCityCode;
  
    public static final String SERIALIZED_NAME_SHOP_DETAIL_ADDRESS = "shop_detail_address";
    @SerializedName(SERIALIZED_NAME_SHOP_DETAIL_ADDRESS)
    private String shopDetailAddress;
  
    public static final String SERIALIZED_NAME_SHOP_DISTRICT_CODE = "shop_district_code";
    @SerializedName(SERIALIZED_NAME_SHOP_DISTRICT_CODE)
    private String shopDistrictCode;
  
    public static final String SERIALIZED_NAME_SHOP_NAME = "shop_name";
    @SerializedName(SERIALIZED_NAME_SHOP_NAME)
    private String shopName;
  
    public static final String SERIALIZED_NAME_SHOP_PROVINCE_CODE = "shop_province_code";
    @SerializedName(SERIALIZED_NAME_SHOP_PROVINCE_CODE)
    private String shopProvinceCode;
  
    public static final String SERIALIZED_NAME_SPECIAL_LICENSE_TYPE = "special_license_type";
    @SerializedName(SERIALIZED_NAME_SPECIAL_LICENSE_TYPE)
    private String specialLicenseType;
  
    public static final String SERIALIZED_NAME_TRADE_SCENE = "trade_scene";
    @SerializedName(SERIALIZED_NAME_TRADE_SCENE)
    private String tradeScene;
  
    public static final String SERIALIZED_NAME_WEB_SITES = "web_sites";
    @SerializedName(SERIALIZED_NAME_WEB_SITES)
    private List<String> webSites = null;
  
    public static final String SERIALIZED_NAME_WEB_STATUS = "web_status";
    @SerializedName(SERIALIZED_NAME_WEB_STATUS)
    private String webStatus;
  
    public static final String SERIALIZED_NAME_WEB_TEST_ACCOUNT = "web_test_account";
    @SerializedName(SERIALIZED_NAME_WEB_TEST_ACCOUNT)
    private String webTestAccount;
  
    public static final String SERIALIZED_NAME_WEB_TEST_ACCOUNT_PASSWORD = "web_test_account_password";
    @SerializedName(SERIALIZED_NAME_WEB_TEST_ACCOUNT_PASSWORD)
    private String webTestAccountPassword;
  
    public static final String SERIALIZED_NAME_WECHAT_OFFICIAL_ACCOUNT_NAME = "wechat_official_account_name";
    @SerializedName(SERIALIZED_NAME_WECHAT_OFFICIAL_ACCOUNT_NAME)
    private String wechatOfficialAccountName;
  
    public AlipayOpenAgentCommonSignModel() { 
    }
  
    public AlipayOpenAgentCommonSignModel alipayLifeName(String alipayLifeName) {
      
      this.alipayLifeName = alipayLifeName;
      return this;
    }
  
     /**
     * 支付宝生活号(原服务窗)名称（1 app_name、app_demo；2 web_sites；3 alipay_life_name。1、2、3少选择一个填写）
     * @return alipayLifeName
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "杭州xx报社", value = "支付宝生活号(原服务窗)名称（1 app_name、app_demo；2 web_sites；3 alipay_life_name。1、2、3少选择一个填写）")
  
    public String getAlipayLifeName() {
      return alipayLifeName;
    }
  
  
    public void setAlipayLifeName(String alipayLifeName) {
      this.alipayLifeName = alipayLifeName;
    }
  
  
    public AlipayOpenAgentCommonSignModel appMarket(String appMarket) {
      
      this.appMarket = appMarket;
      return this;
    }
  
     /**
     * 投放应用市场
     * @return appMarket
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "豌豆荚", value = "投放应用市场")
  
    public String getAppMarket() {
      return appMarket;
    }
  
  
    public void setAppMarket(String appMarket) {
      this.appMarket = appMarket;
    }
  
  
    public AlipayOpenAgentCommonSignModel appName(String appName) {
      
      this.appName = appName;
      return this;
    }
  
     /**
     * 商户的APP应用名称（1 app_name、app_demo；2 web_sites；3 alipay_life_name；4 wechat_official_account_name。1、2、3、4至少选择一个填写）
     * @return appName
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "应用名称", value = "商户的APP应用名称（1 app_name、app_demo；2 web_sites；3 alipay_life_name；4 wechat_official_account_name。1、2、3、4至少选择一个填写）")
  
    public String getAppName() {
      return appName;
    }
  
  
    public void setAppName(String appName) {
      this.appName = appName;
    }
  
  
    public AlipayOpenAgentCommonSignModel appStatus(String appStatus) {
      
      this.appStatus = appStatus;
      return this;
    }
  
     /**
     * 应用状态
     * @return appStatus
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "ONLINE", value = "应用状态")
  
    public String getAppStatus() {
      return appStatus;
    }
  
  
    public void setAppStatus(String appStatus) {
      this.appStatus = appStatus;
    }
  
  
    public AlipayOpenAgentCommonSignModel appTestAccount(String appTestAccount) {
      
      this.appTestAccount = appTestAccount;
      return this;
    }
  
     /**
     * 可以登录该应用的测试账户
     * @return appTestAccount
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "testAccount", value = "可以登录该应用的测试账户")
  
    public String getAppTestAccount() {
      return appTestAccount;
    }
  
  
    public void setAppTestAccount(String appTestAccount) {
      this.appTestAccount = appTestAccount;
    }
  
  
    public AlipayOpenAgentCommonSignModel appTestAccountPassword(String appTestAccountPassword) {
      
      this.appTestAccountPassword = appTestAccountPassword;
      return this;
    }
  
     /**
     * 可以登录此应用的账户的密码。对app_test_account的登录密码。
     * @return appTestAccountPassword
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "testPassword", value = "可以登录此应用的账户的密码。对app_test_account的登录密码。")
  
    public String getAppTestAccountPassword() {
      return appTestAccountPassword;
    }
  
  
    public void setAppTestAccountPassword(String appTestAccountPassword) {
      this.appTestAccountPassword = appTestAccountPassword;
    }
  
  
    public AlipayOpenAgentCommonSignModel batchNo(String batchNo) {
      
      this.batchNo = batchNo;
      return this;
    }
  
     /**
     * 代商户操作事务编号，通过alipay.open.agent.create接口进行创建。
     * @return batchNo
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "2020062409585609100024230", value = "代商户操作事务编号，通过alipay.open.agent.create接口进行创建。")
  
    public String getBatchNo() {
      return batchNo;
    }
  
  
    public void setBatchNo(String batchNo) {
      this.batchNo = batchNo;
    }
  
  
    public AlipayOpenAgentCommonSignModel businessLicenseNo(String businessLicenseNo) {
      
      this.businessLicenseNo = businessLicenseNo;
      return this;
    }
  
     /**
     * 营业执照号码
     * @return businessLicenseNo
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "1532501100006302", value = "营业执照号码")
  
    public String getBusinessLicenseNo() {
      return businessLicenseNo;
    }
  
  
    public void setBusinessLicenseNo(String businessLicenseNo) {
      this.businessLicenseNo = businessLicenseNo;
    }
  
  
    public AlipayOpenAgentCommonSignModel dateLimitation(String dateLimitation) {
      
      this.dateLimitation = dateLimitation;
      return this;
    }
  
     /**
     * 营业期限
     * @return dateLimitation
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "2017-11-11", value = "营业期限")
  
    public String getDateLimitation() {
      return dateLimitation;
    }
  
  
    public void setDateLimitation(String dateLimitation) {
      this.dateLimitation = dateLimitation;
    }
  
  
    public AlipayOpenAgentCommonSignModel downloadLink(String downloadLink) {
      
      this.downloadLink = downloadLink;
      return this;
    }
  
     /**
     * 应用下载链接
     * @return downloadLink
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "http://demo.com/demo.apk", value = "应用下载链接")
  
    public String getDownloadLink() {
      return downloadLink;
    }
  
  
    public void setDownloadLink(String downloadLink) {
      this.downloadLink = downloadLink;
    }
  
  
    public AlipayOpenAgentCommonSignModel h5Memo(String h5Memo) {
      
      this.h5Memo = h5Memo;
      return this;
    }
  
     /**
     * 网站扩展信息文本
     * @return h5Memo
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "相关备注信息", value = "网站扩展信息文本")
  
    public String getH5Memo() {
      return h5Memo;
    }
  
  
    public void setH5Memo(String h5Memo) {
      this.h5Memo = h5Memo;
    }
  
  
    public AlipayOpenAgentCommonSignModel h5Sites(String h5Sites) {
      
      this.h5Sites = h5Sites;
      return this;
    }
  
     /**
     * H5网站地址
     * @return h5Sites
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "www.h5.com", value = "H5网站地址")
  
    public String getH5Sites() {
      return h5Sites;
    }
  
  
    public void setH5Sites(String h5Sites) {
      this.h5Sites = h5Sites;
    }
  
  
    public AlipayOpenAgentCommonSignModel h5Status(String h5Status) {
      
      this.h5Status = h5Status;
      return this;
    }
  
     /**
     * H5网站状态
     * @return h5Status
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "ONLINE", value = "H5网站状态")
  
    public String getH5Status() {
      return h5Status;
    }
  
  
    public void setH5Status(String h5Status) {
      this.h5Status = h5Status;
    }
  
  
    public AlipayOpenAgentCommonSignModel lifeAppId(String lifeAppId) {
      
      this.lifeAppId = lifeAppId;
      return this;
    }
  
     /**
     * 请输入被签约商户的支付宝生活号ID编号
     * @return lifeAppId
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "2030020837517348", value = "请输入被签约商户的支付宝生活号ID编号")
  
    public String getLifeAppId() {
      return lifeAppId;
    }
  
  
    public void setLifeAppId(String lifeAppId) {
      this.lifeAppId = lifeAppId;
    }
  
  
    public AlipayOpenAgentCommonSignModel longTerm(Boolean longTerm) {
      
      this.longTerm = longTerm;
      return this;
    }
  
     /**
     * 营业期限是否长期有效
     * @return longTerm
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "true", value = "营业期限是否长期有效")
  
    public Boolean getLongTerm() {
      return longTerm;
    }
  
  
    public void setLongTerm(Boolean longTerm) {
      this.longTerm = longTerm;
    }
  
  
    public AlipayOpenAgentCommonSignModel mccCode(String mccCode) {
      
      this.mccCode = mccCode;
      return this;
    }
  
     /**
     * &lt;a href&#x3D;\&quot;https://opendocs.alipay.com/common/02khjv\&quot;&gt;商家经营类目2.0&lt;/a&gt; 中的“经营类目编码”
     * @return mccCode
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "A0001_B0001", value = "<a href=\"https://opendocs.alipay.com/common/02khjv\">商家经营类目2.0</a> 中的“经营类目编码”")
  
    public String getMccCode() {
      return mccCode;
    }
  
  
    public void setMccCode(String mccCode) {
      this.mccCode = mccCode;
    }
  
  
    public AlipayOpenAgentCommonSignModel miniAppId(String miniAppId) {
      
      this.miniAppId = miniAppId;
      return this;
    }
  
     /**
     * 请输入被签约商家下任意小程序APPID ID编号
     * @return miniAppId
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "2021003187665167", value = "请输入被签约商家下任意小程序APPID ID编号")
  
    public String getMiniAppId() {
      return miniAppId;
    }
  
  
    public void setMiniAppId(String miniAppId) {
      this.miniAppId = miniAppId;
    }
  
  
    public AlipayOpenAgentCommonSignModel miniAppName(String miniAppName) {
      
      this.miniAppName = miniAppName;
      return this;
    }
  
     /**
     * 小程序名称
     * @return miniAppName
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "xxx小程序", value = "小程序名称")
  
    public String getMiniAppName() {
      return miniAppName;
    }
  
  
    public void setMiniAppName(String miniAppName) {
      this.miniAppName = miniAppName;
    }
  
  
    public AlipayOpenAgentCommonSignModel mobileType(String mobileType) {
      
      this.mobileType = mobileType;
      return this;
    }
  
     /**
     * 移动设备类型，当开通电脑网站支付产品时不需赋值；当开通手机网站支付时，传H5；当开通JSAPI时，传APP；当开通预授权支付产品，且交易场景选择“mobile”(移动设备)时，需要从APP,H5中至少选择一个，可多选，字符串英文逗号分隔。
     * @return mobileType
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "APP,H5", value = "移动设备类型，当开通电脑网站支付产品时不需赋值；当开通手机网站支付时，传H5；当开通JSAPI时，传APP；当开通预授权支付产品，且交易场景选择“mobile”(移动设备)时，需要从APP,H5中至少选择一个，可多选，字符串英文逗号分隔。")
  
    public String getMobileType() {
      return mobileType;
    }
  
  
    public void setMobileType(String mobileType) {
      this.mobileType = mobileType;
    }
  
  
    public AlipayOpenAgentCommonSignModel productCode(String productCode) {
      
      this.productCode = productCode;
      return this;
    }
  
     /**
     * isv要代商户签约产品码，产品码是支付宝内部对产品的唯一标识
     * @return productCode
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "FACE_TO_FACE_PAYMENT", value = "isv要代商户签约产品码，产品码是支付宝内部对产品的唯一标识")
  
    public String getProductCode() {
      return productCode;
    }
  
  
    public void setProductCode(String productCode) {
      this.productCode = productCode;
    }
  
  
    public AlipayOpenAgentCommonSignModel rate(String rate) {
      
      this.rate = rate;
      return this;
    }
  
     /**
     * 服务费率（%），例如：请输入0.38~0.6 之间（小数点后两位，可取0.38%及0.6%），直播买卖通涉及JSAPI支付产品，交易手续费为 0.38%-0.6%，后续费率变化可参考支付宝标准服务费。 当签约且授权标识 sign_and_auth&#x3D;true 时，该费率信息必填。
     * @return rate
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "0.38", value = "服务费率（%），例如：请输入0.38~0.6 之间（小数点后两位，可取0.38%及0.6%），直播买卖通涉及JSAPI支付产品，交易手续费为 0.38%-0.6%，后续费率变化可参考支付宝标准服务费。 当签约且授权标识 sign_and_auth=true 时，该费率信息必填。")
  
    public String getRate() {
      return rate;
    }
  
  
    public void setRate(String rate) {
      this.rate = rate;
    }
  
  
    public AlipayOpenAgentCommonSignModel shopCityCode(String shopCityCode) {
      
      this.shopCityCode = shopCityCode;
      return this;
    }
  
     /**
     * 门店所在城市
     * @return shopCityCode
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "370900", value = "门店所在城市")
  
    public String getShopCityCode() {
      return shopCityCode;
    }
  
  
    public void setShopCityCode(String shopCityCode) {
      this.shopCityCode = shopCityCode;
    }
  
  
    public AlipayOpenAgentCommonSignModel shopDetailAddress(String shopDetailAddress) {
      
      this.shopDetailAddress = shopDetailAddress;
      return this;
    }
  
     /**
     * 门店详细地址
     * @return shopDetailAddress
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "人民路10号", value = "门店详细地址")
  
    public String getShopDetailAddress() {
      return shopDetailAddress;
    }
  
  
    public void setShopDetailAddress(String shopDetailAddress) {
      this.shopDetailAddress = shopDetailAddress;
    }
  
  
    public AlipayOpenAgentCommonSignModel shopDistrictCode(String shopDistrictCode) {
      
      this.shopDistrictCode = shopDistrictCode;
      return this;
    }
  
     /**
     * 门店所在区/县
     * @return shopDistrictCode
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "370902", value = "门店所在区/县")
  
    public String getShopDistrictCode() {
      return shopDistrictCode;
    }
  
  
    public void setShopDistrictCode(String shopDistrictCode) {
      this.shopDistrictCode = shopDistrictCode;
    }
  
  
    public AlipayOpenAgentCommonSignModel shopName(String shopName) {
      
      this.shopName = shopName;
      return this;
    }
  
     /**
     * 门店名称
     * @return shopName
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "xxx门店", value = "门店名称")
  
    public String getShopName() {
      return shopName;
    }
  
  
    public void setShopName(String shopName) {
      this.shopName = shopName;
    }
  
  
    public AlipayOpenAgentCommonSignModel shopProvinceCode(String shopProvinceCode) {
      
      this.shopProvinceCode = shopProvinceCode;
      return this;
    }
  
     /**
     * 门店所在省份
     * @return shopProvinceCode
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "370000", value = "门店所在省份")
  
    public String getShopProvinceCode() {
      return shopProvinceCode;
    }
  
  
    public void setShopProvinceCode(String shopProvinceCode) {
      this.shopProvinceCode = shopProvinceCode;
    }
  
  
    public AlipayOpenAgentCommonSignModel specialLicenseType(String specialLicenseType) {
      
      this.specialLicenseType = specialLicenseType;
      return this;
    }
  
     /**
     * 合约特殊资质的类型，不传默认99
     * @return specialLicenseType
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "99", value = "合约特殊资质的类型，不传默认99")
  
    public String getSpecialLicenseType() {
      return specialLicenseType;
    }
  
  
    public void setSpecialLicenseType(String specialLicenseType) {
      this.specialLicenseType = specialLicenseType;
    }
  
  
    public AlipayOpenAgentCommonSignModel tradeScene(String tradeScene) {
      
      this.tradeScene = tradeScene;
      return this;
    }
  
     /**
     * 交易场景，当开通产品为电脑网站支付时，传pc；当开通产品为手机网站支付时，传mobile；当开通产品为JSAPI时，传tiny_app；当开通产品为预授权支付时，下面括号中三个至少传一个（tiny_app,mobile,offline_store），可多选，字符串用英文逗号分隔
     * @return tradeScene
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "tiny_app,mobile", value = "交易场景，当开通产品为电脑网站支付时，传pc；当开通产品为手机网站支付时，传mobile；当开通产品为JSAPI时，传tiny_app；当开通产品为预授权支付时，下面括号中三个至少传一个（tiny_app,mobile,offline_store），可多选，字符串用英文逗号分隔")
  
    public String getTradeScene() {
      return tradeScene;
    }
  
  
    public void setTradeScene(String tradeScene) {
      this.tradeScene = tradeScene;
    }
  
  
    public AlipayOpenAgentCommonSignModel webSites(List<String> webSites) {
      
      this.webSites = webSites;
      return this;
    }
  
    public AlipayOpenAgentCommonSignModel addWebSitesItem(String webSitesItem) {
      if (this.webSites == null) {
        this.webSites = new ArrayList<>();
      }
      this.webSites.add(webSitesItem);
      return this;
    }
  
     /**
     * 接入网址信息（1 app_name、app_demo；2 web_sites；3 alipay_life_name；4 wechat_official_account_name。1、2、3、4至少选择一个填写）
     * @return webSites
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "www.web.com", value = "接入网址信息（1 app_name、app_demo；2 web_sites；3 alipay_life_name；4 wechat_official_account_name。1、2、3、4至少选择一个填写）")
  
    public List<String> getWebSites() {
      return webSites;
    }
  
  
    public void setWebSites(List<String> webSites) {
      this.webSites = webSites;
    }
  
  
    public AlipayOpenAgentCommonSignModel webStatus(String webStatus) {
      
      this.webStatus = webStatus;
      return this;
    }
  
     /**
     * 网站状态，枚举值为：ONLINE，OFFLINE
     * @return webStatus
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "ONLINE", value = "网站状态，枚举值为：ONLINE，OFFLINE")
  
    public String getWebStatus() {
      return webStatus;
    }
  
  
    public void setWebStatus(String webStatus) {
      this.webStatus = webStatus;
    }
  
  
    public AlipayOpenAgentCommonSignModel webTestAccount(String webTestAccount) {
      
      this.webTestAccount = webTestAccount;
      return this;
    }
  
     /**
     * 可以登录此网站的测试账户。
     * @return webTestAccount
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "testAccount", value = "可以登录此网站的测试账户。")
  
    public String getWebTestAccount() {
      return webTestAccount;
    }
  
  
    public void setWebTestAccount(String webTestAccount) {
      this.webTestAccount = webTestAccount;
    }
  
  
    public AlipayOpenAgentCommonSignModel webTestAccountPassword(String webTestAccountPassword) {
      
      this.webTestAccountPassword = webTestAccountPassword;
      return this;
    }
  
     /**
     * 可以登录此网站的账户的密码。对应web_test_account的登录密码
     * @return webTestAccountPassword
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "testPassword", value = "可以登录此网站的账户的密码。对应web_test_account的登录密码")
  
    public String getWebTestAccountPassword() {
      return webTestAccountPassword;
    }
  
  
    public void setWebTestAccountPassword(String webTestAccountPassword) {
      this.webTestAccountPassword = webTestAccountPassword;
    }
  
  
    public AlipayOpenAgentCommonSignModel wechatOfficialAccountName(String wechatOfficialAccountName) {
      
      this.wechatOfficialAccountName = wechatOfficialAccountName;
      return this;
    }
  
     /**
     * 1 app_name、app_demo；2 web_sites；3 alipay_life_name；4 wechat_official_account_name。1、2、3、4至少选择一个填写(该字段已经不在使用，废弃，不用填写)
     * @return wechatOfficialAccountName
     * @deprecated
    **/
    @Deprecated
    @javax.annotation.Nullable
    @ApiModelProperty(example = "杭州xx报社", value = "1 app_name、app_demo；2 web_sites；3 alipay_life_name；4 wechat_official_account_name。1、2、3、4至少选择一个填写(该字段已经不在使用，废弃，不用填写)")
  
    public String getWechatOfficialAccountName() {
      return wechatOfficialAccountName;
    }
  
  
    public void setWechatOfficialAccountName(String wechatOfficialAccountName) {
      this.wechatOfficialAccountName = wechatOfficialAccountName;
    }
  
    /**
     * 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 AlipayOpenAgentCommonSignModel instance itself
     */
    public AlipayOpenAgentCommonSignModel 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;
      }
      AlipayOpenAgentCommonSignModel alipayOpenAgentCommonSignModel = (AlipayOpenAgentCommonSignModel) o;
      return Objects.equals(this.alipayLifeName, alipayOpenAgentCommonSignModel.alipayLifeName) &&
          Objects.equals(this.appMarket, alipayOpenAgentCommonSignModel.appMarket) &&
          Objects.equals(this.appName, alipayOpenAgentCommonSignModel.appName) &&
          Objects.equals(this.appStatus, alipayOpenAgentCommonSignModel.appStatus) &&
          Objects.equals(this.appTestAccount, alipayOpenAgentCommonSignModel.appTestAccount) &&
          Objects.equals(this.appTestAccountPassword, alipayOpenAgentCommonSignModel.appTestAccountPassword) &&
          Objects.equals(this.batchNo, alipayOpenAgentCommonSignModel.batchNo) &&
          Objects.equals(this.businessLicenseNo, alipayOpenAgentCommonSignModel.businessLicenseNo) &&
          Objects.equals(this.dateLimitation, alipayOpenAgentCommonSignModel.dateLimitation) &&
          Objects.equals(this.downloadLink, alipayOpenAgentCommonSignModel.downloadLink) &&
          Objects.equals(this.h5Memo, alipayOpenAgentCommonSignModel.h5Memo) &&
          Objects.equals(this.h5Sites, alipayOpenAgentCommonSignModel.h5Sites) &&
          Objects.equals(this.h5Status, alipayOpenAgentCommonSignModel.h5Status) &&
          Objects.equals(this.lifeAppId, alipayOpenAgentCommonSignModel.lifeAppId) &&
          Objects.equals(this.longTerm, alipayOpenAgentCommonSignModel.longTerm) &&
          Objects.equals(this.mccCode, alipayOpenAgentCommonSignModel.mccCode) &&
          Objects.equals(this.miniAppId, alipayOpenAgentCommonSignModel.miniAppId) &&
          Objects.equals(this.miniAppName, alipayOpenAgentCommonSignModel.miniAppName) &&
          Objects.equals(this.mobileType, alipayOpenAgentCommonSignModel.mobileType) &&
          Objects.equals(this.productCode, alipayOpenAgentCommonSignModel.productCode) &&
          Objects.equals(this.rate, alipayOpenAgentCommonSignModel.rate) &&
          Objects.equals(this.shopCityCode, alipayOpenAgentCommonSignModel.shopCityCode) &&
          Objects.equals(this.shopDetailAddress, alipayOpenAgentCommonSignModel.shopDetailAddress) &&
          Objects.equals(this.shopDistrictCode, alipayOpenAgentCommonSignModel.shopDistrictCode) &&
          Objects.equals(this.shopName, alipayOpenAgentCommonSignModel.shopName) &&
          Objects.equals(this.shopProvinceCode, alipayOpenAgentCommonSignModel.shopProvinceCode) &&
          Objects.equals(this.specialLicenseType, alipayOpenAgentCommonSignModel.specialLicenseType) &&
          Objects.equals(this.tradeScene, alipayOpenAgentCommonSignModel.tradeScene) &&
          Objects.equals(this.webSites, alipayOpenAgentCommonSignModel.webSites) &&
          Objects.equals(this.webStatus, alipayOpenAgentCommonSignModel.webStatus) &&
          Objects.equals(this.webTestAccount, alipayOpenAgentCommonSignModel.webTestAccount) &&
          Objects.equals(this.webTestAccountPassword, alipayOpenAgentCommonSignModel.webTestAccountPassword) &&
          Objects.equals(this.wechatOfficialAccountName, alipayOpenAgentCommonSignModel.wechatOfficialAccountName)&&
          Objects.equals(this.additionalProperties, alipayOpenAgentCommonSignModel.additionalProperties);
    }
  
    @Override
    public int hashCode() {
      return Objects.hash(alipayLifeName, appMarket, appName, appStatus, appTestAccount, appTestAccountPassword, batchNo, businessLicenseNo, dateLimitation, downloadLink, h5Memo, h5Sites, h5Status, lifeAppId, longTerm, mccCode, miniAppId, miniAppName, mobileType, productCode, rate, shopCityCode, shopDetailAddress, shopDistrictCode, shopName, shopProvinceCode, specialLicenseType, tradeScene, webSites, webStatus, webTestAccount, webTestAccountPassword, wechatOfficialAccountName, additionalProperties);
    }
  
    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append("class AlipayOpenAgentCommonSignModel {\n");
      sb.append("    alipayLifeName: ").append(toIndentedString(alipayLifeName)).append("\n");
      sb.append("    appMarket: ").append(toIndentedString(appMarket)).append("\n");
      sb.append("    appName: ").append(toIndentedString(appName)).append("\n");
      sb.append("    appStatus: ").append(toIndentedString(appStatus)).append("\n");
      sb.append("    appTestAccount: ").append(toIndentedString(appTestAccount)).append("\n");
      sb.append("    appTestAccountPassword: ").append(toIndentedString(appTestAccountPassword)).append("\n");
      sb.append("    batchNo: ").append(toIndentedString(batchNo)).append("\n");
      sb.append("    businessLicenseNo: ").append(toIndentedString(businessLicenseNo)).append("\n");
      sb.append("    dateLimitation: ").append(toIndentedString(dateLimitation)).append("\n");
      sb.append("    downloadLink: ").append(toIndentedString(downloadLink)).append("\n");
      sb.append("    h5Memo: ").append(toIndentedString(h5Memo)).append("\n");
      sb.append("    h5Sites: ").append(toIndentedString(h5Sites)).append("\n");
      sb.append("    h5Status: ").append(toIndentedString(h5Status)).append("\n");
      sb.append("    lifeAppId: ").append(toIndentedString(lifeAppId)).append("\n");
      sb.append("    longTerm: ").append(toIndentedString(longTerm)).append("\n");
      sb.append("    mccCode: ").append(toIndentedString(mccCode)).append("\n");
      sb.append("    miniAppId: ").append(toIndentedString(miniAppId)).append("\n");
      sb.append("    miniAppName: ").append(toIndentedString(miniAppName)).append("\n");
      sb.append("    mobileType: ").append(toIndentedString(mobileType)).append("\n");
      sb.append("    productCode: ").append(toIndentedString(productCode)).append("\n");
      sb.append("    rate: ").append(toIndentedString(rate)).append("\n");
      sb.append("    shopCityCode: ").append(toIndentedString(shopCityCode)).append("\n");
      sb.append("    shopDetailAddress: ").append(toIndentedString(shopDetailAddress)).append("\n");
      sb.append("    shopDistrictCode: ").append(toIndentedString(shopDistrictCode)).append("\n");
      sb.append("    shopName: ").append(toIndentedString(shopName)).append("\n");
      sb.append("    shopProvinceCode: ").append(toIndentedString(shopProvinceCode)).append("\n");
      sb.append("    specialLicenseType: ").append(toIndentedString(specialLicenseType)).append("\n");
      sb.append("    tradeScene: ").append(toIndentedString(tradeScene)).append("\n");
      sb.append("    webSites: ").append(toIndentedString(webSites)).append("\n");
      sb.append("    webStatus: ").append(toIndentedString(webStatus)).append("\n");
      sb.append("    webTestAccount: ").append(toIndentedString(webTestAccount)).append("\n");
      sb.append("    webTestAccountPassword: ").append(toIndentedString(webTestAccountPassword)).append("\n");
      sb.append("    wechatOfficialAccountName: ").append(toIndentedString(wechatOfficialAccountName)).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("alipay_life_name");
      openapiFields.add("app_market");
      openapiFields.add("app_name");
      openapiFields.add("app_status");
      openapiFields.add("app_test_account");
      openapiFields.add("app_test_account_password");
      openapiFields.add("batch_no");
      openapiFields.add("business_license_no");
      openapiFields.add("date_limitation");
      openapiFields.add("download_link");
      openapiFields.add("h_5_memo");
      openapiFields.add("h_5_sites");
      openapiFields.add("h_5_status");
      openapiFields.add("life_app_id");
      openapiFields.add("long_term");
      openapiFields.add("mcc_code");
      openapiFields.add("mini_app_id");
      openapiFields.add("mini_app_name");
      openapiFields.add("mobile_type");
      openapiFields.add("product_code");
      openapiFields.add("rate");
      openapiFields.add("shop_city_code");
      openapiFields.add("shop_detail_address");
      openapiFields.add("shop_district_code");
      openapiFields.add("shop_name");
      openapiFields.add("shop_province_code");
      openapiFields.add("special_license_type");
      openapiFields.add("trade_scene");
      openapiFields.add("web_sites");
      openapiFields.add("web_status");
      openapiFields.add("web_test_account");
      openapiFields.add("web_test_account_password");
      openapiFields.add("wechat_official_account_name");
  
      // 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 AlipayOpenAgentCommonSignModel
    */
    public static void validateJsonObject(JsonObject jsonObj) throws IOException {
        if (jsonObj == null) {
          if (AlipayOpenAgentCommonSignModel.openapiRequiredFields.isEmpty()) {
            return;
          } else { // has required fields
            throw new IllegalArgumentException(String.format("The required field(s) %s in AlipayOpenAgentCommonSignModel is not found in the empty JSON string", AlipayOpenAgentCommonSignModel.openapiRequiredFields.toString()));
          }
        }
        if (jsonObj.get("alipay_life_name") != null && !jsonObj.get("alipay_life_name").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `alipay_life_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("alipay_life_name").toString()));
        }
        if (jsonObj.get("app_market") != null && !jsonObj.get("app_market").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `app_market` to be a primitive type in the JSON string but got `%s`", jsonObj.get("app_market").toString()));
        }
        if (jsonObj.get("app_name") != null && !jsonObj.get("app_name").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `app_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("app_name").toString()));
        }
        if (jsonObj.get("app_status") != null && !jsonObj.get("app_status").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `app_status` to be a primitive type in the JSON string but got `%s`", jsonObj.get("app_status").toString()));
        }
        if (jsonObj.get("app_test_account") != null && !jsonObj.get("app_test_account").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `app_test_account` to be a primitive type in the JSON string but got `%s`", jsonObj.get("app_test_account").toString()));
        }
        if (jsonObj.get("app_test_account_password") != null && !jsonObj.get("app_test_account_password").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `app_test_account_password` to be a primitive type in the JSON string but got `%s`", jsonObj.get("app_test_account_password").toString()));
        }
        if (jsonObj.get("batch_no") != null && !jsonObj.get("batch_no").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `batch_no` to be a primitive type in the JSON string but got `%s`", jsonObj.get("batch_no").toString()));
        }
        if (jsonObj.get("business_license_no") != null && !jsonObj.get("business_license_no").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `business_license_no` to be a primitive type in the JSON string but got `%s`", jsonObj.get("business_license_no").toString()));
        }
        if (jsonObj.get("date_limitation") != null && !jsonObj.get("date_limitation").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `date_limitation` to be a primitive type in the JSON string but got `%s`", jsonObj.get("date_limitation").toString()));
        }
        if (jsonObj.get("download_link") != null && !jsonObj.get("download_link").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `download_link` to be a primitive type in the JSON string but got `%s`", jsonObj.get("download_link").toString()));
        }
        if (jsonObj.get("h_5_memo") != null && !jsonObj.get("h_5_memo").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `h_5_memo` to be a primitive type in the JSON string but got `%s`", jsonObj.get("h_5_memo").toString()));
        }
        if (jsonObj.get("h_5_sites") != null && !jsonObj.get("h_5_sites").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `h_5_sites` to be a primitive type in the JSON string but got `%s`", jsonObj.get("h_5_sites").toString()));
        }
        if (jsonObj.get("h_5_status") != null && !jsonObj.get("h_5_status").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `h_5_status` to be a primitive type in the JSON string but got `%s`", jsonObj.get("h_5_status").toString()));
        }
        if (jsonObj.get("life_app_id") != null && !jsonObj.get("life_app_id").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `life_app_id` to be a primitive type in the JSON string but got `%s`", jsonObj.get("life_app_id").toString()));
        }
        if (jsonObj.get("mcc_code") != null && !jsonObj.get("mcc_code").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `mcc_code` to be a primitive type in the JSON string but got `%s`", jsonObj.get("mcc_code").toString()));
        }
        if (jsonObj.get("mini_app_id") != null && !jsonObj.get("mini_app_id").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `mini_app_id` to be a primitive type in the JSON string but got `%s`", jsonObj.get("mini_app_id").toString()));
        }
        if (jsonObj.get("mini_app_name") != null && !jsonObj.get("mini_app_name").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `mini_app_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("mini_app_name").toString()));
        }
        if (jsonObj.get("mobile_type") != null && !jsonObj.get("mobile_type").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `mobile_type` to be a primitive type in the JSON string but got `%s`", jsonObj.get("mobile_type").toString()));
        }
        if (jsonObj.get("product_code") != null && !jsonObj.get("product_code").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `product_code` to be a primitive type in the JSON string but got `%s`", jsonObj.get("product_code").toString()));
        }
        if (jsonObj.get("rate") != null && !jsonObj.get("rate").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `rate` to be a primitive type in the JSON string but got `%s`", jsonObj.get("rate").toString()));
        }
        if (jsonObj.get("shop_city_code") != null && !jsonObj.get("shop_city_code").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `shop_city_code` to be a primitive type in the JSON string but got `%s`", jsonObj.get("shop_city_code").toString()));
        }
        if (jsonObj.get("shop_detail_address") != null && !jsonObj.get("shop_detail_address").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `shop_detail_address` to be a primitive type in the JSON string but got `%s`", jsonObj.get("shop_detail_address").toString()));
        }
        if (jsonObj.get("shop_district_code") != null && !jsonObj.get("shop_district_code").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `shop_district_code` to be a primitive type in the JSON string but got `%s`", jsonObj.get("shop_district_code").toString()));
        }
        if (jsonObj.get("shop_name") != null && !jsonObj.get("shop_name").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `shop_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("shop_name").toString()));
        }
        if (jsonObj.get("shop_province_code") != null && !jsonObj.get("shop_province_code").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `shop_province_code` to be a primitive type in the JSON string but got `%s`", jsonObj.get("shop_province_code").toString()));
        }
        if (jsonObj.get("special_license_type") != null && !jsonObj.get("special_license_type").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `special_license_type` to be a primitive type in the JSON string but got `%s`", jsonObj.get("special_license_type").toString()));
        }
        if (jsonObj.get("trade_scene") != null && !jsonObj.get("trade_scene").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `trade_scene` to be a primitive type in the JSON string but got `%s`", jsonObj.get("trade_scene").toString()));
        }
        // ensure the json data is an array
        if (jsonObj.get("web_sites") != null && !jsonObj.get("web_sites").isJsonArray()) {
          throw new IllegalArgumentException(String.format("Expected the field `web_sites` to be an array in the JSON string but got `%s`", jsonObj.get("web_sites").toString()));
        }
        if (jsonObj.get("web_status") != null && !jsonObj.get("web_status").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `web_status` to be a primitive type in the JSON string but got `%s`", jsonObj.get("web_status").toString()));
        }
        if (jsonObj.get("web_test_account") != null && !jsonObj.get("web_test_account").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `web_test_account` to be a primitive type in the JSON string but got `%s`", jsonObj.get("web_test_account").toString()));
        }
        if (jsonObj.get("web_test_account_password") != null && !jsonObj.get("web_test_account_password").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `web_test_account_password` to be a primitive type in the JSON string but got `%s`", jsonObj.get("web_test_account_password").toString()));
        }
        if (jsonObj.get("wechat_official_account_name") != null && !jsonObj.get("wechat_official_account_name").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `wechat_official_account_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("wechat_official_account_name").toString()));
        }
    }
  
    public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
      @SuppressWarnings("unchecked")
      @Override
      public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
         if (!AlipayOpenAgentCommonSignModel.class.isAssignableFrom(type.getRawType())) {
           return null; // this class only serializes 'AlipayOpenAgentCommonSignModel' and its subtypes
         }
         final TypeAdapter<JsonElement> elementAdapter = gson.getAdapter(JsonElement.class);
         final TypeAdapter<AlipayOpenAgentCommonSignModel> thisAdapter
                          = gson.getDelegateAdapter(this, TypeToken.get(AlipayOpenAgentCommonSignModel.class));
  
         return (TypeAdapter<T>) new TypeAdapter<AlipayOpenAgentCommonSignModel>() {
             @Override
             public void write(JsonWriter out, AlipayOpenAgentCommonSignModel 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 AlipayOpenAgentCommonSignModel read(JsonReader in) throws IOException {
               JsonObject jsonObj = elementAdapter.read(in).getAsJsonObject();
               validateJsonObject(jsonObj);
               // store additional fields in the deserialized instance
               AlipayOpenAgentCommonSignModel 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 AlipayOpenAgentCommonSignModel given an JSON string
    *
    * @param jsonString JSON string
    * @return An instance of AlipayOpenAgentCommonSignModel
    * @throws IOException if the JSON string is invalid with respect to AlipayOpenAgentCommonSignModel
    */
    public static AlipayOpenAgentCommonSignModel fromJson(String jsonString) throws IOException {
      return JSON.getGson().fromJson(jsonString, AlipayOpenAgentCommonSignModel.class);
    }
  
   /**
    * Convert an instance of AlipayOpenAgentCommonSignModel to an JSON string
    *
    * @return JSON string
    */
    public String toJson() {
      return JSON.getGson().toJson(this);
    }
  }
  
  