PHPackages                             ferreiramg/clicksign - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. ferreiramg/clicksign

ActiveLibrary[API Development](/categories/api)

ferreiramg/clicksign
====================

SDK para integrar Clicksign em Laravel 12

v2.2.4(9mo ago)026MITPHPPHP ^8.2CI passing

Since Jul 11Pushed 9mo agoCompare

[ Source](https://github.com/Ferreiramg/clicksign)[ Packagist](https://packagist.org/packages/ferreiramg/clicksign)[ Docs](https://github.com/Ferreiramg/clicksign)[ RSS](/packages/ferreiramg-clicksign/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (6)Versions (11)Used By (0)

Clicksign Laravel SDK v3
========================

[](#clicksign-laravel-sdk-v3)

[![Latest Version on Packagist](https://camo.githubusercontent.com/37533f2bb353e158ba6737ffb857aaeda16278f581dfb27a03e9eb7f946be21c/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f66657272656972616d672f636c69636b7369676e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/ferreiramg/clicksign)[![Tests](https://camo.githubusercontent.com/817c4d18ec008def8582b839e8d4d2195490c850a41b313edfb3b6db67212849/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f46657272656972616d672f636c69636b7369676e2f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/Ferreiramg/clicksign/actions/workflows/run-tests.yml)[![Total Downloads](https://camo.githubusercontent.com/60ca349aba7165ce9c07811b2bee2fceeb29ea0ea1f4ab744a0fb3b8b7571d88/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f66657272656972616d672f636c69636b7369676e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/ferreiramg/clicksign)

SDK para integração com a **API v3** do Clicksign em aplicações Laravel. Este pacote foi completamente atualizado para trabalhar com a nova arquitetura baseada em envelopes da API v3.

Requisitos
----------

[](#requisitos)

- PHP 8.2 ou superior
- Laravel 12.x

Instalação
----------

[](#instalação)

Você pode instalar o pacote via composer:

```
composer require ferreiramg/clicksign
```

Configuração
------------

[](#configuração)

Publique o arquivo de configuração:

```
php artisan vendor:publish --tag="clicksign-config"
```

Configure suas variáveis de ambiente no arquivo `.env`:

```
CLICKSIGN_ACCESS_TOKEN=your_access_token_here
CLICKSIGN_BASE_URL=https://app.clicksign.com/api/v3
CLICKSIGN_SANDBOX=false
CLICKSIGN_SANDBOX_URL=https://sandbox.clicksign.com/api/v3
CLICKSIGN_WEBHOOK_SECRET=your_webhook_secret_here
```

Fluxo Básico de Assinatura
--------------------------

[](#fluxo-básico-de-assinatura)

A API v3 do Clicksign segue um fluxo baseado em **envelopes**:

1. **Envelope**: Container que agrupa documentos, signatários e requisitos
2. **Documento**: O arquivo que será assinado
3. **Signatário**: Pessoa que irá assinar o documento
4. **Requisitos**: Regras de assinatura e autenticação
5. **Ativação**: Colocar o envelope em execução
6. **Notificação**: Enviar notificações aos signatários

Uso com Workflow Helper
-----------------------

[](#uso-com-workflow-helper)

### Fluxo Completo Simplificado

[](#fluxo-completo-simplificado)

```
use Clicksign\Support\ClicksignWorkflow;
use Clicksign\Facades\Clicksign;

// Instanciar o workflow helper
$workflow = new ClicksignWorkflow(app(ClicksignClientInterface::class));

// Dados do signatário
$signers = [
    [
        'name' => 'João Silva',
        'email' => 'joao@example.com',
        'birthday' => '1990-01-01',
        'has_documentation' => true
    ]
];

// Criar workflow completo
$result = $workflow->createSignatureWorkflow(
    envelopeName: 'Contrato de Prestação de Serviços',
    filename: 'contrato.pdf',
    contentBase64: base64_encode(file_get_contents('path/to/contrato.pdf')),
    signers: $signers,
    envelopeOptions: [
        'locale' => 'pt-BR',
        'auto_close' => true,
        'remind_interval' => 3,
        'deadline_at' => '2025-12-31T23:59:59.000-03:00'
    ]
);

$envelopeId = $result['envelope']['data']['id'];

// Ativar o processo de assinatura
$workflow->startSignatureProcess($envelopeId);

// Enviar notificação
$workflow->sendNotification($envelopeId, 'Por favor, assine o documento.');
```

### Fluxo com Template

[](#fluxo-com-template)

```
// Criar workflow usando template
$result = $workflow->createTemplateWorkflow(
    envelopeName: 'Contrato Personalizado',
    filename: 'contrato_preenchido.docx',
    templateId: 'template_123',
    templateData: [
        'nome_cliente' => 'João Silva',
        'valor_contrato' => 'R$ 5.000,00',
        'data_vencimento' => '31/12/2025'
    ],
    signers: $signers
);
```

Uso Direto da API
-----------------

[](#uso-direto-da-api)

### Criando um Envelope

[](#criando-um-envelope)

```
use Clicksign\Facades\Clicksign;
use Clicksign\DTO\Envelope;

$envelope = new Envelope(
    name: 'Meu Envelope',
    locale: 'pt-BR',
    autoClose: true,
    remindInterval: 3,
    blockAfterRefusal: true,
    deadlineAt: '2025-12-31T23:59:59.000-03:00'
);

$response = Clicksign::createEnvelope($envelope->toArray());
$envelopeId = $response['data']['id'];
```

### Adicionando um Documento

[](#adicionando-um-documento)

```
use Clicksign\DTO\Document;

// Documento a partir de arquivo
$document = Document::fromFile(
    filename: 'contrato.pdf',
    contentBase64: base64_encode(file_get_contents('path/to/arquivo.pdf'))
);

$response = Clicksign::createDocument($envelopeId, $document->toArray());
$documentId = $response['data']['id'];

// Documento a partir de template
$document = Document::fromTemplate(
    filename: 'contrato_preenchido.docx',
    templateId: 'template_123',
    templateData: [
        'nome' => 'João Silva',
        'valor' => 'R$ 1.000,00'
    ]
);
```

### Adicionando Signatários

[](#adicionando-signatários)

```
use Clicksign\DTO\Signer;

$signer = Signer::create(
    name: 'João Silva',
    email: 'joao@example.com',
    birthday: '1990-01-01',
    hasDocumentation: true
);

$response = Clicksign::createSigner($envelopeId, $signer->toArray());
$signerId = $response['data']['id'];
```

### Adicionando Requisitos

[](#adicionando-requisitos)

```
use Clicksign\DTO\Requirement;

// Requisito de assinatura
$signatureReq = Requirement::createSignatureRequirement(
    documentId: $documentId,
    signerId: $signerId,
    role: 'sign'
);

Clicksign::createRequirement($envelopeId, $signatureReq->toArray());

// Requisito de autenticação
$authReq = Requirement::createAuthRequirement(
    documentId: $documentId,
    signerId: $signerId,
    auth: 'email'
);

Clicksign::createRequirement($envelopeId, $authReq->toArray());
```

### Ativando o Envelope

[](#ativando-o-envelope)

```
use Clicksign\DTO\Envelope;

$envelope = new Envelope(
    id: $envelopeId,
    status: 'running'
);

Clicksign::updateEnvelope($envelopeId, $envelope->toUpdateArray());
```

### Enviando Notificações

[](#enviando-notificações)

```
Clicksign::sendNotification($envelopeId, [
    'type' => 'notifications',
    'attributes' => [
        'message' => 'Por favor, assine o documento urgentemente.'
    ]
]);
```

Operações em Massa
------------------

[](#operações-em-massa)

### Atualizações em Lote de Requisitos

[](#atualizações-em-lote-de-requisitos)

```
$operations = [
    [
        'op' => 'remove',
        'ref' => [
            'type' => 'requirements',
            'id' => 'requirement_123'
        ]
    ],
    [
        'op' => 'add',
        'data' => [
            'type' => 'requirements',
            'attributes' => [
                'action' => 'provide_evidence',
                'auth' => 'icp_brasil'
            ],
            'relationships' => [
                'document' => [
                    'data' => ['type' => 'documents', 'id' => $documentId]
                ],
                'signer' => [
                    'data' => ['type' => 'signers', 'id' => $signerId]
                ]
            ]
        ]
    ]
];

Clicksign::bulkRequirements($envelopeId, ['atomic:operations' => $operations]);
```

Templates
---------

[](#templates)

### Criando um Template

[](#criando-um-template)

```
use Clicksign\DTO\Template;

$template = new Template(
    name: 'Contrato Padrão',
    contentBase64: base64_encode(file_get_contents('template.docx')),
    color: '#577b8d'
);

$response = Clicksign::createTemplate($template->toArray());
```

Status e Monitoramento
----------------------

[](#status-e-monitoramento)

### Verificando Status do Envelope

[](#verificando-status-do-envelope)

```
$status = $workflow->getEnvelopeStatus($envelopeId);

echo "Status do envelope: " . $status['envelope']['data']['attributes']['status'];
echo "Signatários: " . count($status['signers']['data']);
echo "Requisitos: " . count($status['requirements']['data']);
```

### Eventos

[](#eventos)

```
// Eventos de um documento específico
$documentEvents = Clicksign::getDocumentEvents($envelopeId, $documentId);

// Eventos de todos os documentos do envelope
$envelopeEvents = Clicksign::getEnvelopeEvents($envelopeId);
```

Modo Sandbox
------------

[](#modo-sandbox)

Para testes, configure o modo sandbox:

```
CLICKSIGN_SANDBOX=true
```

Ou use diretamente:

```
$client = new ClicksignClient(
    accessToken: 'your_token',
    baseUrl: 'https://sandbox.clicksign.com/api/v3'
);
```

Tratamento de Erros
-------------------

[](#tratamento-de-erros)

```
use Clicksign\Exceptions\{
    AuthenticationException,
    DocumentNotFoundException,
    ValidationException,
    ClicksignException
};

try {
    $response = Clicksign::createEnvelope($envelope->toArray());
} catch (AuthenticationException $e) {
    // Token inválido
} catch (ValidationException $e) {
    // Dados inválidos
    $errors = $e->getErrors();
} catch (DocumentNotFoundException $e) {
    // Documento não encontrado
} catch (ClicksignException $e) {
    // Outros erros da API
}
```

Contribuindo
------------

[](#contribuindo)

Por favor, veja [CONTRIBUTING](CONTRIBUTING.md) para detalhes.

Segurança
---------

[](#segurança)

Se você descobrir alguma vulnerabilidade de segurança, por favor envie um e-mail para  ao invés de usar o issue tracker.

Créditos
--------

[](#créditos)

- [Ferreiramg](https://github.com/Ferreiramg)
- [Todos os Contribuidores](../../contributors)

Licença
-------

[](#licença)

A licença MIT (MIT). Por favor veja [License File](LICENSE.md) para mais informações.

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance58

Moderate activity, may be stable

Popularity7

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

10

Last Release

299d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/e8f58370e7c90c53132acf92e215ac31b4dd300d97bd2497fc9146cab2f9a983?d=identicon)[Ferreiramg](/maintainers/Ferreiramg)

---

Top Contributors

[![Ferreiramg](https://avatars.githubusercontent.com/u/1509447?v=4)](https://github.com/Ferreiramg "Ferreiramg (18 commits)")

---

Tags

laravelsdksignaturedigital-signatureclicksign

###  Code Quality

TestsPest

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/ferreiramg-clicksign/health.svg)

```
[![Health](https://phpackages.com/badges/ferreiramg-clicksign/health.svg)](https://phpackages.com/packages/ferreiramg-clicksign)
```

###  Alternatives

[resend/resend-laravel

Resend for Laravel

1191.4M6](/packages/resend-resend-laravel)[essa/api-tool-kit

set of tools to build an api with laravel

52680.5k](/packages/essa-api-tool-kit)[dragon-code/laravel-json-response

Automatically always return a response in JSON format

1118.6k1](/packages/dragon-code-laravel-json-response)[surface/laravel-webfinger

A Laravel package to create an ActivityPub webfinger.

113.8k](/packages/surface-laravel-webfinger)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
