douchang8758 2018-04-03 19:19
浏览 101

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

I seem to be lost in the REST API/PHP syntax and documentation of the DocuSign PHP client has been less than helpful. The problem I'm solving is how to add two remote signers (both must sign) to one envelope. It is important that both sign the document.

If I use this code, only the second one gets the email and after he signs, the document is completed. (edit: included complete code)

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
";
        }
    }
}
/////////////////////////////////////////////////////////////////////////
// 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
";
?>
  • 写回答

1条回答 默认 最新

  • dss087358 2018-04-03 21:37
    关注

    Code is not showing adding two signers, its just showing populating one signer details, like email, name etc. Check Unit Test Code to see how to send envelope using PHP.

    评论

报告相同问题?

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭