PHP code example of danielbbarcelos / laravel-bancos

1. Go to this page and download the library: Download danielbbarcelos/laravel-bancos library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

danielbbarcelos / laravel-bancos example snippets


use DanielBBarcelos\Bancos\Facades\Bancos;
use DanielBBarcelos\Bancos\Data\Pix\CobrancaImediata;
use DanielBBarcelos\Bancos\Data\Shared\Valor;

$cobranca = Bancos::driver('sicredi')   // ou só Bancos::pix() para o banco padrão
    ->pix()
    ->cobrancaImediata(new CobrancaImediata(
        valor: Valor::reais('150.00'),
        expiracaoSegundos: 3600,
    ));

$cobranca->qrCode;   // EMV copia-e-cola — idêntico para qualquer banco
$cobranca->txid;
$cobranca->status;   // StatusCobranca enum

$banco = Bancos::build('sicredi', [
    'client_id'     => $empresa->sicredi_client_id,
    'client_secret' => $empresa->sicredi_secret(),    // descriptografado pela sua app
    'chave_pix'     => $empresa->chave_pix,
    'certificado'   => $empresa->certificado_pem(),    // conteúdo PEM OU caminho de arquivo
    'chave_privada' => $empresa->chave_pem(),
    'base_url'      => $empresa->sicredi_base_url,      // ou herda o default do config
    'cache_key'     => "empresa:{$empresa->id}",         // isola o token deste tenant
]);

$banco->pix()->cobrancaImediata(new CobrancaImediata(valor: Valor::reais('150.00')));

use DanielBBarcelos\Bancos\Data\Pix\{CobrancaComVencimento, Multa, Juros, Desconto, DescontoData};
use DanielBBarcelos\Bancos\Data\Shared\{Pessoa, Valor};

$cobranca = Bancos::pix()->cobrancaComVencimento(new CobrancaComVencimento(
    txid: 'fatura-2026-07-0042',
    valor: Valor::reais('250.00'),
    vencimento: '2026-07-30',                 // YYYY-MM-DD
    validadeAposVencimento: 30,               // dias que aceita pagamento após vencer
    devedor: new Pessoa(nome: 'Fulano', documento: '000.123.123-12'),
    multa: new Multa(modalidade: 2, valorPerc: '2.00'),       // modalidade 2 = percentual
    juros: new Juros(modalidade: 2, valorPerc: '1.00'),
    desconto: new Desconto(modalidade: 2, datasFixas: [
        new DescontoData(data: '2026-07-20', valorPerc: '5.00'), // 5% se pago até 20/07
    ]),
));

$cobranca->qrCode;      // copia-e-cola
$cobranca->vencimento;  // '2026-07-30'

Bancos::pix()->consultarCobrancaVencimento('fatura-2026-07-0042');

// Cancelar/remover uma cobrança ativa
$cobranca = Bancos::pix()->cancelarCobranca($txid);   // status vira RemovidaPeloUsuario

// Listar cobranças imediatas num intervalo (relatórios)
$cobrancas = Bancos::pix()->listarCobrancas(
    '2026-06-01T00:00:00Z',
    '2026-06-30T23:59:59Z',
    ['status' => 'ATIVA'],                            // filtros opcionais do PSP
);

// Consultar um Pix recebido (fallback do webhook)
$pix = Bancos::pix()->consultarPix($endToEndId);      // Recebimento

// Listar Pix recebidos num intervalo (timestamps ISO-8601) — conciliação
$recebidos = Bancos::pix()->listarPixRecebidos(
    '2026-06-01T00:00:00Z',
    '2026-06-30T23:59:59Z',
    ['cnpj' => '12345678000195'],                     // filtros opcionais do PSP
);

// Consultar o status de uma devolução já solicitada
$devolucao = Bancos::pix()->consultarDevolucao($endToEndId, $idDevolucao);

use DanielBBarcelos\Bancos\Data\Boleto\{Boleto, Pessoa, Encargo, Desconto};
use DanielBBarcelos\Bancos\Data\Shared\Valor;
use DanielBBarcelos\Bancos\Enums\{TipoValor, TipoCobrancaBoleto};

$boleto = Bancos::driver('sicredi')->boleto()->emitir(new Boleto(
    pagador: new Pessoa(
        nome: 'Rodrigo Oliveira', documento: '027.383.060-06',
        cep: '91250000', cidade: 'Porto Alegre', uf: 'RS',
        logradouro: 'Rua Doutor Vargas', numero: '150',
    ),
    valor: Valor::reais('250.00'),
    vencimento: '2026-07-30',
    seuNumero: 'PEDIDO-42',
    multa: new Encargo(TipoValor::Percentual, 2.0, '2026-07-31'),
    juros: new Encargo(TipoValor::Percentual, 1.0, '2026-07-31'),
    desconto: new Desconto(TipoValor::Valor, [['valor' => 10.0, 'data' => '2026-07-15']]),
    tipoCobranca: TipoCobrancaBoleto::Hibrido,   // gera também o QR Code Pix
));

$boleto->linhaDigitavel;
$boleto->codigoBarras;
$boleto->nossoNumero;
$boleto->qrCode;   // preenchido quando híbrido

Bancos::driver('sicredi')->boleto()->consultar($nossoNumero);  // BoletoEmitido (situação, etc.)
$pdfBytes = Bancos::driver('sicredi')->boleto()->pdf($cobranca->linhaDigitavel); // PDF (bytes)
Bancos::driver('sicredi')->boleto()->baixar($nossoNumero);     // cancela/baixa

$boleto = Bancos::driver('sicredi')->boleto();
$boleto->registrarWebhook('https://meuapp.com/webhooks/boleto', ['LIQUIDACAO']);
$boleto->consultarWebhook();          // ?ContratoWebhook
$boleto->alterarWebhook($idContrato, 'https://nova-url', ['LIQUIDACAO']);

// No seu controller que recebe a notificação do Sicredi:
$recebimento = $boleto->processarNotificacao($request->all()); // dispara Events\BoletoLiquidado
$recebimento->pago();       // movimento LIQUIDACAO_*
$recebimento->estornado();  // movimento ESTORNO_*
$recebimento->valorPago;    // Valor

use DanielBBarcelos\Bancos\Events\BoletoLiquidado;

class DarBaixaNoBoleto {
    public function handle(BoletoLiquidado $e): void {
        $e->recebimento->nossoNumero; // localizar e dar baixa/conciliar
    }
}

Bancos::pix()->configurarWebhook('https://meuapp.com/webhooks/pix/sicredi');
// usa a chave Pix padrão (chave_pix); ou passe a chave: ->configurarWebhook($url, $chave)

Bancos::pix()->consultarWebhook();   // ?Webhook
Bancos::pix()->cancelarWebhook();    // remove

use DanielBBarcelos\Bancos\Facades\Bancos;

Route::post('/webhooks/pix/sicredi', function (Illuminate\Http\Request $request) {
    Bancos::driver('sicredi')->pix()->processarNotificacao($request->all());

    return response()->noContent(); // 200/204
})->middleware('auth.webhook-pix'); // sua proteção (mTLS/IP)

use DanielBBarcelos\Bancos\Events\PixRecebido;

class DarBaixaNoPedido
{
    public function handle(PixRecebido $evento): void
    {
        $pix = $evento->pix; // Recebimento: txid, valor, endToEndId, pagador...
        // localizar pedido por $pix->txid, marcar como pago, conciliar...
    }
}

Bancos::extend('meu_banco', fn (array $config, string $nome) => new MeuBanco($config, $nome));
bash
php artisan bancos:ping sicredi              # checa config, certificado e autenticação
php artisan bancos:ping sicredi --cobranca   # + emite e consulta uma cobrança de R$ 0,01