跳到主要内容

通过文件发起合同

使用文件发起流程

在完成接入准备、子客企业激活之后,使用文件发起流程。

  1. 通过UploadFiles上传文件
  2. 使用ChannelCreateFlowByFiles发起合同。
  3. 获取到flowid后,放入CreateSignUrls,获取到电子签小程序的url。可以使用此链接跳转到小程序进行签署。

签署方说明

签署方分类

签署方分为下面三类:

参与方类型必传字段说明
个人Name、Mobile个人参与方,目前签署控件只支持:
SIGN_SIGNATURE:手写签名
SIGN_DATE:签署日期
企业签署方Name、Mobile、OrganizationName企业参与方,其中:
OrganizationName:为签署方在工商注册的企业名称
支持的签署控件:
SIGN_SIGNATURE:手写签名
SIGN_SEAL:签署印章
SIGN_DATE:签署日期
企业静默签署方 \ 此签署方由系统自动完成签署。
  • 无需指定参与人信息,签署人信息默认为发起人(Operator)的信息
  • 必须为 SIGN_SEAL 类型的控件指定印章 ID(控件的 ComponentValue 字段)
  • 不能指定 SIGN_SIGNATURE 类型的签署控件,因为系统无法进行手写签名
  • 文件发起合同签署方参数

    参数说明

    下面给出了不同类型的合同签署方的参数:

    # 个人类型
    {
    "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 字段指定:

    img

    使用示例如下所示:

    {
    # 填充控件内容
    "ComponentType": "SIGN_SEAL", // 填充印章类型
    "ComponentValue": "<seal_id/>", // sealid 从控制台获取,或者由印章回调回去
    }

    控件在PDF上的定位方式可以有三种:

    ​- 绝对定位方式;

    ​- 表单域(FIELD)定位方式;

    ​- 关键字(KEYWORD)定位方式;

    为发起方指定填写控件

    填写控件是在发起时用于填充合同内容的,通过 Components 字段指定:

    img

    使用示例如下所示:

    {
    # 填充控件内容
    "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编辑工具创建表单域,随后指定表单域的对应名称,即可指定对应控件;控件的大小即为表单域的大小;

    img

    上图中的 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,则印章在关键字的正下方。具体的位置示例可参考下图:

    img

    KeywordIndexes关键字索引,可选参数,如果一个关键字在PDF文件中存在多个,可以通过关键字索引指定使用第几个关键字作为最后的结果,可指定多个索引。示例[0,2],说明使用PDF文件内第1个和第3个关键字位置。

    同时,可以指定 OffsetX、OffsetY 参数来调整控件的相对位置;

    如未指定控件大小,即为关键字所对应控件的大小;

    img

    如上图中的 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

    页面高度如何获取?可先将控件移至页面顶部,此时上对齐坐标值即为页面高度。