如何批量预填充DocuSign发送方签名并保留审计轨迹
问题结论
该需求可实现,且完全符合DocuSign合规要求,适配你当前使用的C# eSign开发包,不需要开发嵌入式模板编辑能力,也不需要管理员重复签署同内容文档。
实现方案
首先要排除你最初设想的半签署状态文档复用思路:DocuSign每个信封(Envelope)的审计轨迹是独立绑定的,将已完成部分签署的文档导出后重新生成新信封,原有签名记录不会被新信封认可,审计轨迹断裂,反而不满足合规要求。
正确方案基于模板+顺序路由+发件人自动签名能力实现,具体步骤如下:
- 第一步:创建签名模板
你可以直接在DocuSign管理后台可视化创建模板,也可以通过C# SDK调用接口创建,不需要开发嵌入式模板编辑功能。模板中配置两个固定签署角色:- 第一签署顺位(
RoutingOrder=1)固定为已完成授权的管理员账号,在文档对应位置放置管理员的签名域,开启AutoSign(自动签署)属性 - 第二签署顺位(
RoutingOrder=2)设为动态角色,角色名可自定义为end_user,不预设邮箱、姓名信息,在文档对应位置放置普通签署人的签名域
管理员只需要提前在自己的DocuSign个人设置中上传、保存好自己的签名样式即可,后续不需要重复操作签名步骤。
- 第一签署顺位(
- 第二步:基于模板生成信封
每次需要给不同用户发起签名请求时,直接调用SDK的「从模板创建信封」接口,仅需传入end_user角色对应的实际签署人姓名、邮箱、嵌入式签署用的ClientUserId即可,不需要额外传入管理员信息。
以下是C# SDK的核心代码示例:
// 初始化信封定义,绑定提前创建好的模板ID EnvelopeDefinition envelope = new EnvelopeDefinition { TemplateId = "你提前创建的模板ID", Status = "sent", TemplateRoles = new List<TemplateRole> { new TemplateRole { // 对应模板中定义的普通签署人角色名 RoleName = "end_user", Name = "实际签署人姓名", Email = "实际签署人邮箱", // 用于生成嵌入式签名视图,和你现有嵌入式签署逻辑一致 ClientUserId = "签署人唯一业务标识" } } }; // 调用创建信封接口 EnvelopesApi envelopesApi = new EnvelopesApi(apiClient); EnvelopeSummary result = await envelopesApi.CreateEnvelopeAsync(accountId, envelope);
- 第三步:生成嵌入式签名视图
信封创建后,DocuSign会自动完成第一顺位管理员的签署步骤:系统会调用管理员账号中已保存的签名样式自动签署对应签名域,这个操作是DocuSign官方合规能力,审计轨迹会明确记录「该签名经管理员授权自动应用」,和手动签名具备同等审计效力,不属于预填充签名图片的违规方案。
管理员签署完成后信封会自动进入等待普通用户签署的状态,你直接用现有逻辑为普通用户生成嵌入式签名URL即可,不需要给管理员做额外的签名跳转。
可选调整方案
如果你后续需要管理员对每份文档做手动确认后再签署,只需要把模板中管理员角色的AutoSign属性关闭,每次信封创建后先调用嵌入式签名接口生成管理员的签名链接,管理员完成签署后再开放给普通用户签署即可,审计轨迹会记录管理员的手动签名行为,同样满足合规要求。
内容的提问来源于stack exchange,提问作者Daniel D
相关产品推荐
相关产品推荐

