package binary_request import ( "os" "private-go-sdk/http" "private-go-sdk/model/common" "encoding/json" ) type BinarySignurlV2Request struct { // core:true 【数据签名主题】数据签名主题 【作用】 定义数据签名的标题,便于后续在前台显示数据签名列表时区分显示每条数据 【传参】 最大长度:500(包含) 【特殊说明】 若未传,则默认按【数据签名-数据签名id】作为主题名称 Subject string `json:"subject,omitempty"` // core:true 【数据签名文件】数据签名文件 【作用】 传入签署的业务数据文件(使用数字证书签署整份文件) 例如:医院的病历系统中存在一份.txt格式的病历单,则可以将病历单文件传入接口进行签署 【传参】 1、支持的文件格式:pdf, xlsx,pptx, docx, doc, wps, xls, ppt, png, webp, tiff,xml,xht,xhtml,htm,html,txt,jpg,jpeg,gif,avi,zip,rtf。 2、data(数据签名文件)和dataString(数据签名内容)必传其一,均传入以数据签名文件为准。 Data *os.File `json:"data,omitempty"` // core:true 【数据签名内容】数据签名内容 【作用】 以字符串的形式传入签署的业务数据(使用数字证书签署数据流) 例如:采购系统需要签署一份采购表单,采购表单本身不是文件只是表单上一串数据,则可传入数据进行签署 【传参】 data(数据签名文件)和dataString(数据签名内容)必传其一,均传入以数据签名文件为准。 DataString string `json:"dataString,omitempty"` // core:true 【签名算法】签名算法 【作用】 1、RSA国际算法:即使用RSA数字证书进行数据签名 2、SM2国密算法:即使用SM2数字证书进行数据签名 3、RSA国际+SM2国密双算法:需使用RSA+SM2两种数字证书进行数据签名 4、不传值时以电子签章管理后台【签名算法配置 】为准 【传参】 取值范围:RSA(RSA国际算法),SM2(SM2国密算法),SM2WithRSA(RSA+SM2两种数字证书);不传值默认为:电子签章管理后台配置。 DigestSigAlgType string `json:"digestSigAlgType,omitempty"` // core:true 【签署方式】签署方式 【作用】 1、使用印章签署:链接页面仅返回签署人有权限签署的印章,用户选择印章签署数据 2、使用签名签署 :链接页面仅返回签署人的个人签名,用户选择个人签名签署数据 3、使用印章或签名签署:链接页面同时返回印章和签名,用户自由选择使用印章或签名签署 【传参】 1、取值范围:COMPANY(使用印章签署),PERSONAL(使用签名签署);不传值默认为:ALL(使用印章或签名签署)。 2、传值为COMPANY(使用印章签署)时,signatory(签署主体信息)下的company(法人单位)不能为空。 TenantType string `json:"tenantType,omitempty"` // inner-type:Json;core:true 【签署主体信息】签署主体信息 【作用】 签署数据签名的签署人、以及使用印章或签名 Signatory string `json:"signatory"` // core:true 【是否添加时间戳 】是否添加时间戳 【作用】 用户在签署页面是否可添加时间戳图片(日期图片) 【传参】 取值范围:true(可添加),false(不可添加);不传值默认为:false(不可添加)。 NeedTsa string `json:"needTsa,omitempty"` // inner-type:Json 【免密设置】免密设置 【作用】 若签署人频繁进行数据签名时,每次都需要进行意愿校验(例如通过签署密码或验证码)影响签署效率。此参数可设置是否允许用户自行开启免密,开启后则在设置免密期间内无需重复校验签署意愿 【特殊说明】 可通过同时传入默认免密截止时间和默认免密范围预设免密规则 PasswordFreeRequestStr string `json:"passwordFreeRequestStr,omitempty"` // 【免密签署时是否选择签署图片】免密签署时是否选择签署图片 【作用】: 设置免密期间签署时,是返回链接页面让用户选择签名/印章后完成签署,还是不返回页面通过接口直接使用指定印章或签名完成签署 【传参】: 取值范围:NEED_PAGE(选择签署图片),WITHOUT_PAGE(不选择签署图片);不传值默认为:NEED_PAGE(选择签署图片)。 NoPasswordSignWay string `json:"noPasswordSignWay,omitempty"` // 【客户端类型】客户端类型 【作用】 1、当请求的UserAgent无法自动判断返回的页面类型时,可通过此参数返回指定客户端的页面;方参数不传值时,将根据请求的UserAgent自动判断返回的页面类型 2、例如在微信小程序集成场景中,PC端小程序的UserAgent只能识别为PC端,但是需要使用H5端的页面 【传参】 取值范围:PC(返回PC页面),H5(返回H5页面);不传值默认为:根据请求的UserAgent自动判断返回的页面类型。 DeviceType string `json:"deviceType,omitempty"` // 【操作完成自动关闭页面】操作完成自动关闭页面 【作用】 用户在链接页面完成数据签名时,系统是否自动关闭链接页面 【传参】: 取值范围:true(自动关闭),false(不自动关闭);不传值默认为:false(不自动关闭)。 AutoClosePage string `json:"autoClosePage,omitempty"` // inner-type:Json 【返回的图片规格】返回的图片规格 【作用】 控制返回的图片格式、图片大小 PersonSealImgSpec string `json:"personSealImgSpec,omitempty"` // deprecated:true 【文件类型】文件类型 【特殊说明】 可选项:pdf, xlsx, pptx, docx, doc, wps, xls, ppt, png, webp, tiff,xml,xht,xhtml,htm,html,txt,jpg,jpeg,gif,avi,zip,rtf DataType string `json:"dataType,omitempty"` // 【意愿校验方式】意愿校验方式 【作用】 设置签署人在数据签名链接可使用的意愿校验方式,传入第一个为默认校验方式 【传参】 取值范围:FACE(人脸识别),PIN(验证码),PASSWORD(签署密码),MOBILE_DEVICE(移动设备验证);可选多项;不传值默认为:PIN(验证码),PASSWORD(签署密码);多个选项可用“,”隔开。 【特殊说明】 如果印章绑定了ukey或动态令牌,则仅能通过ukey和动态令牌校验 如果签名绑定了动态令牌,则仅能通过动态令牌校验身份 CheckTypes string `json:"checkTypes,omitempty"` PasswordFreeRequestStrObject *common.PasswordFreeRequestStr `json:"passwordFreeRequestStrObject,omitempty"` SignatoryObject *common.SignurlSignatory `json:"signatoryObject,omitempty"` PersonSealImgSpecObject *common.PersonSealImgSpec `json:"personSealImgSpecObject,omitempty"` PageConfig *common.BinarySignurlV2PageConfigRequest `json:"pageConfig,omitempty"` } func (obj BinarySignurlV2Request) GetUrl() string { return "/binary/signurl/v2" } func (obj BinarySignurlV2Request) GetHttpParameter() *http.HttpParameter { parameter := http.NewPostHttpParameter() parameter.AddParam("subject", obj.Subject) parameter.AddParam("dataString", obj.DataString) parameter.AddParam("digestSigAlgType", obj.DigestSigAlgType) parameter.AddParam("tenantType", obj.TenantType) parameter.AddParam("needTsa", obj.NeedTsa) parameter.AddParam("noPasswordSignWay", obj.NoPasswordSignWay) parameter.AddParam("deviceType", obj.DeviceType) parameter.AddParam("autoClosePage", obj.AutoClosePage) parameter.AddParam("dataType", obj.DataType) parameter.AddParam("checkTypes", obj.CheckTypes) parameter.AddFiles("data", obj.Data) if obj.PageConfig != nil { parameter.AddParam("pageConfig.visitNum", obj.PageConfig.VisitNum) parameter.AddParam("pageConfig.expireTime", obj.PageConfig.ExpireTime) parameter.AddParam("pageConfig.invalidToPage", obj.PageConfig.InvalidToPage) parameter.AddParam("pageConfig.language", obj.PageConfig.Language) parameter.AddParam("pageConfig.hideHeader", obj.PageConfig.HideHeader) } if obj.PageConfig != nil && obj.PageConfig.PageStyle != nil { parameter.AddParam("pageConfig.pageStyle.themeColor", obj.PageConfig.PageStyle.ThemeColor) } if obj.PasswordFreeRequestStrObject != nil { jsonBytes, _ := json.Marshal(obj.PasswordFreeRequestStrObject) parameter.AddParam("passwordFreeRequestStr", string(jsonBytes)) } else { parameter.AddParam("passwordFreeRequestStr", obj.PasswordFreeRequestStr) } if obj.SignatoryObject != nil { jsonBytes, _ := json.Marshal(obj.SignatoryObject) parameter.AddParam("signatory", string(jsonBytes)) } else { parameter.AddParam("signatory", obj.Signatory) } if obj.PersonSealImgSpecObject != nil { jsonBytes, _ := json.Marshal(obj.PersonSealImgSpecObject) parameter.AddParam("personSealImgSpec", string(jsonBytes)) } else { parameter.AddParam("personSealImgSpec", obj.PersonSealImgSpec) } return parameter }