femitz / c6bank-php
Uma biblioteca PHP para integração com a API do C6 Bank
Requires
- php: ^8.5.0
- guzzlehttp/guzzle: ^7.9
- psr/http-message: ^2.0
Requires (Dev)
- guzzlehttp/psr7: ^2.7
- laravel/pint: ^1.29.3
- pestphp/pest: ^5.0.0
- pestphp/pest-plugin-phpstan: ^5.0.0
- pestphp/pest-plugin-rector: ^5.0.0
- pestphp/pest-plugin-type-coverage: ^5.0.0
- phpstan/phpstan: ^2.2.5
- rector/rector: ^2.5.7
- symfony/var-dumper: ^8.1.1
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-24 13:56:41 UTC
README
C6 Bank PHP
Uma biblioteca PHP para facilitar a integração com a API do C6 Bank, permitindo consumir seus endpoints (como Pix, boletos, extratos e demais recursos disponibilizados pelo banco) de forma simples e tipada, sem precisar lidar diretamente com autenticação, requisições HTTP e parsing de respostas.
Requer PHP 8.5+
📦 Instalação
Instale via Composer:
composer require femitz/c6bank-php
🚀 Uso
Autenticação
A API do C6 Bank (BaaS) utiliza o fluxo OAuth2 client_credentials combinado com mTLS
(certificado cliente + chave privada), tanto no sandbox quanto — presumivelmente — em produção.
use Femitz\C6BankPhp\Client; use Femitz\C6BankPhp\Config; use Femitz\C6BankPhp\Environment; use Femitz\C6BankPhp\PartnerSoftware; use Femitz\C6BankPhp\Auth\Certificate; use Femitz\C6BankPhp\Auth\Credentials; $config = new Config( credentials: new Credentials( clientId: 'seu-client-id', clientSecret: 'seu-client-secret', ), certificate: new Certificate( certPath: '/caminho/para/certificado.crt', keyPath: '/caminho/para/chave.key', // certPassword: 'opcional', // keyPassword: 'opcional', ), partnerSoftware: new PartnerSoftware( name: 'Nome do seu software', version: '1.0.0', ), environment: Environment::Sandbox, // ou Environment::Production ); $client = new Client($config); $token = $client->getAccessToken(); // reaproveitado em memória até expirar echo $token->authorizationHeader(); // "Bearer eyJ..."
Bolepix (emissão de boleto híbrido com Pix)
use Femitz\C6BankPhp\Bolepix\Address; use Femitz\C6BankPhp\Bolepix\CreateBolepixRequest; use Femitz\C6BankPhp\Bolepix\Fees; use Femitz\C6BankPhp\Bolepix\Payer; use Femitz\C6BankPhp\Bolepix\PaymentMethod; use Femitz\C6BankPhp\Bolepix\PixOptions; $request = new CreateBolepixRequest( externalReferenceId: 'seu-id-de-referencia', amount: 150.00, dueDate: '2026-12-30', // ou uma instância de DateTimeInterface payer: new Payer( name: 'José da Silva', taxId: '12345678910', address: new Address( address: 'Av. Nove de Julho, 3186', neighborhood: 'Jardim Paulista', city: 'São Paulo', state: 'SP', zipCode: '01406000', ), email: 'pagador@email.com.br', ), description: 'Mensalidade referente a Junho/2026', daysAfterDueDate: 10, fees: new Fees( fineValue: 10, fineDeadline: 1, fineType: 'FIXED_VALUE', interestValue: 0.33, interestDeadline: 1, interestType: 'VALUE_PER_DAY', ), paymentMethod: new PaymentMethod( pix: new PixOptions( key: '123e4567-e89b-12d3-a456-426614174000', type: 'EVP', ), ), ); $bolepix = $client->bolepix()->create($request); echo $bolepix->bankSlip?->digitableLine; echo $bolepix->pix?->qrCode;
Para consultar um bolepix já emitido, use o mesmo external_reference_id informado na criação:
$bolepix = $client->bolepix()->get('seu-id-de-referencia'); echo $bolepix->status; echo $bolepix->payer?->name;
Para baixar o PDF do boleto:
$pdf = $client->bolepix()->getPdf('seu-id-de-referencia'); file_put_contents('boleto.pdf', $pdf);
Para atualizar um bolepix já emitido (apenas os campos informados são enviados; note que, diferente da
emissão, o payer aqui só aceita email e address — name/tax_id não podem ser alterados):
use Femitz\C6BankPhp\Bolepix\BankSlipOptions; use Femitz\C6BankPhp\Bolepix\UpdateBolepixRequest; use Femitz\C6BankPhp\Bolepix\UpdatePayerOptions; $request = new UpdateBolepixRequest( amount: 150.00, dueDate: '2026-12-30', description: 'Mensalidade referente a Junho/2026', daysAfterDueDate: 30, payer: new UpdatePayerOptions( email: 'novo-email@email.com.br', ), fees: new Fees( fineValue: 10, fineType: 'FIXED_VALUE', ), paymentMethod: new PaymentMethod( bankSlip: new BankSlipOptions( yourNumber: '0000003048', instructions: ['Não receber após o vencimento'], ), ), origin: 'e-commerce', ); $bolepix = $client->bolepix()->update('seu-id-de-referencia', $request);
Para cancelar um bolepix já emitido:
$client->bolepix()->cancel('seu-id-de-referencia');
Webhooks
Para registrar um webhook de notificações (por padrão, para o serviço BANK_SLIP, usado pelo bolepix):
use Femitz\C6BankPhp\Webhook\RegisterWebhookRequest; $request = new RegisterWebhookRequest( url: 'https://www.meuendereco.com.br/webhook/xpto', ); $webhook = $client->webhook()->register($request); echo $webhook->clientId; echo $webhook->createdAt;
Para consultar o webhook registrado para um serviço:
use Femitz\C6BankPhp\Webhook\WebhookService; $webhook = $client->webhook()->get(WebhookService::BankSlip); echo $webhook->url;
Para remover o webhook registrado para um serviço:
$client->webhook()->delete(WebhookService::BankSlip);
Para processar as notificações de bolepix recebidas no endereço registrado (o corpo bruto da requisição recebida em seu endpoint de webhook):
use Femitz\C6BankPhp\Webhook\BolepixNotification; use Femitz\C6BankPhp\Webhook\BolepixNotificationStatus; $notification = BolepixNotification::fromJson($rawRequestBody); match ($notification->status) { BolepixNotificationStatus::Created => // $notification->bolepix está preenchido var_dump($notification->bolepix), BolepixNotificationStatus::Paid, BolepixNotificationStatus::WaitingConfirmation => // $notification->payment está preenchido var_dump($notification->payment), };
Documentação de uso detalhada será adicionada conforme os demais recursos da API (Pix, extratos, etc.) forem implementados.
🧪 Desenvolvimento
🧹 Mantenha o código padronizado com Pint:
composer lint
✅ Rode refatorações com o Rector:
composer refactor
⚗️ Rode a análise estática com o PHPStan:
composer test:types
✅ Rode os testes unitários com o Pest:
composer test:unit
🚀 Rode toda a suíte de testes:
composer test
🤝 Contribuindo
Contribuições são bem-vindas! Veja o arquivo CONTRIBUTING.md para mais detalhes.
📄 Licença
Este projeto está licenciado sob a MIT license.
Criado e mantido por Felipe Schmitz.