Problématique : votre entreprise souhaite que les documents envoyés via DocuSign soient automatiquement uploadés sur Google Drive une fois complétés.

Vous disposez :

  • d'un compte DocuSign
  • de G Suite dans votre entreprise

1 Créer un compte de service Google

La démarche est très bien détaillée dans la documentation Google Cloud. Sauvegardez bien le fichier .json de credentials, et conservez-le précieusement !

2 Configurer le webhook DocuSign

Sur DocuSign : vignette de profil → Go to Admin → Connect → Add Configuration. Renseignez l'URL où sera hébergé le script ci-dessous. Vous pouvez configurer ce webhook pour être appelé à l'envoi de l'enveloppe, à la signature, etc.

3 Le script PHP

Hébergez le script à l'URL définie, avec un petit composer require google/apiclient:"^2.0" dans le même dossier, et ajoutez-y votre .json :

// Le webhook DocuSign nous envoie un XML contenant les PDF signés
require __DIR__ . '/vendor/autoload.php';

putenv('GOOGLE_APPLICATION_CREDENTIALS=./VOS_CREDENTIALS.json');
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(Google_Service_Drive::DRIVE);
$driveService = new Google_Service_Drive($client);

$data = file_get_contents('php://input');
$xml = simplexml_load_string($data, 'SimpleXMLElement', LIBXML_PARSEHUGE);

if ((string) $xml->EnvelopeStatus->Status === 'Completed') {
    // On parcourt les PDF de l'enveloppe et on les envoie sur Drive
    foreach ($xml->DocumentPDFs->DocumentPDF as $pdf) {
        $fileMetadata = new Google_Service_Drive_DriveFile([
            'name' => (string) $pdf->DocumentID . '.pdf',
        ]);
        $driveService->files->create($fileMetadata, [
            'data' => base64_decode((string) $pdf->PDFBytes),
            'mimeType' => 'application/pdf',
            'uploadType' => 'multipart',
            'fields' => 'id',
        ]);
    }
}

Modifiez VOS_CREDENTIALS pour indiquer le chemin de votre fichier, et changez le name comme vous le souhaitez (plein d'infos sont disponibles dans le $xml).

Et voilà : vos documents signés s'enregistrent tout seuls sur Drive.