parkejunior / cnab-layouts-parser
CNAB文件解析器。这是bee-delivery/layouts-cnab-parser的分支。
0.1.9
2020-10-16 14:21 UTC
Requires (Dev)
- codeclimate/php-test-reporter: ^0.3.2
- symfony/yaml: 4.*
README
这是一个分支自: https://github.com/bee-delivery/layouts-cnab-parser 原始仓库: https://github.com/glauberportella/cnab-layouts-parser
Bee Delivery的变更/修正
- 读取多个批次返回值。
- 通过Storage保存文件。
- 使用YAML转换文件。
- 在支付布局240中添加新的段。
此仓库的变更/修正
- 通过
file_put_contents()
而不是Illuminate\Storage(来自Laravel)保存文件。 - 移除不存在的类CnabLayouts\SelectFile的使用。
- 为Sicredi银行添加支付布局240。
安装
通过composer安装
composer require parkejunior/cnab-layouts-parser
需要Symfony/Yaml来读取返回值
- PHP >= 7.1.3:
composer require symfony/yaml "4.*"
- PHP >= 5.3.9:
composer require symfony/yaml "2.7.*"
(作者推荐)
示例
发送文件
生成CNAB240发送文件
<?php require_once __DIR__.'/vendor/autoload.php'; use CnabParser\Parser\Layout; use CnabParser\Model\Remessa; use CnabParser\Output\RemessaFile; $remessaLayout = new Layout(__DIR__.'/config/itau/cnab240/cobranca.yml'); $remessa = new Remessa($remessaLayout); // header arquivo $remessa->header->codigo_banco = 341; $remessa->header->tipo_inscricao = 2; $remessa->header->inscricao_numero = '12234567000186'; $remessa->header->agencia = 2932; $remessa->header->conta = 24992; $remessa->header->dac = 9; $remessa->header->nome_empresa = 'NOME DA EMPRESA'; $remessa->header->data_geracao = date('dmY'); $remessa->header->hora_geracao = date('His'); $remessa->header->numero_sequencial_arquivo_retorno = 1; // criar um novo lote de serviço para a remessa // informando o código sequencial do lote $lote = $remessa->novoLote(1); $lote->header->codigo_banco = 341; $lote->header->lote_servico = $lote->sequencial; $lote->header->tipo_registro = 1; $lote->header->tipo_operacao = 'R'; $lote->header->tipo_servico = '01'; $lote->header->zeros_01 = 0; $lote->header->versao_layout_lote = '030'; $lote->header->brancos_01 = ''; $lote->header->tipo_inscricao = 2; $lote->header->inscricao_empresa = '12234567000186'; $lote->header->brancos_02 = '0'; $lote->header->zeros_02 = 0; $lote->header->agencia = 2932; $lote->header->brancos_03 = ''; $lote->header->zeros_03 = 0; $lote->header->conta = '24992'; $lote->header->brancos_04 = ''; $lote->header->dac = 9; $lote->header->nome_empresa = 'NOME DA EMPRESA'; $lote->header->brancos_05 = ''; $lote->header->numero_sequencial_arquivo_retorno = 1; $lote->header->data_gravacao = date('dmY'); $lote->header->data_credito = date('dmY'); $lote->header->brancos_06 = ''; $detalhe = $lote->novoDetalhe(); // segmento p $detalhe->segmento_p->lote_servico = $lote->sequencial; $detalhe->segmento_p->nummero_sequencial_registro_lote = 1; $detalhe->segmento_p->codigo_ocorrencia = '01'; $detalhe->segmento_p->agencia = 2932; $detalhe->segmento_p->conta = 24992; $detalhe->segmento_p->dac = 9; $detalhe->segmento_p->carteira = 109; $detalhe->segmento_p->nosso_numero = 12345678; $detalhe->segmento_p->dac_nosso_numero = 3; $detalhe->segmento_p->numero_documento = 1; $detalhe->segmento_p->vencimento = '10052016'; $detalhe->segmento_p->valor_titulo = 1000; $detalhe->segmento_p->agencia_cobradora = 0; $detalhe->segmento_p->dac_agencia_cobradora = 0; $detalhe->segmento_p->especie = '05'; $detalhe->segmento_p->aceite = 'N'; $detalhe->segmento_p->data_emissao = date('dmY'); $detalhe->segmento_p->data_juros_mora = '11052016'; $detalhe->segmento_p->juros_1_dia = 0; $detalhe->segmento_p->data_1o_desconto = '00000000'; $detalhe->segmento_p->valor_1o_desconto = 0; $detalhe->segmento_p->valor_iof = 38; $detalhe->segmento_p->valor_abatimento = 0; $detalhe->segmento_p->identificacao_titulo_empresa = ''; $detalhe->segmento_p->codigo_negativacao_protesto = 0; $detalhe->segmento_p->prazo_negativacao_protesto = 0; $detalhe->segmento_p->codigo_baixa = 0; $detalhe->segmento_p->prazo_baixa = 0; // segmento q $detalhe->segmento_q->lote_servico = $lote->sequencial; $detalhe->segmento_q->nummero_sequencial_registro_lote = 2; $detalhe->segmento_q->codigo_ocorrencia = '01'; $detalhe->segmento_q->tipo_inscricao = 2; $detalhe->segmento_q->inscricao_numero = '12345678999'; $detalhe->segmento_q->nome_pagador = 'NOME PAGADOR'; $detalhe->segmento_q->logradouro = 'RUA PAGADOR'; $detalhe->segmento_q->bairro = 'BAIRRO'; $detalhe->segmento_q->cep = 31814; $detalhe->segmento_q->sufixo_cep = 500; $detalhe->segmento_q->cidade = 'CIDADE'; $detalhe->segmento_q->uf = 'MG'; $detalhe->segmento_q->tipo_inscricao_sacador = 2; $detalhe->segmento_q->inscricao_sacador = '12234567000186'; $detalhe->segmento_q->nome_sacador = 'NOME DA EMPRESA'; // segmento r opcional nao adicionado unset($detalhe->segmento_r); // segmento y opcional nao adicionado unset($detalhe->segmento_y); // insere o detalhe no lote da remessa $lote->inserirDetalhe($detalhe); // trailer lote $lote->trailer->lote_servico = $lote->sequencial; $lote->trailer->quantidade_registros_lote = 4; // quantidade de Registros do Lote correspondente à soma da quantidade dos registros tipo 1 (header_lote), 3(detalhes) e 5(trailer_lote) $lote->trailer->quantidade_cobranca_simples = 1; $lote->trailer->valor_total_cobranca_simples = 10000; $lote->trailer->quantidade_cobranca_vinculada = 0; $lote->trailer->valor_total_cobranca_vinculada = 0; $lote->trailer->aviso_bancario = '00000000'; // inserir lote na remessa $remessa->inserirLote($lote); // trailer arquivo $remessa->trailer->total_lotes = 1; // quantidade de Lotes do arquivo correspondente à soma da quantidade dos registros tipo 1 (header_lote). $remessa->trailer->total_registros = 6; //total da quantidade de Registros no arquivo correspondente à soma da quantidade dos registros tipo 0(header_arquivo), 1(header_lote), 3(detalhes), 5(trailer_lote) e 9(trailer_arquivo). // gera arquivo $remessaFile = new RemessaFile($remessa); $remessaFile->generate(__DIR__.'/tests/out/itaucobranca240.rem');
返回
处理返回文件,将其转换为用于您系统的模型。
<?php require_once __DIR__.'/vendor/autoload.php'; use CnabParser\Parser\Layout; use CnabParser\Model\Retorno; use CnabParser\Input\RetornoFile; $layout = new Layout(__DIR__.'/config/itau/cnab240/cobranca.yml'); $retornoFile = new RetornoFile($layout, __DIR__.'/data/cobranca-itau-cnab240.ret'); // Gera o objeto instancia de CnabParser\Model\Retorno com os dados do arquivo de retorno processado $retorno = $retornoFile->generate(); // ... utilize o $retorno em seu sistema para verificações, etc. ...
许可证
MIT许可证(MIT)
版权(c)2016 Glauber Portella glauberportella@gmail.com
特此授予任何人免费获得此软件及其相关文档文件(以下简称“软件”)副本的许可,无限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向获得软件的人提供使用该软件的权利,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
本软件按“原样”提供,没有任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权持有人不对任何索赔、损害或其他责任负责,无论这些索赔、损害或其他责任是由于合同、侵权或其他方式引起的,与软件或其使用或其他方式有关。