- This package was developed to utilize e-contract/signatures directly within a Laravel based CRM.
Maintenance notice: This is a maintained fork of
tjphippen/docusign, which is no longer maintained.
For current endpoint documentation, see the DocuSign eSignature REST API reference.
Add the package to your project:
composer require dalmarcolucas/docusignOr add the following to your composer.json file:
"dalmarcolucas/docusign": "^0.4"Then run composer install or composer update to download and install.
Namespace compatibility: This package is maintained as
dalmarcolucas/docusign, but retains the originalTjphippen\DocusignPHP namespace. The namespace is therefore correct in the manual registration examples below.
The package supports Laravel 8 through 11 and uses auto-discovery, so the service provider and facade are registered automatically.
If auto-discovery is disabled, add the service provider to your config/app.php file within the providers array:
'providers' => [
Tjphippen\Docusign\DocusignServiceProvider::class,
]The package includes an auto-registered facade which provides the static syntax for managing envelopes, recipients, etc.
If you have issues or need to register it manually, add it to your aliases array in config/app.php:
'aliases' => [
'Docusign' => Tjphippen\Docusign\Facades\Docusign::class,
]$ php artisan vendor:publish
The configuration file will be published to config/docusign.php which must be completed to make connections to the API.
DocuSign is phasing out legacy authentication (username/password). The recommended approach is OAuth 2.0 JWT Grant flow.
- Create an integration (app) in the DocuSign Admin Console
- Generate an RSA key pair and note your Integration Key (Client ID)
- Grant consent by visiting the consent URL (one-time step per user)
- Configure your
config/docusign.php:
'auth_type' => 'jwt',
'client_id' => env('DOCUSIGN_CLIENT_ID'), // Integration Key
'user_id' => env('DOCUSIGN_USER_ID'), // User ID (GUID) to impersonate
'private_key' => env('DOCUSIGN_PRIVATE_KEY'), // RSA private key (PEM string)
'auth_server' => 'account-d.docusign.com', // Use 'account.docusign.com' for production
'account_id' => env('DOCUSIGN_ACCOUNT_ID'),
'environment' => 'demo', // Use 'na1', 'na2', etc. for production
'version' => 'v2.1',See DocuSign JWT Grant Documentation for details.
'auth_type' => 'legacy',
'integrator_key' => '',
'email' => '',
'password' => '',Docusign::getUsers();Docusign::getUser($userId);
Docusign::getUser($userId, true); // When true, the full list of user information is returned for the user. Docusign::getFolders(); // By default only the list of template folders are returned
Docusign::getFolders(true); // Will return normal folders plus template foldersDocusign::getFolderEnvelopes($folderId);See: All Parameters for this method.
Docusign::getFolderEnvelopes($folderId, array(
'start_position' => 1, // Integer
'from_date' => '', // date/Time
'to_date' => '', // date/Time
'search_text' => '', // String
'status' => 'created', // Status
'owner_name' => '', // username
'owner_email' => '', // email
);Docusign::getTemplates();Or with Additional Parameters.
Docusign::getTemplates(array(
'folder' => 1, // String (folder name or folder ID)
'folder_ids' => '', // Comma separated list of folder ID GUIDs.
'include' => '', // Comma separated list of additional template attributes
...
);Docusign::getTemplate($templateId);$envelopes = array('49d91fa5-1259-443f-85fc-708379fd7bbe', '8b2d44a-41dc-4698-9233-4be0678c345c');
Docusign::getEnvelopes($envelopes);Docusign::getEnvelope($envelopeId);Docusign::getEnvelopeRecipients($envelopeId);To include tabs simply set the second parameter to true:
Docusign::getEnvelopeRecipients($envelopeId, true);Docusign::getEnvelopeCustomFields($envelopeId);See: Tab Parameters
Docusign::getEnvelopeTabs($envelopeId, $recipientId);This one is a bit tricky. The tabId is required and must be within set of arrays.
See: [Tab Types and Parameters] (https://www.docusign.com/p/RESTAPIGuide/RESTAPIGuide.htm#REST%20API%20References/Tab%20Parameters.htm)
$tabs = ['textTabs' => [['tabId' => '270269f6-4a84-4ff9-86db-2a572eb73d99', 'value' => '123 Fake Street']]];
Docusign::updateRecipientTabs($envelopeId, $recipientId, $tabs);See: Send an Envelope or Create a Draft Envelope for full list of parameters/options.
Docusign::createEnvelope(array(
'templateId' => 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX', // Template ID
'emailSubject' => 'Demo Envelope Subject', // Subject of email sent to all recipients
'status' => 'created', // created = draft ('sent' will send the envelope!)
'templateRoles' => array(
['name' => 'Contractor Name',
'email' => 'contractor@example.com',
'roleName' => 'Contractor',
'clientUserId' => 1],
['name' => 'Jane Someone',
'email' => 'demo@demo.com',
'roleName' => 'Customer']),
));The updateEnvelope method can be used in a variety of ways..
Docusign::updateEnvelope($envelopeId, array(
'emailSubject' => 'New Email Subject', // Required
'emailBlurb' => 'Email message body text'
));Returns embeded signing URL. [Reference] (https://www.docusign.com/p/RESTAPIGuide/RESTAPIGuide.htm#REST%20API%20References/Post%20Recipient%20View.htm)
Docusign::createRecipientView($envelopeId, array(
'userName' => 'Signer Name',
'email' => 'signer@example.com',
'AuthenticationMethod' => 'email',
'clientUserId' => 1, // Must create envelope with this ID
'returnUrl' => 'http://your-site.tdl/returningUrl'
));Docusign::updateEnvelope($envelopeId, ['status' => 'sent']);Docusign::updateEnvelope($envelopeId, array(
'status' => 'voided',
'voidedReason' => 'Just Testing'
));Docusign::deleteEnvelope($envelopeId);- Updated Guzzle dependancy & namespace
- Added trait
- Released

