DocuSign API:将新收件人添加到信封

时间:2017-10-11 10:25:53

标签: docusignapi

我的用例是文档必须由两个人签名:我们有电子邮件地址的普通用户,以及可以是我的应用程序的任何管理员用户的另一个用户。在常规用户签名后选择管理员用户。

我目前使用DocuSign API的实现创建了一个包含两个签名者的信封,常规用户和第二个签名者admin-placeholder

当管理员开始签名时,我会调用API将admin-placeholder替换为实际的管理员。

这是我的php代码(callDocusign函数执行的操作):

// fetch tabs of placeholder user
$tabs= callDocusign($docusignLogin, 'GET', "envelopes/$envelopeId/recipients/$placeholderRecipient/tabs?include_anchor_tab_locations=true");

// remove tabIds to avoid issue on submission
foreach(array_keys($tabs) as $kind) {
    for ($i = 0; $i < count($tabs[$kind]); $i++) {
        // sanitize_user_input removes all properties except those listed in its second argument
        $tabs[$kind][$i] = sanitize_user_input($tabs[$kind][$i], ["documentId", "pageNumber", "xPosition", "yPosition", "anchorString", "anchorXOffset", "anchorYOffset", "anchorIgnoreIfNotPresent", "anchorUnits"]);
    }
}

// add signer
$data = [
    'signers' => [[
        'email' => $user['email'],
        'clientUserId' => pseudo_encrypt($uid),
        'recipientId' => pseudo_encrypt($uid),
        'name' => user_full_name($user),
    ]],
];
callDocusign($docusignLogin, 'POST', "envelopes/$envelopeId/recipients", $data);

// delete placeholder signer
callDocusign($docusignLogin, 'DELETE', "envelopes/$envelopeId/recipients/$placeholderRecipient");

// for some reason setting tabs at signer creation doesn't work
// we'll create them now
callDocusign($docusignLogin, 'POST', "envelopes/$envelopeId/recipients/".pseudo_encrypt($uid).'/tabs', $tabs);

一切正常,但此过程最终会复制占位符用户的所有initialHere标签。在我的用例中,第一个用户有14个initialHere个标签,第二个签名者最终有28个。

1 个答案:

答案 0 :(得分:1)

我不确定为什么你会在你所描述的场景中获得重复的标签。  但是,这些方法中的任何一种都可能消除这个问题:

  • 不是删除占位符收件人(和标签页)并添加新收件人(和标签页),只需更新第二个收件人以指定实际的签名者信息(一旦知道,即在您启动之前)第二个签名者的嵌入式签名会话)。

OR

  • 按照您的要求执行操作 - 除了在创建占位符收件人时,不要为该收件人指定任何选项卡。然后,当您删除占位符收件人时,添加新收件人并指定该新收件人的选项卡。