接口描述
添加手动签署区是指向签署流程中添加某签署方信息、签章位置与待签署文件之间的关系并由签署方手动签署。
签署区添加完毕后,可以调用【签署流程开启】接口让签署任务进入签署执行阶段。
若签署流程创建时设置noticeType,此时签署方会收到e签宝短信或邮件通知进行签署操作。
开发者也可调用【获取签署地址】接口获取签署链接,然后业务系统内跳转加载签署链接或自行发送通知。
签署区要素主要包括以下信息:
- 待签署文件:参数 fileId 代表待签署文件。请确保此fileId已通过【流程文档添加】接口添加到签署流程中。
- 签署方信息:参数 signerAccountId 代表签署方。若多方签署,可在 signfields 数组中构建多个签署区信息。注意:此处所说签署方具体指平台方的企业用户或个人用户。平台方签署信息请通过【添加平台方自动盖章签署区】接口添加。
- 签署顺序:如果需要按顺序签署,请通过 order 参数进行设置。值为1时表示首先签署,数字越大签署顺序越靠后。
- 签章类型:支持指定单页签章、骑缝签章或用户自由选择,由参数 signType 控制(0-页面自由选择,1-单页签章,2-骑缝签章,默认1)。
- 签章位置:通过页码和XY坐标来确定签章加盖位置,由参数 posPage、posX和posY 控制,页码posPage值从1开始计算且不可超过PDF文件实际总页数。
签署区位置(posBean)需要与签章类型(signType)组合使用,组合使用方法如下:
- signType值为1(单页签章)时,posX、posY和posPage 必须指定具体值,如下:
{
"signfields":[
{
//省略...
"posBean":{
"posPage":"3",// 表示 PDF中第三页
"posX":158.725,// 表示 从页面左下角向右偏移158.725像素
"posY":431.565// 表示 从页面左下角向上偏移431.565像素
},
//省略...
}
]
}
说明:文件内如需多页签章时,可添加多个 signfields 分别设置具体posX、posY和posPage。
- signType值为2(骑缝签章)时,posY和posPage 必须指定具体值,骑缝页码范围通过英文连字号"-"指定, 传“all”代表盖全部页码。如下:
{
"signfields":[
{
//省略...
"posBean":{
"posPage":"1-5",// 表示 从第1页连续到第5页加盖骑缝章
"posY":400.000// 表示 从页面右侧边缘向上偏移400.000像素
},
//省略...
}
]
}
- signType值为0(用户自由选择)时,posX、posY和posPage所传值无效,以用户页面实际操作为准,因此signType值为0时,posBean对象可以不传。
接口
/v1/signflows/{flowId}/signfields/handSign
请求方式
POST
请求头
提供两种安全接入方式,开发者可选择其中一种方式进行对接,对应参数如何获取,参考文档【请点击】。
方式一:请求签名鉴权
请求头入参示例如下:
参数名称 | 类型 | 必选 | 参数说明 |
X-Tsign-Open-App-Id | string | 是 | 应用ID |
Content-Type | string | 是 | application/json;charset=UTF-8 |
X-Tsign-Open-Ca-Timestamp | string | 是 | API 调用者传递时间戳,值为当前时间的毫秒数,也就是从1970年1月1日起至今的时间转换为毫秒,时间戳有效时间为15分钟,为了防重放攻击 |
Accept | string | 是 | 建议统一填写 */* |
X-Tsign-Open-Ca-Signature | string | 是 | 签名字符串 |
Content-MD5 | string | 否 | 当请求 Body 非 Form 表单时,可以计算 Body 的 MD5 值传递给云网关进行 Body MD5 校验。建议当请求 Body 非 Form 表单时,加上此请求头。 |
X-Tsign-Open-Auth-Mode | string | 是 | 选择请求方式进行鉴权,固定值,Signature |
方式二:OAuth2.0鉴权
当安全接入选择OAuth2.0鉴权方式,请点击查阅详情,请求头入参示例如下:
参数名称 | 类型 | 必选 | 参数说明 |
X-Tsign-Open-App-Id | string | 是 | 应用ID |
X-Tsign-Open-Token | string | 是 | 通过获取鉴权Token接口返回 |
Content-Type | string | 是 | application/json; charset=UTF-8 |
请求参数
展开全部参数参数名称 | 类型 | 必选 | 参数 类型 | 参数说明 | ||
flowId | string | 是 | path | 流程id, 该参数需放在请求地址里面,可以参考【请求示例】 | ||
signfields | array | 是 | body | 签署区列表数据 | ||
fileId | string | 是 | body | 文件ID | ||
signerAccountId | string | 是 | body | 签署操作人个人账号标识,即操作本次签署的个人 注:个人/企业用户手动签署时,需传入签署的个人/经办人的签署账号ID(【创建个人签署账号】接口获取) | ||
authorizedAccountId | string | 否 | body | 签约主体账号标识,即本次签署对应任务的归属方,默认是签署操作人个人 注:企业用户手动签署时,需传入签署的机构的签署账号ID(【创建机构签署账号】接口获取) | ||
actorIndentityType | int 32 | 否 | body | 机构签约类别,当签约主体为机构时必传:2-机构盖章; | ||
agreeAutoSign | boolean | 否 | body | 个人用户是否需要静默签署授权,默认false false-不需要 true-需要 注:
![]()
| ||
agreeSkipWillingness | 个人用户是否需要授权免意愿快捷签署,默认false false-不需要 true-需要 注:
![]()
| |||||
assignedPosbean | boolean | 否 | body | 表示签署过程中,是否固定指定的签署区位置,默认为true。 true-固定签署区位置且无法移动, false-不固定签署区位置且签署时可自由移动 注:当signType为1或者2时,该字段才会生效 | ||
order | int 32 | 否 | body | 签署区顺序,默认1,且不小于1,顺序越小越先处理 | ||
willTypes | array | 否 | body | 指定该签署人的意愿认证方式, 类型如下: CODE_SMS 短信验证码 FACE_ZHIMA_XY 支付宝刷脸 FACE_TECENT_CLOUD_H5 腾讯云刷脸 以下四种方式需联系交付顾问开通后方可使用: FACE_FACE_LIVENESS_RECOGNITION 快捷刷脸 FACE_WE_CHAT_FACE 微信小程序刷脸 FACE_AUDIO_VIDEO_DUAL 支付宝智能视频认证 VIDEO_WE_CHAT_VIDEO_DUAL 微信智能视频认证 | ||
posBean | object | 否 | body | 签署区位置信息 。signType为0时,本参数无效; signType为1时, 页码和XY坐标不能为空; signType为2时, 页码和Y坐标不能为空 | ||
posPage | string | 否 | body | 页码信息,当签署区signType为2时, 页码可以'-'分割, 其他情况只能是数字 | ||
posX | float | 否 | body | x坐标,默认空 | ||
posY | float | 否 | body | y坐标 | ||
width | float | 否 | body | 签署区宽,默认印章宽度 | ||
addSignTime | boolean | 否 | body | 签章日期,默认跟随在印章底部,默认false。 true-显示日期 false-不显示日期 | ||
signTimeFormat | string | 否 | body | 签章日期格式,yyyy-MM-dd HH:mm:ss | ||
signDateBeanType | int 32 | 否 | body | 是否需要添加签署日期,0-禁止 1-必须 2-不限制,默认0 | ||
signDateBean | Object | 否 | body | 签章日期信息 | ||
fontSize | int32 | 否 | body | 签章日期字体大小,默认12 | ||
format | string | 否 | body | 签章日期格式,支持的格式: yyyy年MM月dd日 yyyy-MM-dd yyyy/MM/dd | ||
posPage | int32 | 否 | body | 页码信息,如需指定日期盖章位置,则需传入日期盖章页码和坐标(日期页码与印章页码需相同) | ||
posX | float | 否 | body | x坐标,默认0 (如果X和Y坐标不传入,签署日期默认在签署区下方) | ||
posY | float | 否 | body | y坐标,默认0 | ||
sealType | string | 否 | body | 签署方式, 0-手绘签名(企业主体签署不支持手绘), 1-模板印章签名, 多种类型时逗号分割,为空不限制 | ||
handDrawnWay | string | 否 | body | 手绘签名方式 0-普通手绘签名 1-AI校验手绘签名 多种类型时逗号分割,为空只有普通手绘签名 | ||
sealId | string | 否 | body | 印章id (1)如果开通了实名签署,不支持指定印章 (2)如果没有开通实名签署,支持指定印章 | ||
signType | int32 | 否 | body | 签署类型,0-不限,1-单页签署,2-骑缝签署,默认1 | ||
thirdOrderNo | string | 否 | body | 第三方业务流水号id,保证相同签署人、相同签约主体、相同签署顺序的任务,对应的第三方业务流水id唯一,默认空 如果传了该参数,【签署人签署完成异步通知】中的thirdOrderNo参数会取这里的值 |
公共响应参数
参数名称 | 类型 | 必选 | 参数说明 |
code | int | 是 | 业务码,0表示成功 |
message | string | 否 | 信息 |
data | object | 否 | 业务信息 |
响应参数
展开全部参数参数名称 | 类型 | 必选 | 参数说明 | |
signfieldBeans | array | 否 | 签署区列表数据 | |
accountId | string | 否 | 用户ID | |
fileId | string | 否 | 文档ID | |
signfieldId | string | 否 | 签署区id |
请求示例
POST https://openapi.esign.cn/v1/signflows/{flowId}/signfields/handSign
{
"signfields":[
{
"signerAccountId":"faea8237c61a4fdea864ee8d7621e14f",
"authorizedAccountId":"2c7de24aff3340f5b944ebac49545b8e",
"actorIndentityType":2,
"fileId":"fe7df2f477d649c18ebcfdfffeba253d",
"order":1,
"assignedPosbean":true,
"posBean":{
"posPage":"1",
"posX":158.72531,
"posY":431.05658
},
"sealType":"0",
"sealId":"0123",
"signType":1
}
]
}
响应示例
{
"code":0,
"data":{
"signfieldBeans":[
{
"accountId":"faea8237c61a4fdea864ee8d7621e14f",
"fileId":"fe7df2f477d649c18ebcfdfffeba253d",
"signfieldId":"b76b69d5b48d4f689cae997e42809ac4"
}
]
},
"message":"成功"
}
错误码
错误码 | 错误描述 | 解决方案 |
1437511 | 文档不存在,fileId:XXX | 签署区里的fileId为空或fileId无效 |
1437306 | XXXX:签署页码超出文档页数 | 签署区的页码大于文档页数 |
1435002 | 未定义的signType | 签署类型无效, signType仅支持: 0-不限, 1-单页签署, 2-骑缝签 |
401 | 1.token过期了 2.header请求头不正确 3.apiurl和应用ID环境不对应,例如apiurl是模拟环境,应用ID是正式环境的 |