softcomtecnologia/opencnabphp

多银行文件生成和读取Cnab文件的库

dev-master 2024-06-28 13:27 UTC

This package is auto-updated.

Last update: 2024-09-28 14:12:17 UTC


README

Build Status

请考虑为我们捐赠资金以支持我们 Donate

  • 一个remessa文件负责处理一般文件的问题。
  • 每个Remessa类都继承自remessaAbstract并设置银行名称,这是用于自定义布局的文件夹名称
  • RegistroAbstract负责处理任何布局的任何记录的独特方法
  • 一个通用类继承自registroAbstract并实现特定布局的通用设置器和获取器
  • 最后,一个注册类从通用类继承并定义要使用的布局以及必要时覆盖或实现通用文件的新获取器和设置器。

    使用Docker

    在项目根目录下运行

    docker-compose up -d

    通过composer安装

    将"quilhasoft/opencnabphp": "dev-master"添加到您的composer.json中,并运行update或install

    访问示例url: https://:8080/samples/ExemploRemessa.php

    开发状态

    **由于盒子的原因,盒子布局已被禁用,需要修改才能恢复功能,请查看此问题以了解更多信息 openboleto#184

    <?php
    use \CnabPHP\Remessa;
    
    $arquivo = new Remessa(104,'cnab240_SIGCB',array(
        'nome_empresa' =>"Empresa ABC", // seu nome de empresa
        'tipo_inscricao'  => 2, // 1 para cpf, 2 cnpj 
        'numero_inscricao' => $empresa->empresas_cnpjcpf, // seu cpf ou cnpj completo
        'agencia'       => '1234', // agencia sem o digito verificador 
        'agencia_dv'    => 1, // somente o digito verificador da agencia 
        'conta'         => '12345', // número da conta
        'conta_dv'     => 1, // digito da conta
        'codigo_beneficiario'     => '123456', // codigo fornecido pelo banco
        'numero_sequencial_arquivo'     => 1, // sequencial do arquivo um numero novo para cada arquivo gerado
    ));
    $lote  = $arquivo->addLote(array('tipo_servico'=> 1)); // tipo_servico  = 1 para cobrança registrada, 2 para sem registro
    
    $lote->inserirDetalhe(array(
    
        'codigo_movimento'  => 1, //1 = Entrada de título, para outras opçoes ver nota explicativa C004 manual Cnab_SIGCB na pasta docs
        'nosso_numero'      => 50, // numero sequencial de boleto
        'seu_numero'        => 43,// se nao informado usarei o nosso numero 
        
        /* campos necessarios somente para itau e siccob,  não precisa comentar se for outro layout    */
        'carteira_banco'    => 109, // codigo da carteira ex: 109,RG esse vai o nome da carteira no banco
        'cod_carteira'      => "01", // I para a maioria ddas carteiras do itau
        /*----------------------------------------------------------------------------------------    */
         
        'especie_titulo'    => "DM", // informar dm e sera convertido para codigo em qualquer laytou conferir em especie.php
        'valor'             => 100.00, // Valor do boleto como float valido em php
        'emissao_boleto'    => 2, // tipo de emissao do boleto informar 2 para emissao pelo beneficiario e 1 para emissao pelo banco
        'protestar'         => 3, // 1 = Protestar com (Prazo) dias, 3 = Devolver após (Prazo) dias
        'prazo_protesto'    => 5, // Informar o numero de dias apos o vencimento para iniciar o protesto
        'nome_pagador'      => "JOSÉ da SILVA ALVES", // O Pagador é o cliente, preste atenção nos campos abaixo
        'tipo_inscricao'    => 1, //campo fixo, escreva '1' se for pessoa fisica, 2 se for pessoa juridica
        'numero_inscricao'  => '123.122.123-56',//cpf ou ncpj do pagador
        'endereco_pagador'  => 'Rua dos developers,123 sl 103',
        'bairro_pagador'    => 'Bairro da insonia',
        'cep_pagador'       => '12345-123', // com hífem
        'cidade_pagador'    => 'Londrina',
        'uf_pagador'        => 'PR',
        'data_vencimento'   => '2016-04-09', // informar a data neste formato
        'data_emissao'      => '2016-04-09', // informar a data neste formato
        'vlr_juros'         => 0.15, // Valor do juros de 1 dia'
        'data_desconto'     => '2016-04-09', // informar a data neste formato
        'vlr_desconto'      => '0', // Valor do desconto
        'baixar'            => 1, // codigo para indicar o tipo de baixa '1' (Baixar/ Devolver) ou '2' (Não Baixar / Não Devolver)
        'prazo_baixar'       => 90, // prazo de dias para o cliente pagar após o vencimento
        'mensagem'          => 'JUROS de R$0,15 ao dia'.PHP_EOL."Não receber apos 30 dias",
        'email_pagador'     => 'rogerio@ciatec.net', // data da multa
        'data_multa'        => '2016-04-09', // informar a data neste formato, // data da multa
        'vlr_multa'         => 30.00, // valor da multa
        
        // campos necessários somente para o sicoob
        'taxa_multa'         => 30.00, // taxa de multa em percentual
        'taxa_juros'         => 30.00, // taxa de juros em percentual
    ));        
    echo $arquivo->getText();

    读取返回

    <?php
    $fileContent = file_get_contents("retorno_cnab240_caixa.ret");
    
    $arquivo = new Retorno($fileContent);
    
    $registros = $arquivo->getRegistros();
    foreach($registros as $registro)
    {
        if($registro->R3U->codigo_movimento==6){
            $nossoNumero   = $registro->nosso_numero;
            $valorRecebido = $registro->R3U->vlr_pago;
            $dataPagamento = $registro->R3U->data_ocorrencia;
            $carteira      = $registro->carteira;
            // você ja pode dar baixa
        }
    }

    如果返回文件是类型4(Bradesco - Layout 400 - Pix),建议

    $fileContent = file_get_contents("retorno_cnab240_caixa.ret");
    
    $arquivo = new Retorno($fileContent);
    
    $registros = $arquivo->getRegistros();
    
    for($i = 0; $i < count($registros); $i++) {
        $pix = null;
        if ($arquivo->hasPix() && $arquivo->getLayout() == 'L400') {
        if ($i%2 == 0) { // Dados do registro na posição 'Par'
            $registro = $registros[$i];
        }
        if (($i+1)%2 != 0) { // Dados do Pix na posição 'Ímpar'
            $pix = $registros[$i+1];
        }
        $i++;
    } else {
        $registro = $registros[$i];
    }
    
    $spiUrl = $pix->pix_url; // URL para geração do QR Code (Padrão EMV utilizado pelo Banco Central do Brasil)
    $txid = $pix->txid; // Identificador da transação

    等待志愿者对布局进行编辑和测试。

    许可证

    • MIT许可证