动态签署方2.0
1. 动态签署方、动态签署方2.0和普通合同的主要区别?
1.1. 普通合同
- 固定性高:合同发起时必须明确指定所有签署方的详细信息(如名字、手机号等)以及他们各自的签署区域。一旦合同启动,无法更改或增加签署方及其签署区域。
- 自动完成:所有预设的签署方完成签署后,合同自动结束,没有后续修改或添加的可能性。
1.2. 动态签署方(动态签署方1.0)
- 中等灵活性:合同发起时可以不立即指定签署方的具体信息,但需要预设签署方的坑位和签署区域。启动后,可以通过接口用名字、手机号等信息补全到对应的签署方坑位中才能开始这个签署方的签署。
- 自动完成:补充完所有签署方并完成签署后,合同自动结束,类似于普通合同的完成方式。
动态签署方1.0的使用可以参考,文档动态签署方
1.3. 动态签署方2.0
- 最高灵活性:合同发起时无需指定签署方及其签署区域。合同启动后,可以灵活通过CreateDynamicFlowApprover接口增加签署方和对应的签署区域。
- 非自动完成:即使所有当前指定的签署方已经完成签署,合同仍可继续添加新的签署方和签署区域。合同只有在明确调用结束接口后才真正完成,这为合同的持续更新和扩展提供了极大的灵活性。
2. 使用流程
3. 如何开通动态签署方2.0功能?
请按照以下步骤激活动态签署方2.0功能:【登录控制台】--> 【更多】--> 【企业应用管理】--> 【自建应用-测试联调】-->【应用扩展服务】-->【动态添加签署人2.0】,位置如下图:
4. 发起动态签署流程
文件发起动态签署流程:
{
"Operator": {
"UserId": "yDRCLUUgygq2xun5UuO4zjEwg0vjoimj"
},
"FlowName": "这个是动态签署合同的合同示例",
"FlowType": "入职合同",
"Approvers": [{
"ApproverType": 1,
"ApproverName": "张三",
"ApproverMobile": "18888888888",
"SignComponents": [{
"ComponentPosX": 160,
"ComponentPosY": 360,
"ComponentHeight": 100,
"ComponentWidth": 100,
"ComponentType": "SIGN_SIGNATURE",
"ComponentPage": 1
}
]
}
],
"FileIds": [
"yDRSRUUgygj6qnwfUuO4zjEwc193c2hH"
],
"OpenDynamicSignFlow": true
}
在这种模式下,您可以在合同创建时通过 OpenDynamicSignFlow 参数启用动态签署流程,并同时指定一些固定的参与人(Approvers)。这样做的好处是,您可以确保某些关键或必需的签署方在合同启动时就已经被包括在内,而其他的签署方可以随后通过接口动态添加。
5. 动态补充签署人
- 对于无序签署合同:当您通过API追加新的签署方时,这个签署方也是无序的,可以立刻开始合同的填写或者签署。
- 对于有序签署合同:当您通过API追加新的签署方时,这些签署人将被自动添加到签署队列的末尾。这意味着他们只能在前面所有指定的签署人完成签署后新追加的这个签署方才能进行签署。
可以通过下面的方式添加不同的签署人,对应的接口是CreateDynamicFlowApprover
5.1 通过名字和手机号补充具体签署人
{
"Operator": {
"UserId": "yDRCLUUgygq2xun5UuO4zjEwg0vjoimj"
},
"FlowId": "yDRS4UUgygqdcj2tUuO4zjEEFuP35Swc",
"Approvers": [{
"ApproverType": 0,
"OrganizationName": "典子谦示例企业",
"ApproverName": "典子谦",
"ApproverMobile": "13200000000",
"PreReadTime": 3,
"SignComponents": [{
"ComponentPosX": 160,
"ComponentPosY": 260,
"ComponentWidth": 100,
"ComponentHeight": 100,
"ComponentType": "SIGN_SEAL",
"ComponentPage": 1
}
]
}, {
"ApproverType": 1,
"ApproverName": "李四",
"ApproverMobile": "15100000000",
"SignComponents": [{
"ComponentPosX": 160,
"ComponentPosY": 360,
"ComponentHeight": 100,
"ComponentWidth": 100,
"ComponentType": "SIGN_SIGNATURE",
"ComponentPage": 1
}
]
}
],
"Action": "CreateDynamicFlowApprover"
}
上面的示例用CreateDynamicFlowApprover接口为一个流程补充两个签署人,一个来自B端(企业),另一个来自C端(个人),并通过各自的SignComponents指定他们的签署区域。
- 对于B端的签署人,您需要提供企业名称、员工姓名和员工手机号。这里以“典子谦示例企业”的员工“典子谦”为例
- 对于C端的签署人,您只需要提供个人的姓名和手机号。这里以个人“李四”为例
5.2 通过员工的UserId补充补充具体签署人
{
"Operator": {
"UserId": "yDRCLUUgygq2xun5UuO4zjEwg0vjoimj"
},
"FlowId": "yDRS4UUgygqdcj2tUuO4zjEEFuP35Swc",
"Approvers": [
{
"ApproverType": 0,
"UserId": "yDxbNUyKQDxGYNUuO4zjEwvl3XYQmAcO",
"OrganizationName": "王五示例企业",
"SignComponents": [
{
"ComponentPosX": 260,
"ComponentPosY": 360,
"ComponentWidth": 100,
"ComponentHeight": 100,
"FileIndex": 0,
"ComponentType": "SIGN_SEAL",
"ComponentPage": 1
}
]
}
],
"Action": "CreateDynamicFlowApprover"
}
上面的示例用CreateDynamicFlowApprover接口补充1个B端的签署人,您需要提供企业名称和员工的用户ID,并通过SignComponents指定他的签署区域。
可以从示例中看到补充的这个签署人是“王五示例企业”下的员工,这个员工在“王五示例企业”下的用户ID(UserId)是yDxbNUyKQDxGYNUuO4zjEwvl3XYQmAcO。
5.3 补充或签签署人
{
"Operator": {
"UserId": "yDRCLUUgygq2xun5UuO4zjEwg0vjoimj"
},
"FlowId": "yDRS4UUgygqdcj2tUuO4zjEEFuP35Swc",
"Approvers": [
{
"ApproverType": 0,
"OrganizationName": "典子谦示例企业",
"CustomApproverTag": "obLsS5f0kCahMnUEaeQwQKM0N0nY",
"SignComponents": [
{
"ComponentPosX": 160,
"ComponentPosY": 260,
"ComponentWidth": 100,
"ComponentHeight": 100,
"ComponentType": "SIGN_SEAL",
"ComponentPage": 1
}
]
}
],
"Action": "CreateDynamicFlowApprover"
}
在或签场景下,需要指定这个对应或签位置的CustomApproverTag和企业的名字。(注意:暂不支持企微的或签)
5.4 补充动态签署人1.0的签署人
{
"Operator": {
"UserId": "yDRCLUUgygq2xun5UuO4zjEwg0vjoimj"
},
"FlowId": "yDRS4UUgygqdcj2tUuO4zjEEFuP35Swc",
"Approvers": [
{
"ApproverType": 0,
"ApproverOption": {
"FillType": 1
},
"SignComponents": [
{
"ComponentPosX": 160,
"ComponentPosY": 260,
"ComponentWidth": 100,
"ComponentHeight": 100,
"ComponentType": "SIGN_SEAL",
"ComponentPage": 1
}
]
}
],
"Action": "CreateDynamicFlowApprover"
}
动态签署人1.0的使用可以参考,文档动态签署方
6. 签署人签署
签署时与普通合同没有区别,正常签署即可
7. 结束动态合同
通过接口 ArchiveDynamicFlow 结束动态签署合同
注意:只有对应流程的所有签署方都已完成签署且合同处于非终态(拒签、过期、撤销等状态),系统才应允许合同结束。
结束动态合同,请求结构体如下:
{
"Operator": {
"UserId": "yDRCLUUgygq2xun5UuO4zjEwg0vjoimj"
},
"FlowId": "yDRS4UUgygqdcj2tUuO4zjEEFuP35Swc"
}
响应结构体
{
"Response": {
"Approvers": [{
"SignId": "yDRS4UUgygqdcj51UuO4zjEyWTmzsIAR",
"RecipientId": "yDRS4UUgygqdcj56UuO4zjExBQcOiB68"
}, {
"SignId": "yDRSRUUgygj6qnwfUuO4zjEwc193c2hH",
"RecipientId": "yDwfGUUckps86q8kUoTIbgRXTZbVk9I2"
}, {
"SignId": "yDRSRUUgygj6rq7wUuO4zjECxndqQApl",
"RecipientId": "yDRS4UUgygqdcjjtUuO4zjESYiOVONL1"
}, {
"SignId": "yDRSRUUgygj6rqi6UuO4zjEBDACwAjgT",
"RecipientId": "yDRS4UUgygqdcj51UuO4zjEyWTmzsIAR"
}
],
"FlowId": "yDRS4UUgygqdcj2tUuO4zjEEFuP35Swc",
"RequestId": "825cef7d-1228-428f-8e2c-281efa8f308c"
}
}
8.回调
动态签署合同在发起、签署、结束时均会发送回调,与普通合同一致,可参考回调文档,没有动态签署人自己的独特回调。