如何从一个收件人的信封中获取多个签名? DocuSign PHP SDK

时间:2016-06-22 14:51:27

标签: docusignapi

我需要让一个收件人在一个信封中签到多个地方。也许我错过了一些关于正确方法的文档,但是我没有成功地搜索它。这是我添加收件人的方法:

function addSigner($signerName, $signerEmail, $xPos, $yPos, $documentId = 1, $documentPage = 1)
{
    $index = count($this->signers);
    $this->signers[$index] = new DocuSign\eSign\Model\Signer();
    $this->signers[$index]->setName($signerName);
    $this->signers[$index]->setEmail($signerEmail);
    $this->signers[$index]->setRecipientId((string)$index + 1);
    $this->sigFields[$index] = new DocuSign\eSign\Model\SignHere();
    $this->sigFields[$index]->setXPosition($xPos);
    $this->sigFields[$index]->setYPosition($yPos);
    $this->sigFields[$index]->setDocumentId($documentId);
    $this->sigFields[$index]->setPageNumber($documentPage);
    $this->sigFields[$index]->setRecipientId((string)$index + 1);
    $this->sigTabs[$index] = new DocuSign\eSign\Model\Tabs();
    $this->sigTabs[$index]->setSignHereTabs(array($this->sigFields[$index]));

    return $index;
}

这是我尝试调用方法

$test->addSigner('Nilson Cain', 'nilsoncain@fakewebsite.com', 90, 652, 1, 1);
$test->addSigner('Nilson Cain', 'nilsoncain@fakewebsite.com', 90, 652, 2, 1);

不幸的是,这会产生这种一般性错误(如果没有重复的收件人,我就不会这样做。)

Exception: exception 'DocuSign\eSign\ApiException' with message '[400] Error connecting to the API 

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我通过首先将addSigner()方法分成两部分来解决这个问题。一种添加收件人的方法,另一种添加SignHereTab的方法。每个收件人可以有多个SignHereTab,但不能重复收件人。

z-index

我还将setSignHereTabs移动到我的SendEnvelope方法,该方法将在收件人和SignHereTabs全部创建后调用。

function addRecipient($signerName, $signerEmail)
{
    $index = count($this->signers);
    $this->signers[$index] = new DocuSign\eSign\Model\Signer();
    $this->signers[$index]->setName($signerName);
    $this->signers[$index]->setEmail($signerEmail);
    $this->signers[$index]->setRecipientId($index + 1);
    $this->sigTabs[$index] = new DocuSign\eSign\Model\Tabs();

    return $index;
}

function addSignHereTab($signerId, $xPos, $yPos, $documentId = 1, $documentPage = 1)
{
    $index = count($this->sigFields);
    $this->sigFields[$index] = new DocuSign\eSign\Model\SignHere();
    $this->sigFields[$index]->setXPosition($xPos);
    $this->sigFields[$index]->setYPosition($yPos);
    $this->sigFields[$index]->setDocumentId($documentId);
    $this->sigFields[$index]->setPageNumber($documentPage);
    $this->sigFields[$index]->setRecipientId($signerId + 1);

    return $index;
}