Sample code for 30+ languages & platforms
Perl

Send DocuSign XML Request

See more HTTP Misc Examples

Demonstrates how to send a DocuSign XML request.

Chilkat Perl Downloads

Perl
use chilkat();

$success = 0;

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

$req = chilkat::CkHttpRequest->new();

$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 = chilkat::CkXml->new();
$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(0);
$xmlCred->put_EmitCompact(1);
$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 = chilkat::CkXml->new();
$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(0);

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

$xml->put_EmitCompact(1);

$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 = chilkat::CkHttp->new();

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

$resp = chilkat::CkHttpResponse->new();
$success = $http->HttpSReq("na2.docusign.net",443,1,$req,$resp);
if ($success == 0) {
    print $http->lastErrorText() . "\r\n";
    exit;
}

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

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