DocuSign / Esign官方客户:在信封中包含多个强制签名者的语法

时间:2018-04-03 19:19:03

标签: php docusignapi

我似乎迷失在REST API/PHP语法和DocuSign PHP客户端的文档中并没有多大帮助。 我正在解决的问题是how to add two remote signers (both must sign) to one envelope。签署文件非常重要。

如果我使用此代码,只有第二个获取电子邮件,签名后,文档即告完成。 (编辑:包括完整代码)     

echo 'Docusign php file alive, results (potentially) below<p><p>';
//Get variables from ???esign.php
$recemail = 'martin.strnad@xxx.com';
$recname = 'test name partner';
$xsoftrecemail = 'martin.strnad@yyy.com';
$xsoftrecname = 'test name employee';

require_once('vendor/autoload.php');
require_once('vendor/docusign/esign-client/autoload.php');
// DocuSign account credentials & Integrator Key
$username = "";
$password = "";
$integrator_key = "";
$host = "https://demo.docusign.net/restapi";
// create a new DocuSign configuration and assign host and header(s)
$config = new DocuSign\eSign\Configuration();
$config->setHost($host);
$config->addDefaultHeader("X-DocuSign-Authentication", "{\"Username\":\"" . 
$username . "\",\"Password\":\"" . $password . "\",\"IntegratorKey\":\"" . 
$integrator_key . "\"}");
/////////////////////////////////////////////////////////////////////////
// STEP 1:  Login() API
/////////////////////////////////////////////////////////////////////////
// instantiate a new docusign api client
$apiClient = new DocuSign\eSign\ApiClient($config);
// we will first make the Login() call which exists in the 
AuthenticationApi...
$authenticationApi = new DocuSign\eSign\Api\AuthenticationApi($apiClient);
// optional login parameters
$options = new \DocuSign\eSign\Api\AuthenticationApi\LoginOptions();
// call the login() API
$loginInformation = $authenticationApi->login($options);
// parse the login results
if(isset($loginInformation) && count($loginInformation) > 0)
{
// note: defaulting to first account found, user might be a member of multiple accounts
$loginAccount = $loginInformation->getLoginAccounts()[0];
    if(isset($loginInformation))
    {
        $accountId = $loginAccount->getAccountId();
        if(!empty($accountId))
        {
            echo "Account ID = $accountId\n";
        }
    }
}
/////////////////////////////////////////////////////////////////////////
// STEP 2:  Create & Send Envelope (aka Signature Request)
/////////////////////////////////////////////////////////////////////////// set recipient information
$recipientName = $recname;
$recipientEmail = $recemail;
$ysoftrecipientName = $xsoftrecname;
$ysoftrecipientEmail = $xsoftrecemail;


// configure the document we want signed
$documentFileName = "/doc2besigned.pdf";
$documentName = "SignTest1.pdf";
// instantiate a new envelopeApi object
$envelopeApi = new DocuSign\eSign\Api\EnvelopesApi($apiClient);
// Add a document to the envelope
$document = new DocuSign\eSign\Model\Document();
$document->setDocumentBase64(base64_encode(file_get_contents(__DIR__ . 
$documentFileName)));
$document->setName($documentName);
$document->setDocumentId("1");
// Create a |SignHere| tab somewhere on the document for the recipient to 
sign
$signHere = new \DocuSign\eSign\Model\SignHere();
$signHere->setXPosition("100");
$signHere->setYPosition("100");
$signHere->setDocumentId("1");
$signHere->setPageNumber("1");
$signHere->setRecipientId("1");

// $signHere = new \DocuSign\eSign\Model\SignHere();
$signHere->setXPosition("200");
$signHere->setYPosition("100");
$signHere->setDocumentId("1");
$signHere->setPageNumber("3");
$signHere->setRecipientId("2");


// add the signature tab to the envelope's list of tabs
$tabs = new DocuSign\eSign\Model\Tabs();
$tabs->setSignHereTabs(array($signHere));
// add a counterparty signer to the envelope


$signer = new \DocuSign\eSign\Model\Signer();
$signer->setEmail($recipientEmail);
$signer->setName($recipientName);
$signer->setRecipientId("1");
$signer->setRoutingOrder("1");

// $signer = new \DocuSign\eSign\Model\Signer();
$signer->setEmail($xsoftrecipientEmail);
$signer->setName($xsoftrecipientName);
$signer->setRecipientId("2");
$signer->setRoutingOrder("1");

$signer->setTabs($tabs);
// Add a recipient to sign the document
$recipients = new DocuSign\eSign\Model\Recipients();
$recipients->setSigners(array($signer));
$envelop_definition = new DocuSign\eSign\Model\EnvelopeDefinition();
$envelop_definition->setEmailSubject("[XSoft RoboLawyer] - Please sign this 
doc");
// set envelope status to "sent" to immediately send the signature request
$envelop_definition->setStatus("sent");
$envelop_definition->setRecipients($recipients);
$envelop_definition->setRecipients($recipients);
$envelop_definition->setDocuments(array($document));

// create and send the envelope! (aka signature request)
$envelop_summary = $envelopeApi->createEnvelope($accountId, 
$envelop_definition, null);
echo "$envelop_summary\n";
?>

1 个答案:

答案 0 :(得分:0)

代码没有显示添加两个签名者,它只显示填充一个签名者详细信息,如电子邮件,姓名等。检查Unit Test Code以查看如何使用PHP发送信封。