2016-06-22 5 views
0

Ich brauche einen Empfänger, um mehrere Orte in einem Umschlag anzumelden. Vielleicht habe ich eine Dokumentation über den richtigen Weg verpasst, aber es ist mir nicht gelungen, dies zu suchen. Hier ist meine Methode für das Hinzufügen von Empfängern:Wie erhalten Sie mehrere Signaturen in einem Umschlag von einem Empfänger? DocuSign PHP SDK

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; 
} 

Und hier ist mein Versuch, die Methode aufzurufen

$test->addSigner('Nilson Cain', '[email protected]', 90, 652, 1, 1); 
$test->addSigner('Nilson Cain', '[email protected]', 90, 652, 2, 1); 

Leider führt dies in diesem allgemeinen Fehler (die ich nicht ohne die doppelte Empfänger erhalten haben.)

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

Danke für jede Hilfe!

Antwort

1

Ich löste dies, indem ich zuerst die Methode addSigner() in zwei Teile aufteilte. Eine Methode zum Hinzufügen eines Empfängers und eine weitere Methode zum Hinzufügen eines SignHereTab. Sie können mehrere SignHereTabs pro Empfänger, aber keine doppelten Empfänger haben.

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; 
} 

Ich zog auch die setSignHereTabs meiner SendEnvelope Methode, die die Empfänger und SignHereTabs aufgerufen wird, nachdem alle geschaffen werden.

// add tabs to the document 
foreach($this->signers as $signerId => $signer) 
{ 
    $this->sigTabs[$signerId]->setSignHereTabs($this->sigFields); 
    $this->sigTabs[$signerId]->setDateSignedTabs($this->dateSignedFields); 
    $this->signers[$signerId]->setTabs($this->sigTabs[$signerId]); 
} 
+1

Korrekt. Jeder Empfängertyp kann ein Array von jedem der verschiedenen Tab-Typen enthalten. Danke für die Verwendung von DocuSign! –