通过文件发起合同
使用文件发起流程
在完成接入准备、子客企业激活之后,使用文件发起流程。
- 通过UploadFiles上传文件
- 使用ChannelCreateFlowByFiles发起合同。
- 获取到flowid后,放入CreateSignUrls,获取到电子签小程序的url。可以使用此链接跳转到小程序进行签署。
签署方说明
签署方分类
签署方分为下面三类:
参与方类型 | 必传字段 | 说明 |
---|---|---|
个人 | Name、Mobile | 个人参与方,目前签署控件只支持: SIGN_SIGNATURE:手写签名 SIGN_DATE:签署日期 |
企业签署方 | Name、Mobile、OrganizationName | 企业参与方,其中: OrganizationName:为签署方在工商注册的企业名称 支持的签署控件: SIGN_SIGNATURE:手写签名 SIGN_SEAL:签署印章 SIGN_DATE:签署日期 |
企业静默签署方 | \ | 此签署方由系统自动完成签署。 |
文件发起合同签署方参数
参数说明
下面给出了不同类型的合同签署方的参数:
# 个人类型
{
"Name": "张三",
"Mobile": "13000000000",
"ApproverType": "PERSON",
"SignComponents": [
{
"ComponentPosY": 260,
"ComponentWidth": 100,
"FileIndex": 0,
"ComponentType": "SIGN_SIGNATURE",
"ComponentPage": 1,
"ComponentPosX": 160,
"ComponentHeight": 100
}
]
}
# 静默签署方
{
"OrganizationName": "测试企业",
"ApproverType": "ENTERPRISESERVER",
"SignComponents": [
{
"ComponentPosY": 260,
"ComponentWidth": 100,
"FileIndex": 0,
"ComponentType": "SIGN_SEAL",
"ComponentPage": 1,
"ComponentPosX": 160,
"ComponentHeight": 100,
"ComponentValue": "<SealId>" // 静默签署使用的印章Id
}
]
}
# 渠道子客员工
{
"OrganizationName": "测试企业",
"OrganizationOpenId": "org_open_id",
"OpenId": "employee_open_id",
"ApproverType": "ORGANIZATION",
"SignComponents": [
{
"ComponentPosY": 260,
"ComponentWidth": 100,
"FileIndex": 0,
"ComponentType": "SIGN_SEAL",
"ComponentPage": 1,
"ComponentPosX": 160,
"ComponentHeight": 100
}
]
}
# 渠道外企业签署方
{
"NotChannelOrganization": true, // 声明是渠道外的企业
"OrganizationName": "渠道外企业名称",
"Name": "张三",
"Mobile": "13000000000",
"ApproverType": "ORGANIZATION",
"SignComponents": [
{
"ComponentPosY": 260,
"ComponentWidth": 100,
"FileIndex": 0,
"ComponentType": "SIGN_SEAL",
"ComponentPage": 1,
"ComponentPosX": 160,
"ComponentHeight": 100
}
]
}
为签署方指定签署控件
签署控件是绑定在签署人上的,通过 ApproverInfo 中的 SignComponents 字段指定:
使用示例如下所示:
{
# 填充控件内容
"ComponentType": "SIGN_SEAL", // 填充印章类型
"ComponentValue": "<seal_id/>", // sealid 从控制台获取,或者由印章回调回去
}
控件在PDF上的定位方式可以有三种:
- 绝对定位方式;
- 表单域(FIELD)定位方式;
- 关键字(KEYWORD)定位方式;
为发起方指定填写控件
填写控件是在发起时用于填充合同内容的,通过 Components 字段指定:
使用示例如下所示:
{
# 填充控件内容
"ComponentType": "TEXT", // 填充控件类型
"ComponentValue": "需要填充的文本内容", // 填充控件内容
# 控件定位方式
"FileIndex": 0,
"ComponentPage": 1,
"ComponentPosX": 160,
"ComponentHeight": 100,
"ComponentPosY": 260,
"ComponentWidth": 100
}
填充控件主要包括 "填充控件内容" 以及 "控件定位方式" 两个部分;
- 填充控件内容: ○ ComponentType:填充控件类型,如:TEXT - 普通文本控件、MULTI_LINE_TEXT - 多行文本控件等; ○ ComponentValue:填充控件内容,即控件取值;
- 控件定位方式:见下文;
Component三种定位方式说明
1、 绝对定位方式:
{
"FileIndex": 0,
"ComponentType": "SIGN_SIGNATURE",
"ComponentPosX": 160,
"ComponentPosY": 260,
"ComponentWidth": 100,
"ComponentHeight": 100,
"ComponentPage": 1
}
直接指定控件在PDF中的X、Y绝对位置;
关于如何计算PDF控件可以参考 后续章节- 计算签署坐标
2、 表单域(FIELD)定位方式:
关于表单域的基础知识和操作可以参考官方文档-表单域基础知识。
{
"GenerateMode": "FIELD",
"ComponentName": "seal",
"FileIndex": 0,
"ComponentType": "SIGN_SEAL"
}
通过Adobe等PDF编辑工具创建表单域,随后指定表单域的对应名称,即可指定对应控件;控件的大小即为表单域的大小;
上图中的 seal 即对应了输入参数中的 seal 参数;
3、 关键字(KEYWORD)定位方式:
{
"GenerateMode": "KEYWORD",
"ComponentId": "Test",
"FileIndex": 0,
"ComponentType": "SIGN_SEAL",
"ComponentWidth": 100,
"ComponentHeight": 100,
"OffsetX": 100.5,
"OffsetY": 200.5,
"KeywordOrder":"Positive",
"KeywordPage":1,
"RelativeLocation":"Middle",
"KeywordIndexes":[0,2]
}
通过指定PDF文件中的关键字(如:"甲方")来对签署控件进行定位;如果关键字存在多个, 会将多个值同时填充。
GenerateMode:"KEYWORD"表明使用关键字进行定位。
KeywordOrder指定关键字排序规则,Positive-正序,Reverse-倒序。传入Positive时会根据关键字在PDF文件内的顺序进行排列。在指定KeywordIndexes时,0代表在PDF内查找内容时,查找到的第一个关键字。传入Reverse时会根据关键字在PDF文件内的反序进行排列。在指定KeywordIndexes时,0代表在PDF内查找内容时,查找到的最后一个关键字。
KeywordPage指定关键字页码,可选参数,指定页码后,将只在指定的页码内查找关键字,非该页码的关键字将不会查询出来。不指定关键字页码时可以不传值。
RelativeLocation关键字位置模式,Middle-居中,Below-正下方,Right-正右方,LowerRight-右上角,UpperRight-右下角。示例:如果设置Middle的关键字盖章,则印章的中心会和关键字的中心重合,如果设置Below,则印章在关键字的正下方。具体的位置示例可参考下图:
KeywordIndexes关键字索引,可选参数,如果一个关键字在PDF文件中存在多个,可以通过关键字索引指定使用第几个关键字作为最后的结果,可指定多个索引。示例[0,2],说明使用PDF文件内第1个和第3个关键字位置。
同时,可以指定 OffsetX、OffsetY 参数来调整控件的相对位置;
如未指定控件大小,即为关键字所对应控件的大小;
如上图中的 Test 即对应上面入参中的 Test 参数。
关键字定位注意事项
1、 使用关键字进行定位时会进行全文匹配,所有具有关键字的位置均会被匹配上。如果需要指定第几个关键字,可以配合KeywordOrder、KeywordIndexes属性使用
2、 使用关键字功能时,需要配置KeywordOrder和RelativeLocation属性
3、 无法使用跨行的内容作为关键字进行定位
您可以结合您自己的使用场景来使用不同的定位方式。
计算签署坐标
在合同签署阶段,需确认三要素,方可对一份合同内的具体位置进行签署:
●签署文件
●签署控件所在的文件页码
●控件左上角的点的坐标 ComponentPosX 和 ComponentPosY。
本章节将着重讲解第三步,如何对PDF签署坐标进行计算。
坐标计算方式:
开发人员
推荐使用PDF开源SDK,解析签署坐标,推荐的PDF开源SDK包括: https://github.com/itext/itext7 https://github.com/apache/pdfbox https://github.com/LibrePDF/OpenPDF https://github.com/mozilla/pdf.js 提示:可以通过解析签署关键字,获取签署坐标。
非开发人员
推荐使用PDF编辑器,包括: adobe官方编辑器 https://acrobat.adobe.com/cn/zh-Hans/acrobat.html 国产福昕编辑器 https://www.foxitsoftware.cn/
Adobe编辑器:
首先:
然后:
查看属性,位置:
单位选择“点”,此时下方位置显示坐标值,注意此坐标值以页面左下角为原点,需要转换成以页面左上角为原点,转换方法:
ComponentPosX = 左对齐坐标140.7288
ComponentPosY = 页面高度 - 上对齐坐标616.8359
页面高度如何获取?可先将控件移至页面顶部,此时上对齐坐标值即为页面高度。