如何通过DocuSign REST API向收件人发送预填第三方签名的DocuSign文档
PHP集成DocuSign API预填第三方角色签名实现方案
1. 提前配置DocuSign模板
首先在DocuSign后台创建/编辑目标模板,添加好所有需要预填签名的角色,比如经理、HR,为每个角色分配好对应文档中的签名、日期等字段位置,记清楚每个角色的准确名称(后续API调用需要完全匹配)。
2. PHP API调用核心逻辑
前置依赖
先安装DocuSign官方PHP SDK,完成身份鉴权(JWT/OAuth授权均可),拿到有效的API访问token。
信封创建配置代码示例
在调用createEnvelope方法生成信封时,在templateRoles参数中配置第三方角色的信息,并标记为已完成签署:
use DocuSign\eSign\Api\EnvelopesApi; use DocuSign\eSign\Model\EnvelopeDefinition; use DocuSign\eSign\Model\TemplateRole; use DocuSign\eSign\Model\SignHere; use DocuSign\eSign\Model\Tabs; // 1. 配置经理角色预填信息 $managerRole = new TemplateRole(); $managerRole->setRoleName('经理'); // 必须和模板内的角色名完全一致 $managerRole->setName('张三'); $managerRole->setEmail('manager@yourdomain.com'); $managerRole->setStatus('completed'); // 标记为已完成签署,无需再操作 $managerRole->setSignerEmailNotifications(null); // 关闭邮件通知 // 2. 预填充签名(两种方案二选一) // 方案A:直接填写文本签名 $signField = new SignHere(); $signField->setDocumentId('1'); $signField->setPageNumber('1'); $signField->setRecipientId('1'); // 对应经理角色的recipient_id $signField->setSigned('true'); $signField->setSignatureName('张三'); // 预填的签名内容 // 方案B:调用接口获取该用户DocuSign账号内的预设签名,复用样式 // $signField->setSignatureId('获取到的用户签名ID'); // 3. 绑定字段到角色 $tabs = new Tabs(); $tabs->setSignHereTabs([$signField]); $managerRole->setTabs($tabs); // 4. HR角色配置逻辑和上述完全一致,修改对应角色名、用户信息即可 $hrRole = new TemplateRole(); $hrRole->setRoleName('HR'); // ... 剩余配置同经理角色 // 5. 组装信封参数 $envelopeDefinition = new EnvelopeDefinition(); $envelopeDefinition->setTemplateId('你的模板ID'); $envelopeDefinition->setTemplateRoles([$managerRole, $hrRole, $yourEmbeddedRecipient]); // 最后加你的嵌入式签署收件人配置 $envelopeDefinition->setStatus('sent'); // 6. 调用API创建信封 $envelopeApi = new EnvelopesApi($apiClient); $envelope = $envelopeApi->createEnvelope($accountId, $envelopeDefinition);
3. 注意事项
预填签名的第三方用户必须是你所属DocuSign组织内已完成实名认证的账号,否则预填签名会被系统判定为无效,不会展示在文档中。
- 角色名的大小写、空格、特殊符号必须和模板内配置的完全一致,否则系统会识别为新的待签署角色,触发签署通知
- 预填完成的第三方角色不会进入签署流程,也不会收到任何通知,仅会作为已签署内容展示给后续的嵌入式签署人
- 如果模板内已经提前为对应角色配置好了签名字段位置,无需在代码中重复指定
documentId、pageNumber等位置参数,仅标记角色状态为completed即可自动填充预设签名
内容的提问来源于stack exchange,提问作者developer2021
相关产品推荐
相关产品推荐

