package binary_request import ( "encoding/json" "git.sxidc.com/student-physical-examination/contract_lock_sdk/http" "git.sxidc.com/student-physical-examination/contract_lock_sdk/model/common" "os" ) type BinarySignV2Request 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 *os.File `json:"data,omitempty"` // core:true 【数据签名内容】数据签名内容 【作用】 以字符串的形式传入签署的业务数据(使用数字证书签署数据流) 例如:采购系统需要签署一份采购表单,采购表单本身不是文件只是表单上一串数据,则可传入数据进行签署 【传参】 数据签名文件和数据签名内容必传其一,均传入以数据签名文件为准。 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、使用签名签署 :使用接口指定的签名签署数据,此时Signatory中的operator不能为空 【传参】 取值范围:COMPANY(使用印章签署),PERSONAL(使用签名签署);不传值默认为:COMPANY(使用印章签署)。 TenantType string `json:"tenantType,omitempty"` // inner-type:Json;core:true 【签署主体信息】签署主体信息 【作用】 签署数据签名的签署人、以及使用印章或签名 Signatory string `json:"signatory"` // core:true 【是否添加时间戳 】是否添加时间戳 【作用】 用户在签署页面是否可添加时间戳图片(日期图片) 【传参】 1、取值范围:true(可添加),false(不可添加);不传值默认为:false(不可添加)。 NeedTsa string `json:"needTsa,omitempty"` SignatoryObject *common.BinarySignatory `json:"signatoryObject,omitempty"` } func (obj BinarySignV2Request) GetUrl() string { return "/binary/sign/v2" } func (obj BinarySignV2Request) 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.AddFiles("data", obj.Data) if obj.SignatoryObject != nil { jsonBytes, _ := json.Marshal(obj.SignatoryObject) parameter.AddParam("signatory", string(jsonBytes)) } else { parameter.AddParam("signatory", obj.Signatory) } return parameter }