无法使用 Docusign PHP SDK 添加日期签名字段
Unable to add Date Signed field with Docusign PHP SDK
我正在使用 https://github.com/docusign/docusign-php-client 的 PHP SDK,并且我正在尝试向文档中添加日期签名字段。我正在成功创建信封、添加签名者并发送信封。但是我无法弄清楚“签名日期”字段中缺少什么。
我到处搜索添加它的示例,并查看了 API 文档。我觉得我缺少一些实际上将字段或 'tab' 放在文档上的方法,并且需要指向正确方向的指针。我发现了诸如
this Question
它向我展示了我需要在 DateSigned 对象上设置哪些属性,但没有帮助我弄清楚我需要调用的 PHP 方法。
我正在为我们的项目制作一个包装器 class,所以如果您可以忽略这一点,我将分享我已有的代码,用于添加签名字段,然后我尝试添加签名日期给定签名者的字段。我很困惑我遗漏了什么,实际上会把它放在文档上。我省略了实际调用这些方法的代码,但信封确实发送了——只是没有日期签名字段。
非常感谢
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]));
$this->signers[$index]->setTabs($this->sigTabs[$index]);
return $index; // signerid
}
function addSignerDate($signerId, $xPos, $yPos, $documentId = 1)
{
$index = count($this->dateSignedFields);
$this->dateSignedFields[$index] = new DocuSign\eSign\Model\DateSigned();
// the date should always be on the same page as the signature
$pageNumber = $this->sigFields[$signerId]->getPageNumber();
$this->dateSignedFields[$index]->setPageNumber($pageNumber);
$this->dateSignedFields[$index]->setDocumentId($documentId);
$this->dateSignedFields[$index]->setRecipientId($signerId);
$this->dateSignedFields[$index]->setName('Date Signed');
$this->dateSignedFields[$index]->setTabLabel('Date Signed');
$this->dateSignedFields[$index]->setXPosition($xPos);
$this->dateSignedFields[$index]->setYPosition($yPos);
// EDIT - I added this bit but still no Date Signed. Probably the right track though.
$this->dateSignedTabs[$index] = new DocuSign\eSign\Model\Tabs();
$this->dateSignedTabs[$index]->setDateSignedTabs(array($this->dateSignedFields[$index]));
$this->dateSignedFields[$index]->setTabId($this->dateSignedTabs[$index]);
return $index;
}
好的,这是我修复它的方法。我改为只有一个 Tabs 数组——没有单独的数组用于 Date Signed 字段。 Tabs 对象包含不同类型的 Tabs,因此我们对两个字段使用相同的 Tabs。
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;
}
function addSignerDate($signerId, $xPos, $yPos, $documentId = 1)
{
$index = count($this->dateSignedFields);
$this->dateSignedFields[$index] = new DocuSign\eSign\Model\DateSigned();
// the date should always be on the same page as the signature
$pageNumber = $this->sigFields[$signerId]->getPageNumber();
$this->dateSignedFields[$index]->setPageNumber($pageNumber);
$this->dateSignedFields[$index]->setDocumentId($documentId);
$this->dateSignedFields[$index]->setRecipientId($signerId);
$this->dateSignedFields[$index]->setName('Date Signed');
$this->dateSignedFields[$index]->setTabLabel('Date Signed');
$this->dateSignedFields[$index]->setXPosition($xPos);
$this->dateSignedFields[$index]->setYPosition($yPos);
$this->sigTabs[$signerId]->setDateSignedTabs(array($this->dateSignedFields[$index]));
return $index;
}
然后我稍后在我的 SendEnvelope 方法中将它们添加到文档中:
foreach($this->signers as $signerId => $signer)
{
$this->signers[$signerId]->setTabs($this->sigTabs[$signerId]);
}
我正在使用 https://github.com/docusign/docusign-php-client 的 PHP SDK,并且我正在尝试向文档中添加日期签名字段。我正在成功创建信封、添加签名者并发送信封。但是我无法弄清楚“签名日期”字段中缺少什么。
我到处搜索添加它的示例,并查看了 API 文档。我觉得我缺少一些实际上将字段或 'tab' 放在文档上的方法,并且需要指向正确方向的指针。我发现了诸如 this Question 它向我展示了我需要在 DateSigned 对象上设置哪些属性,但没有帮助我弄清楚我需要调用的 PHP 方法。
我正在为我们的项目制作一个包装器 class,所以如果您可以忽略这一点,我将分享我已有的代码,用于添加签名字段,然后我尝试添加签名日期给定签名者的字段。我很困惑我遗漏了什么,实际上会把它放在文档上。我省略了实际调用这些方法的代码,但信封确实发送了——只是没有日期签名字段。
非常感谢
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]));
$this->signers[$index]->setTabs($this->sigTabs[$index]);
return $index; // signerid
}
function addSignerDate($signerId, $xPos, $yPos, $documentId = 1)
{
$index = count($this->dateSignedFields);
$this->dateSignedFields[$index] = new DocuSign\eSign\Model\DateSigned();
// the date should always be on the same page as the signature
$pageNumber = $this->sigFields[$signerId]->getPageNumber();
$this->dateSignedFields[$index]->setPageNumber($pageNumber);
$this->dateSignedFields[$index]->setDocumentId($documentId);
$this->dateSignedFields[$index]->setRecipientId($signerId);
$this->dateSignedFields[$index]->setName('Date Signed');
$this->dateSignedFields[$index]->setTabLabel('Date Signed');
$this->dateSignedFields[$index]->setXPosition($xPos);
$this->dateSignedFields[$index]->setYPosition($yPos);
// EDIT - I added this bit but still no Date Signed. Probably the right track though.
$this->dateSignedTabs[$index] = new DocuSign\eSign\Model\Tabs();
$this->dateSignedTabs[$index]->setDateSignedTabs(array($this->dateSignedFields[$index]));
$this->dateSignedFields[$index]->setTabId($this->dateSignedTabs[$index]);
return $index;
}
好的,这是我修复它的方法。我改为只有一个 Tabs 数组——没有单独的数组用于 Date Signed 字段。 Tabs 对象包含不同类型的 Tabs,因此我们对两个字段使用相同的 Tabs。
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;
}
function addSignerDate($signerId, $xPos, $yPos, $documentId = 1)
{
$index = count($this->dateSignedFields);
$this->dateSignedFields[$index] = new DocuSign\eSign\Model\DateSigned();
// the date should always be on the same page as the signature
$pageNumber = $this->sigFields[$signerId]->getPageNumber();
$this->dateSignedFields[$index]->setPageNumber($pageNumber);
$this->dateSignedFields[$index]->setDocumentId($documentId);
$this->dateSignedFields[$index]->setRecipientId($signerId);
$this->dateSignedFields[$index]->setName('Date Signed');
$this->dateSignedFields[$index]->setTabLabel('Date Signed');
$this->dateSignedFields[$index]->setXPosition($xPos);
$this->dateSignedFields[$index]->setYPosition($yPos);
$this->sigTabs[$signerId]->setDateSignedTabs(array($this->dateSignedFields[$index]));
return $index;
}
然后我稍后在我的 SendEnvelope 方法中将它们添加到文档中:
foreach($this->signers as $signerId => $signer)
{
$this->signers[$signerId]->setTabs($this->sigTabs[$signerId]);
}