la-souris/document-signer-docusign
DocuSign driver for la-souris/document-signer that lets Laravel and PHP apps send documents for eSignature, track envelope signing status, and retrieve completed, signed files through one consistent, framework-agnostic signing API.
SignatureProvider contract from la-souris/document-signer-sdk, so the roadmap decision becomes which provider (DocuSign now, others later) rather than whether to own signing infrastructure, certificate-of-completion handling, and audit retention.anchorYOffset plus the document-wide anchorYOffsetPixels fine-tune let the team correct visual drift in signature placement without a code deploy. That's a config-level knob for a class of defects that otherwise generates support tickets and re-sends — worth calling out in launch readiness and QA plans.downloadSignedDocument() keyed on the caller's own Document::$id (mapped via a persisted envelope custom field, with a document-name fallback and Summary.pdf skipped) supports the downstream product surface — "download your signed contract" in the customer portal, archival to storage, and hand-off to billing. The retryable SignedDocumentUnavailableException explicitly models the real-world gap between "signing complete" and "document finalized," which shapes UX (show "preparing your document" states rather than hard failures).downloadAudit() returning DocuSign's Certificate of Completion as PDF — with the raw audit_events JSON still reachable via DocuSignClient::downloadAuditEventsJson() — supports legal/audit requirements and any "prove who signed what, when" obligation. This is the artifact that often unblocks enterprise or regulated-customer deals.EventType mapping for DocuSign Connect callbacks means product can design event-driven flows (sent → delivered → completed → declined → voided) without bespoke parsing per provider. This underpins notification, retry, and lifecycle features.Adopt when:
la-souris/document-signer-sdk ^1.0 — this package is explicitly a provider implementation for that contract, not a standalone signing library. Confirm the contract's abstractions fit your domain before committing.Look elsewhere or defer when:
SignatureProvider contract softens this, but pin versions and expect minor churn.To executives (business case): This package lets us ship DocuSign-powered contract signing inside our product without building signing infrastructure ourselves, and without hard-wiring the business to one vendor. It covers the full commercial loop that customers and auditors actually ask about: send for signature, place fields accurately on dynamically generated documents, retrieve the signed PDF, and produce DocuSign's Certificate of Completion as evidence. The strategic value is the contract boundary: DocuSign is the first provider behind a shared interface, so provider choice stays a commercial decision rather than a rewrite. Cost profile is DocuSign's per-envelope pricing plus integration effort — no new platform to operate. Risk to flag honestly: this is a v1.0.0 initial public release and requires PHP 8.3+, so we should pin the version, confirm our PHP upgrade timing, and treat early adoption as a tracked dependency with a fallback plan.
To engineering:
This is a provider adapter, not a framework. It implements the la-souris/document-signer-sdk SignatureProvider contract: DocuSignProvider with DocuSignConfig, DocuSignClient, and JWT auth via DocuSignJwtAuth. Notable engineering-relevant specifics: anchor-based tab placement with per-tab anchorYOffset and a document-wide anchorYOffsetPixels fine-tune (config, not code, for drift correction); explicit sizing on every field type; document-id mapping persisted in an envelope-level sdkDocumentMap custom field with a normalized-name fallback and Summary.pdf excluded; retryable SignedDocumentUnavailableException for not-yet-finalized documents; downloadAudit() for the Certificate of Completion PDF with raw audit_events JSON available separately; and EventType mapping for Connect webhooks. Constraints: PHP 8.3+, SDK ^1.0. Expect to own config wiring, idempotent webhook handling, retry/backoff around the retryable exception, and observability. Given v1.0.0, pin the version and keep the boundary thin so an SDK bump is a contained change.
Ask: approve a scoped pilot (one document flow end-to-end: generate → anchor-place → send → webhook → retrieve signed PDF + certificate) to validate placement accuracy and the finalization-timing UX before committing to broader rollout.
How can I help you explore Laravel packages today?