You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP中用embeddedRecipientStartURL:SIGN_AT_DOCUSIGN给嵌入式签署人发抄送邮件?

在PHP中实现DocuSign嵌入式签署人抄送邮件(设置embeddedRecipientStartURL":"SIGN_AT_DOCUSIGN")

我来给你详细拆解这个需求的实现方案——当你把embeddedRecipientStartURL设为SIGN_AT_DOCUSIGN时,本质是让原本的嵌入式签署人收到DocuSign官方发送的签署邀请邮件,引导他们到DocuSign平台完成签署,同时我们可以配置抄送参数,让指定人员收到抄送邮件。下面是具体的操作步骤和代码示例:

1. 准备DocuSign PHP SDK环境

首先确保你已经安装了DocuSign的官方PHP SDK,用Composer安装最方便:

composer require docusign/esign-client

接下来初始化DocuSign客户端,这里以JWT认证为例(适合服务器端集成),你需要提前准备好JWT应用的密钥、集成密钥、用户ID等信息:

require __DIR__ . '/vendor/autoload.php';

use DocuSign\eSign\Configuration;
use DocuSign\eSign\ApiClient;
use DocuSign\eSign\Model\EnvelopeDefinition;
use DocuSign\eSign\Model\Signer;
use DocuSign\eSign\Model\CarbonCopy;
use DocuSign\eSign\Model\Document;
use DocuSign\eSign\Model\Recipients;
use DocuSign\eSign\Model\Tabs;
use DocuSign\eSign\Model\SignHere;

// 配置DocuSign客户端
$config = new Configuration();
$config->setHost('https://demo.docusign.net/restapi'); // 生产环境替换为https://www.docusign.net/restapi
$oauthToken = 'YOUR_JWT_ACCESS_TOKEN'; // 替换为你的JWT访问令牌
$config->addDefaultHeader('Authorization', "Bearer $oauthToken");

$apiClient = new ApiClient($config);

2. 构建包含抄送的信封定义

核心是在签署人配置中设置embeddedRecipientStartURL为SIGN_AT_DOCUSIGN,同时添加抄送收件人到信封的carbonCopyRecipients数组中:

// 1. 准备要签署的文档(这里以本地PDF为例)
$document = new Document();
$document->setDocumentBase64(base64_encode(file_get_contents('path/to/your/document.pdf')));
$document->setName('签署文档.pdf');
$document->setDocumentId('1');

// 2. 配置嵌入式签署人
$signer = new Signer();
$signer->setEmail('signer@example.com'); // 签署人邮箱
$signer->setName('签署人姓名');
$signer->setRecipientId('1');
$signer->setClientUserId('YOUR_CLIENT_USER_ID'); // 标识为嵌入式收件人(即使设置了SIGN_AT_DOCUSIGN也需要保留)
$signer->setEmbeddedRecipientStartURL('SIGN_AT_DOCUSIGN'); // 关键参数:让签署人收到DocuSign的签署邮件

// 添加签署位置(如果使用模板可以跳过,这里手动指定)
$signHere = new SignHere();
$signHere->setDocumentId('1');
$signHere->setPageNumber('1');
$signHere->setXPosition('100');
$signHere->setYPosition('100');

$tabs = new Tabs();
$tabs->setSignHereTabs([$signHere]);
$signer->setTabs($tabs);

// 3. 配置抄送收件人
$ccRecipient = new CarbonCopy();
$ccRecipient->setEmail('cc@example.com'); // 抄送邮箱
$ccRecipient->setName('抄送收件人姓名');
$ccRecipient->setRecipientId('2');

// 4. 构建收件人集合
$recipients = new Recipients();
$recipients->setSigners([$signer]);
$recipients->setCarbonCopyRecipients([$ccRecipient]);

// 5. 构建信封定义
$envelopeDefinition = new EnvelopeDefinition();
$envelopeDefinition->setEmailSubject('请签署这份文档');
$envelopeDefinition->setEmailBlurb('这是一份需要你签署的文档,点击链接完成签署即可。');
$envelopeDefinition->setDocuments([$document]);
$envelopeDefinition->setRecipients($recipients);
$envelopeDefinition->setStatus('sent'); // 设置为发送状态

3. 发送信封并触发邮件

最后调用EnvelopesApi的createEnvelope方法发送信封:

use DocuSign\eSign\Api\EnvelopesApi;

$envelopesApi = new EnvelopesApi($apiClient);
$accountId = 'YOUR_ACCOUNT_ID'; // 替换为你的DocuSign账户ID

try {
    $envelopeSummary = $envelopesApi->createEnvelope($accountId, $envelopeDefinition);
    echo "信封已发送,信封ID:" . $envelopeSummary->getEnvelopeId();
} catch (Exception $e) {
    echo "发送失败:" . $e->getMessage();
}

关键注意事项

  • clientUserId的作用:即使设置了SIGN_AT_DOCUSIGN,保留clientUserId会将该签署人标记为嵌入式收件人,你仍然可以在后续生成嵌入式签署链接(如果需要),但不影响DocuSign发送签署邮件。
  • 抄送邮件的触发:只要你正确添加了carbonCopyRecipients,DocuSign会自动给抄送收件人发送邮件,告知他们有一份文档正在签署,并且会在签署完成后发送签署完成的抄送邮件。
  • 环境切换:代码中的host默认是Demo环境,上线时需要替换为生产环境的地址。
  • 权限验证:确保你的JWT集成密钥拥有envelope:send的权限,否则会发送失败。

内容的提问来源于stack exchange,提问作者Sobinder Glocify

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:13:57