I am using the DocuSign PHP Rest API. I have copied one of the quick-start examples, however, it is throwing a HTTP 500 Error. I am very new too this API so any help would be appreciated on what could be causing this error. Nothing shows in the browser console and I can't seem to find if there is any syntax errors in the code.
I would imagine that it isn't finding the API properly?
Here is the sign-request.php
<?php
require_once("vendors/docusign/autoload.php");
function send_document_for_signing(){
$accessToken = '***hidden***';
$accountId = '***hidden***';
$signerName = 'John Doe';
$signerEmail = 'John.Doe@example.com';
$fileNamePath = 'demo/demo_orderform.pdf';
$basePath = 'https://demo.docusign.net/restapi';
# Constants
$appPath = getcwd();
#
# Step 1. The envelope definition is created.
# One signHere tab is added.
# The document path supplied is relative to the working directory
#
# Create the component objects for the envelope definition...
$contentBytes = file_get_contents($appPath . "/" . $fileNamePath);
$base64FileContent = base64_encode ($contentBytes);
# create the DocuSign document object
$document = new DocuSign\eSign\Model\Document([
'document_base64' => $base64FileContent,
'name' => 'Example document', # can be different from actual file name
'file_extension' => 'pdf', # many different document types are accepted
'document_id' => '1' # a label used to reference the doc
]);
# The signer object
$signer = new DocuSign\eSign\Model\Signer([
'email' => $signerEmail, 'name' => $signerName, 'recipient_id' => "1", 'routing_order' => "1"
]);
# DocuSign SignHere field/tab object
$signHere = new DocuSign\eSign\Model\SignHere([
'document_id' => '1', 'page_number' => '1', 'recipient_id' => '1',
'tab_label' => 'SignHereTab', 'x_position' => '195', 'y_position' => '147'
]);
# Add the tabs to the signer object
# The Tabs object wants arrays of the different field/tab types
$signer->setTabs(new DocuSign\eSign\Model\Tabs(['sign_here_tabs' => [$signHere]]));
# Next, create the top level envelope definition and populate it.
$envelopeDefinition = new DocuSign\eSign\Model\EnvelopeDefinition([
'email_subject' => "Please sign this document",
'documents' => [$document], # The order in the docs array determines the order in the envelope
# The Recipients object wants arrays for each recipient type
'recipients' => new DocuSign\eSign\Model\Recipients(['signers' => [$signer]]),
'status' => "sent" # requests that the envelope be created and sent.
]);
#
# Step 2. Create/send the envelope.
#
$config = new DocuSign\eSign\Configuration();
$config->setHost($basePath);
$config->addDefaultHeader("Authorization", "Bearer " . $accessToken);
$apiClient = new DocuSign\eSign\Client\ApiClient($config);
$envelopeApi = new DocuSign\eSign\Api\EnvelopesApi($apiClient);
$results = $envelopeApi->createEnvelope($accountId, $envelopeDefinition);
return $results;
};
# Mainline
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
try {
$results = send_document_for_signing();
?>
<html lang="en">
<body>
<h4>Results</h4>
<p>Status: <?php $results['status'] ?>, Envelope ID: <?php $results['envelope_id'] ?></p>
</body>
</html>
<?php
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
if ($e instanceof DocuSign\eSign\Client\ApiException) {
print ("\nDocuSign API error information: \n");
var_dump ($e->getResponseBody());
}
}
die();
}
# Since it isn't a POST, print the form:
?>
<html lang="en">
<body>
<form method="post">
<input type="submit" value="Send document signature request!"
style="width:21em;height:2em;background:#1f32bb;color:white;font:bold 1.5em arial;margin: 3em;"/>
</form>
</body>
</html>
I have hidden the OAuth Token, Account ID and true Sign Name and Email for security reasons.
Any assistance would be handy.
Many thanks, Nathan