Sample code for 30+ languages & platforms
PHP Extension

Send DocuSign XML Request

See more HTTP Misc Examples

Demonstrates how to send a DocuSign XML request.

Chilkat PHP Extension Downloads

PHP Extension
<?php

include("chilkat.php");

$success = false;

// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

$req = new CkHttpRequest();

$req->put_HttpVerb('POST');

// Replace "12999999" with your own account number. (12999999 is a ficticious account number)
$req->put_Path('/restapi/v2/accounts/12999999/envelopes');

$req->AddHeader('Accept','application/xml');

// Don't worry about the boundary string.  Chilkat will automatically generate one and include it.
$req->put_ContentType('multipart/form-data');

$xmlCred = new CkXml();
$xmlCred->put_Tag('DocuSignCredentials');
$xmlCred->UpdateChildContent('Username','YOUR_DOCUSIGN_USERNAME');
$xmlCred->UpdateChildContent('Password','YOUR_DOCUSIGN_PASSWORD');
$xmlCred->UpdateChildContent('IntegratorKey','ABCD-12345678-1234-AAAA-BBBB-abcdabcdabcd');
$xmlCred->put_EmitXmlDecl(false);
$xmlCred->put_EmitCompact(true);
$req->AddHeader('X-DocuSign-Authentication',$xmlCred->getXml());

// Don't worry about Host or Content-Length headers, Chilkat automatically adds them...

// Build the XML for the 1st body part..
$xml = new CkXml();
$xml->put_Tag('envelopeDefinition');
$xml->AddAttribute('xmlns','http://www.docusign.com/restapi');
$xml->UpdateChildContent('emailSubject','Signature Request: Test Test:001019:033611');
$xml->UpdateChildContent('status','sent');
$xml->UpdateChildContent('documents|document|documentId','1');
$xml->UpdateChildContent('documents|document|name','001019_TestTest_RetailDeals_163357');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|hostEmail','admin@chilkatsoft.com');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|hostName','Chilkat Admin');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|signerName','Test  Test');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|recipientId','1');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|routingOrder','1');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|signerEmail','test@tyest.com');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere|anchorIgnoreIfNotPresent','True');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere|anchorString','\\SDP');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere|optional','False');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[1]|anchorIgnoreIfNotPresent','True');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[1]|anchorString','\\OSDP');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[1]|optional','True');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[2]|anchorIgnoreIfNotPresent','True');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[2]|anchorString','\\OPSSDP');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[2]|optional','True');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[2]|scaleValue','0.7');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[3]|anchorIgnoreIfNotPresent','True');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[3]|anchorString','\\PSSDP');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[3]|optional','False');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[3]|scaleValue','0.7');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere|anchorIgnoreIfNotPresent','True');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere|anchorString','\\IDP');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere|optional','False');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[1]|anchorIgnoreIfNotPresent','True');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[1]|anchorString','\\OIDP');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[1]|optional','True');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[2]|anchorIgnoreIfNotPresent','True');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[2]|anchorString','\\OPSIDP');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[2]|optional','True');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[2]|scaleValue','0.5');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[3]|anchorIgnoreIfNotPresent','True');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[3]|anchorString','\\PSIDP');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[3]|optional','False');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[3]|scaleValue','0.5');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner[1]|hostEmail','admin@chilkatsoft.com');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner[1]|hostName','Chilkat Admin');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner[1]|signerName','Dealer Representative');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner[1]|recipientId','2');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner[1]|routingOrder','2');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere|anchorIgnoreIfNotPresent','True');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere|anchorString','\\DSDP');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere|optional','False');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere[1]|anchorIgnoreIfNotPresent','True');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere[1]|anchorString','\\DOSDP');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere[1]|optional','True');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere|anchorIgnoreIfNotPresent','True');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere|anchorString','\\DIDP');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere|optional','False');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere[1]|anchorIgnoreIfNotPresent','True');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere[1]|anchorString','\\DOIDP');
$xml->UpdateChildContent('recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere[1]|optional','True');
$xml->put_EmitXmlDecl(false);

print $xml->getXml() . "\n";

$xml->put_EmitCompact(true);

$req->AddStringForUpload2('','',$xml->getXml(),'utf-8','application/xml');
$req->AddFileForUpload2('','qa_data/pdf/signatureForm.pdf','application/pdf');
$req->AddSubHeader(1,'Content-Disposition','file; filename=\'signatureForm.pdf\';documentid=1');

$http = new CkHttp();

$http->put_SessionLogFilename('qa_output/log.txt');

$resp = new CkHttpResponse();
$success = $http->HttpSReq('na2.docusign.net',443,true,$req,$resp);
if ($success == false) {
    print $http->lastErrorText() . "\n";
    exit;
}

if ($resp->get_StatusCode() != 201) {
    print $resp->bodyStr() . "\n";
    print 'Response status code: ' . $resp->get_StatusCode() . "\n";
    print 'Failed.' . "\n";
    exit;
}

// Examine the response..
$xml->LoadXml($resp->bodyStr());
$envelopeId = $xml->getChildContent('envelopeId');
print 'envelopeId = ' . $envelopeId . "\n";
$status = $xml->getChildContent('status');
print 'status = ' . $status . "\n";
$statusDateTime = $xml->getChildContent('statusDateTime');
print 'statusDateTime = ' . $statusDateTime . "\n";
$uri = $xml->getChildContent('uri');
print 'uri = ' . $uri . "\n";

?>