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.