cyril-bochet / yousign-api-client-v3
API client for Yousign · French eSignature solution.
1.0.9
2025-02-25 10:16 UTC
Requires
- php: >=8.1
- ext-curl: *
- ext-json: *
README
README translation
Client API pour Yousign · solution de signature électronique française.
Toute contribution à l'amélioration est fortement apprécié !
Sommaire
- Initialisation de la requête
- Ajout d'un document
- Ajout d'un signataire
- Mettre à jour les informations d'un signataire
- Ajout des champs
- Envoi de la signature
- Récupération du document signé
- Annuler une requête de signature
- Liens utiles
Initialisation de la requête
use YousignApiClient\YousignApiClient; use YousignApiClient\SignatureRequest; $apikey = 'API_KEY'; $env = 'test'; $client = new YousignApiClient($apikey, $env); // Nouvelle requête $signatureRequest = new SignatureRequest(string $name, string $deliveryMode, string $timezone, bool $orderedSigners); $signatureRequest = new SignatureRequest('Contrat', 'email', 'Europe/Paris', true); // Optionel $signatureRequest->setCustomExperienceId("xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx"); $client->initiateSignatureRequest($signatureRequest);
Création et ajout d'un document
use YousignApiClient\Document; $document = new Document(string $nature, string $path, bool $parseAnchors); $document = new Document('signable_document', 'contrat.pdf', true); $client->addDocument($document); $documentId = $document->getId();
Création d'un objet signataire
use YousignApiClient\Signer; $signer = new Signer(string $firstName, string $lastName, string $email, ?string $phoneNumber, string $locale, ?string $signatureAuthenticationMode, ?string $signatureLevel); $signer = new Signer("Jean", "DUPOND", 'j.dupond@mail.fr', '+33123456789', 'fr', 'otp_sms', 'electronic_signature');
Paramétrage de la police
use YousignApiClient\Font; $font = new Font(string $family, string $color, int $size = 12); $font = new Font('Raleway', '#000000', 9);
Mettre à jour les informations d'un signataire
use YousignApiClient\YousignApiClient; $client = new YousignApiClient($apikey, $env); $client->updateSignerInformation(string $signatureRequestId, string $signerId, string $firstName, string $lastName, string $email, string $phoneNumber) $client->updateSignerInformation('xxxxxxxxxxxxxxxxxx', 'xxxxxxxxxxxxxxxxxx', 'Jean', 'DUPOND', 'j.dupond@mail.fr', '+33123456789');
Création et ajout des champs
use YousignApiClient\Fields\CheckboxField; use YousignApiClient\Fields\MentionField; use YousignApiClient\Fields\RadioField; use YousignApiClient\Fields\RadioGroup; use YousignApiClient\Fields\SignatureField; use YousignApiClient\Fields\TextField; // Signature $signatureField = new SignatureField(string $documentId, int $page, int $x, int $y, int $height = 37, int $width = 85); $signatureField = new SignatureField('xxxxxxxxxxxxxxxxxx', 1, 57, 695, 85, 198); $signer->addField($signatureField); // Radio $radio1 = new RadioField(string $name, int $x, int $y, int $size); $radio1 = new RadioField('radio_1', 154, 341, 12); $radio2 = new RadioField('radio_2', 184, 341, 12); $radioGroup = new RadioGroup(string $documentId, int $page, string $name, bool $optional, array $radios); $radioGroup = new RadioGroup('xxxxxxxxxxxxxx', 1, 'radio_group_name', false, [$radio1, $radio2]); $signer->addField($radioGroup); // Text $textField = new TextField(int $maxLength, string $question, bool $optional, Font $font, string $documentId, int $page, int $x, int $y, int $height = 24, int $width = 24); $textField = new TextField(10, 'Votre prénom :', false, $font, 'xxxxxxxxxxxxxx', 1, 468, 428, 24, 54); $signer->addField($textField); // Checkbox $cb = new CheckboxField($size, $name, $checked, $optional, $documentId, $page, $x, $y); $signer->addField($cb); // Pour les documents avec beaucoup de champs, vous pouvez faire un tableau et boucler dessus $mentionsArray = array( "signataire1" => array( array( "page" => 2, "x" => 57, "y" => 675, "width" => 197, "height" => 24, "mention" => "Certifié exact et sincère", ), array( "page" => 14, "x" => 35, "y" => 318, "width" => 156, "height" => 24, "mention" => "Bon pour acceptation", ), ), "signataire2" => array( array( "page" => 14, "x" => 206, "y" => 318, "width" => 156, "height" => 24, "mention" => "Certifié exact et sincère", ), array( "page" => 2, "x" => 297, "y" => 675, "width" => 197, "height" => 24, "mention" => "Bon pour acceptation", ), ), ); // Exemple : On boucle sur les champs mentions du signataire 2 foreach ($mentionsArray["signataire2"] as $mention) { $mf = new MentionField($mention["mention"], $font, $documentId, $mention["page"], $mention["x"], $mention["y"], $mention["height"], $mention["width"]); $signer2->addField($mf); }
Ajout des signataires et envoi de la signature
$client->addSigner($signer); $client->sendSignatureRequest();
Webhooks
use YousignApiClient\Webhook\Scope; use YousignApiClient\Webhook\Webhook; use YousignApiClient\Webhook\WebhookEvent; // Nouveau Webhook $allEvents = new WebhookEvent('*'); $event = new WebhookEvent('signature_request.done'); $allScopes = new Scope('*'); $scope = new Scope('public_api'); $webhook = new Webhook(bool $sandbox, bool $autoRetry, bool $enabled, string $endpoint, string $description, array $events, array $scopes); $webhook = new Webhook(true, true, true, 'endpoint.fr', 'test', [$allEvents], [$allScopes]); $client->createWebhook($webhook); // Liste des Webhooks $webhooks = $client->listWebhooks();
Récupérer le document signé
$response = $client->downloadSignedDocument(string $signatureRequestId); $response = $client->downloadSignedDocument('xxxxxxxxxxxxxxxx'); $file = fopen('path/to/file.pdf', 'w'); fwrite($file, $response); fclose($file);
Annuler une requête de signature
use YousignApiClient\CancellationRequest; // Nouvelle requête d'annulation $cancellationRequest = new CancellationRequest(string $reason, string $signatureRequestId, ?string $customNote = null); $cancellationRequest = new CancellationRequest('other', 'xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx', 'Note personnalisée'); $client->cancelRequest($cancellationRequest);
Liens utiles
Pour récupérer les coordonnées d'un endroit sur le document : https://placeit.yousign.fr
Documentation complète de l'API Yousign : https://developers.yousign.com/reference/oas-specification