2016-06-21 25 views
0

我正在使用https://github.com/docusign/docusign-php-client中的PHP SDK,並且正在嘗試向文檔添加日期簽名字段。我正在成功創建一個信封,添加一個簽名者,併發送信封。但我無法弄清楚我缺少日期簽名字段。無法使用Docusign PHP SDK添加日期簽名字段

我已經搜索高和低的一個例子添加它,以及看看API文檔。我覺得我缺少一些實際將字段或「選項卡」放置在文檔上的方法,並且需要一個指向正確方向的指針。我發現了諸如 this Question 之類的東西,它向我展示了我需要在DateSigned對象上設置哪些屬性,但無法幫助我找出需要調用的PHP方法。

我爲我們的項目做了一個包裝類,所以如果你可以忽略這一點,我將共享我有的代碼,爲了添加簽名字段,然後我嘗試爲給定的簽名者添加日期簽名字段。我很困惑,我錯過了將它放在文檔上的東西。我省略了實際調用這些方法的代碼,但Envelope確實發送 - 只是沒有日期簽名字段。

感謝很多

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; 

} 

回答

2

確定,這裏就是我的固定它。我改爲只有一個Tabs數組 - 沒有單獨的Date Signed字段。 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]); 
} 
+0

酷,感謝張貼的解決方案。你能接受自己的答案是爲了別人的利益嗎? Thx – Ergin

+0

這讓我等了兩天,但我會。 – NilsonCain