2016-06-21 1 views
0

https://github.com/docusign/docusign-php-client에서 PHP SDK를 사용하고 있으며 문서에 날짜 서명 필드를 추가하려고합니다. 나는 성공적으로 봉투를 만들고, 서명자를 추가하고, 봉투를 보내고 있습니다. 그러나 나는 Date Signed 필드에 무엇이 빠졌는지 알 수 없다.Docusign PHP SDK로 날짜 서명 된 필드를 추가 할 수 없습니다

나는 API 문서를 보는 것뿐만 아니라 그것을 추가하는 예를 위해 높고 낮음을 검색했다. 문서에 실제로 필드 나 '탭'을 배치하고 올바른 방향의 포인터가 필요한 몇 가지 방법이 누락 된 것처럼 느껴집니다. this Question 과 같이 DateSigned 객체에 어떤 속성을 설정해야하는지 알았지 만, 호출해야하는 PHP 메소드를 찾는 데 도움이되지 않습니다.

우리 프로젝트의 래퍼 클래스를 만들고 있습니다. 따라서이 비트를 무시할 수 있다면 Signature Field를 추가하기 위해 코드를 공유하고 주어진 Signer에 대해 Date Signed 필드를 추가하려고 시도합니다 . 내가 놓친 부분을 혼동하여 실제로 문서에 놓을 것입니다. 실제로 이러한 메서드를 호출했지만 봉투가 보내지는 코드를 생략했습니다. Date Signed 필드는 없습니다. 많은

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

OK

덕분에, 여기에 내가 그것을 해결 방법은 다음과 같습니다. 하나의 Tabs 배열로 변경되었습니다. Date Signed 필드에 별도의 배열이 없습니다. Tabs 객체는 여러 유형의 Tab을 보유하므로 두 필드 모두에 동일한 객체를 사용합니다.

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