package auth_request

import (
	"encoding/json"
	"git.sxidc.com/student-physical-examination/contract_lock_sdk/http"
)

type UserauthAuthurl2Request struct {
	// <ext>core:true</ext> 【手机号】手机号 【传参】 1、手机号允许使用大陆、港澳台、国际手机号，手机号格式为：区号+空格+手机号，例：852 9xxxxxxx ，大陆手机号可以不传区号。 2、手机号和邮箱必传其一，均传入以手机号为准。 3、若根据手机号查询不到用户，会再根据第三方业务系统用户id查询用户，若能查询到用户，则将根据传入的手机号更新用户。 4、若根据第三方业务系统用户id也查询不到用户，则将根据传入的手机号、第三方业务系统用户id创建新用户。
	Mobile string `json:"mobile,omitempty"`
	// <ext>format:email;core:true</ext> 【邮箱】邮箱 【传参】 1、邮箱需传入符合格式的字符串，例：xxxxxxxx@163.com。 2、手机号和邮箱必传其一，均传入以手机号为准。 3、若根据邮箱查询不到用户，会再根据第三方业务系统用户id查询用户，若能查询到用户，则将根据传入的邮箱更新用户。 4、若根据第三方业务系统用户id也查询不到用户，则将根据传入的邮箱、第三方业务系统用户id创建新用户。
	Email string `json:"email,omitempty"`
	// <ext>core:true</ext> 【用户姓名】用户姓名
	Name string `json:"name,omitempty"`
	// <ext>core:true</ext> 【证件类型】证件类型 【传参】 取值范围：IDCARD（二代身份证），PASSPORT（护照），HKMP（港澳通行证），MTPS（台胞证） ；不传值默认为：IDCARD（二代身份证）。
	PaperType string `json:"paperType,omitempty"`
	// <ext>core:true</ext> 【证件号】证件号 【传参】 支持传入用户证件号，包括居民身份证、护照号、港澳居民来往内地通行证等。
	CardNo string `json:"cardNo,omitempty"`
	// <ext>core:true</ext> 【证件号与用户认证信息不匹配场景下的处理策略】证件号与用户认证信息不匹配场景下的处理策略 【作用】 repeat（认证模式）为false（初次认证）时，可能存在传入的要认证用户手机号、邮箱、第三方业务系统用户id已被其他注册且已实名认证。例如： 接口传入张三的证件号以及手机号获取认证页面，但是手机号已经在系统存在并且实名认证为了李四的证件号，此时证件号不一致，接口将会报错避免信息传入错误的情况。 但线下实际可能是手机号李四不用了，由张三在进行实际的使用。因此需要将手机号从李四的账号解绑，将手机号绑定给张三获取认页面。 本参数支持指定接口报错还是进行手机号解绑并创建新账号。 创建新账号：账号已经换人使用，此时需创建新账号，需要将传入的身份信息（姓名与证件号）与账号信息创建新账号，并将所有被占用的账号信息与原账号解绑，并绑定至当前新创建账号中。 接口报错：账号的所有人未发生变更，业务系统存储的证件信息有误，此时接口需报错。 【传参】 取值范围：ERROR（接口报错），CREATE_NEW_USER（创建新用户） ；不传值默认为：ERROR（接口报错）。 【特殊说明】repeat（认证模式）为true（重复认证）时，接口将直接报错，提示【填写的身份证号与手机号的认证身份证号不符】
	CardNoNotMatchStrategy string `json:"cardNoNotMatchStrategy,omitempty"`
	// <ext>core:true</ext> 【银行卡号】银行卡号
	BankNo string `json:"bankNo,omitempty"`
	// <ext>core:true</ext> 【银行卡预留手机号】银行卡预留手机号 【传参】 仅允许使用大陆手机号。
	BankPhone string `json:"bankPhone,omitempty"`
	// <ext>core:true</ext> 【认证方式】认证方式 【作用】 可指定实名认证时使用的认证方式 【传参】 取值范围：DEFAULT（默认认证方式），IVS（手机号三要素认证），FACE（人脸识别认证），BANK（银行卡四要素认证），CTID（国家网络身份认证）；不传值默认为：DEFAULT（默认认证方式）。
	AuthMode string `json:"authMode,omitempty"`
	// <ext>core:true</ext> 【备用认证方式】备用认证方式 【作用】 若authMode（认证方式）中指定了具体的主用认证方式，则可通过该字段控制主用认证方式失败后，用户可以使用的备用认证方式 【传参】 支持传入多种认证方式，多个认证方式之间使用英文逗号区分。取值范围：IVS（手机号三要素认证），FACE（人脸识别认证），BANK（银行卡四要素认证），CTID（国家网络身份认证），MANUAL（人工审核认证）；可选多项。
	AuthDemotionModes []string `json:"authDemotionModes,omitempty"`
	// <ext>format:pure-base64;core:true</ext> 【证件照人像面】证件照人像面 【作用】 若用户进入人工审核认证页面，可以自动带出证件照人像面图片 【传参】 1、base64格式。 2、图片小于5M。 3、jpg/png类型图片。
	CardPersonImg string `json:"cardPersonImg,omitempty"`
	// <ext>format:pure-base64;core:true</ext> 【证件照信息面】证件照信息面 【作用】 若用户进入人工审核认证页面，可以自动带出证件照信息面图片 【传参】 1、base64格式。 2、图片小于5M。 3、jpg/png类型图片。
	CardInfoImg string `json:"cardInfoImg,omitempty"`
	// <ext>format:pure-base64;core:true</ext> 【手持证件照】手持证件照 【作用】 若用户进入人工审核认证页面，可以自动带出手持证件照图片 【传参】 1、base64格式。 2、图片小于5M。 3、jpg/png类型图片。
	CardHandImg string `json:"cardHandImg,omitempty"`
	// <ext>core:true</ext> 【认证模式】认证模式 【作用】 可控制用户是初次认证还是重复认证 1、false：即用户为初次认证，之前未在系统中进行过实名认证 2、true：即用户为重复认证，用户已经在系统中成功认证过，可能因为变更姓名等原因需要重新认证 【传参】 1、取值范围：true（重复认证），false（初次认证）；默认为：false（初次认证）。 2、若传入true（重复认证）但账号信息（手机号、邮箱、第三方业务系统用户id）未匹配到账号时，将按照false（初次认证）处理，系统自动创建账号
	Repeat *bool `json:"repeat,omitempty"`
	// <ext>core:true</ext> 【认证可修改字段】认证可修改字段 【作用】 可通过该参数控制用户打开实名认证连接后，接口传入的参数是否允许用户自行修改 【传参】 1、不传值时：默认除了手机号以外所有参数都允许修改。  2、传值为NONE时：接口传入的所有参数都不允许修改。  3、传值为除了NONE以外的其他值时：传入的值可以修改。 4、取值范围： NONE（都不允许修改），NAME（用户姓名），CARDNO（证件号），MOBILE（手机号），BANKNO（银行卡号），BANKPHONE（银行卡预留手机号），CARDIMGS（证件照）；可选多项。 5、重新认证时证件号不允许修改。
	ModifyFields []string `json:"modifyFields,omitempty"`
	// <ext>core:false</ext> 【认证成功后跳转地址】认证成功后跳转地址 【作用】 当认证成功后页面自动跳转至指定地址，不传值默认为：尝试返回上一页面
	SuccessPage string `json:"successPage,omitempty"`
	// <ext>core:false</ext> 【认证结束后跳转地址】认证结束后跳转地址 【作用】 当认证结束后页面自动跳转至指定地址，不传值时会再读取successpage（认证成功后跳转地址）中配置的跳转地址，若successpage（认证成功后跳转地址）也未传值，则尝试返回上一页面
	EndPage string `json:"endPage,omitempty"`
	// <ext>core:false</ext> 【是否发送认证通知】是否发送认证通知 【作用】 控制向接口传入的联系方式，是否发送短信或邮件通知用户进行实名认证，优先发送短信通知。 【传参】 取值范围：true（发送通知），false（不发送通知）；默认为：false（不发送通知）。
	SendNotice *bool `json:"sendNotice,omitempty"`
	// <ext>core:false;deprecated:true</ext> 【是否计费】是否计费 【作用】 电子签章管理后台可对所有内部外部单位以及个人设置计费规则，收取相应的签署、证书、认证等费用，可标记单位是否计费 【传参】 取值范围：true（是），false（否）；默认为：false（否）。
	Customer *bool `json:"customer,omitempty"`
	// <ext>core:false;format:color</ext> 【自定义页面主题色】自定义页面主题色 【作用】 可根据组织的品牌风格，自定义页面的主题颜色，如红色、蓝色 【传参】 RGB颜色(16进制)，例如：#A67A7A。
	ThemeColor string `json:"themeColor,omitempty"`
	// <ext>core:false</ext> 【页面语言】页面语言 【作用】 1、用于指定链接页面使用的语言 2、英文和日文页面为付费功能，请确认开通英文版系统和日文版系统后使用 【传参】 取值范围：ZH_CN（中文），EN_US（英文），JP（日文）；默认为：ZH_CN（中文）。
	Language string `json:"language,omitempty"`
	// <ext>core:true</ext> 【是否显示港澳台及海外用户认证入口】是否显示港澳台及海外用户认证入口 【作用】 1、港澳台及海外用户可通过上传证件照、随机手势照完成人工审核，可配置是否显示该认证入口 2、同时显示：即同时显示大陆居民认证方式和港澳台及海外用户认证入口，可用的大陆居民认证方式由authMode（认证方式）定义 3、仅显示港澳台及海外用户认证：即authMode（认证方式）传入的认证方式无效，只能使用港澳台及海外用户认证 4、仅显示大陆居民认证：即仅显示authMode（认证方式）传入的认证方式，不显示港澳台及海外用户认证切换入口 【传参】 取值范围：BOTH（同时显示），NON_MAINLAND（仅显示港澳台及海外用户认证），MAINLAND（仅显示大陆居民认证） ；不传值默认为：BOTH（同时显示）。
	PersonAuthPage string `json:"personAuthPage,omitempty"`
	// <ext>core:false</ext> 【链接有效期】链接有效期 【作用】 1、用于设置获取到的链接在多长时间后过期。 2、该参数不传值时，其有效期将使用电子签章管理后台-设置-开放平台-接口页面有效期配置-个人认证接口页面默认有效期设置的秒数， 当此值为“默认”时，其有效期使用电子签章管理后台-设置-开放平台-接口页面有效期配置-接口页面默认有效期设置的秒数。 3、参数传入时长超过电子签章管理后台设置的“接口页面最大有效期天数”时，将以接口传入的有效期为准。 【传参】 最小值：1（包含）。单位：秒。
	ExpireTime *int64 `json:"expireTime,omitempty"`
	// <ext>core:true</ext> 【第三方业务系统用户id】第三方业务系统用户id
	OpenUserId string `json:"openUserId,omitempty"`
	// <ext>core:true</ext> 【额外业务信息】额外业务信息 【作用】 可通过该参数传入一些额外的信息，该信息会在回调时原封不动的返回给您的业务系统，用于业务系统做后续的业务关联处理。 【传参】 字符串，业务方指定的回调文本内容。
	BizNo string `json:"bizNo,omitempty"`
	// 【移动端页面导航头部】移动端页面导航头部 【作用】 1、移动端内嵌页面默认带有头部导航区域，且区域内提供返回按钮，嵌入其他app时会与app自带的导航头部区域航重复 2、可通过本参数控制签入移动端页面时是否提供头部导航区域 【传参】 取值范围：true（隐藏导航头部），false（显示导航头部）；不传值默认为：false（显示导航头部）。
	HideHeader *bool `json:"hideHeader,omitempty"`
}

func (obj UserauthAuthurl2Request) GetUrl() string {
	return "/userauth/authurl2"
}

func (obj UserauthAuthurl2Request) GetHttpParameter() *http.HttpParameter {
	parameter := http.NewPostHttpParameter()
	jsonBytes, _ := json.Marshal(obj)
	parameter.SetJsonParamer(string(jsonBytes))
	return parameter
}
