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
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.