Skip to content

Commit

Permalink
Merge pull request nfephp-org#1071 from robmachado/master
Browse files Browse the repository at this point in the history
inclusão do evento de conciliação financeira
  • Loading branch information
robmachado authored Jul 30, 2024
2 parents c563888 + 342f82e commit 73c9ab7
Show file tree
Hide file tree
Showing 16 changed files with 1,144 additions and 20 deletions.
19 changes: 11 additions & 8 deletions examples/5.0testSefazCadastro.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
use NFePHP\Common\Soap\SoapCurl;

//tanto o config.json como o certificado.pfx podem estar
//armazenados em uma base de dados, então não é necessário
///trabalhar com arquivos, este script abaixo serve apenas como
//armazenados em uma base de dados, então não é necessário
///trabalhar com arquivos, este script abaixo serve apenas como
//exemplo durante a fase de desenvolvimento e testes.
$arr = [
"atualizacao" => "2016-11-03 18:01:21",
Expand All @@ -27,21 +27,24 @@
"proxyPort" => "",
"proxyUser" => "",
"proxyPass" => ""
]
]
];
//monta o config.json
$configJson = json_encode($arr);

//carrega o conteudo do certificado.
$content = file_get_contents('expired_certificate.pfx');
$content = file_get_contents('fixtures/expired_certificate.pfx');
$soap = new \NFePHP\Common\Soap\SoapFake();
$soap->disableCertValidation(true);

$tools = new Tools($configJson, Certificate::readPfx($content, 'associacao'));
$tools->loadSoapClass($soap);

//Somente para modelo 55, o modelo 65 evidentemente não possue
//Somente para modelo 55, o modelo 65 evidentemente não possue
//esse tipo de serviço
$tools->model('55');

//coloque a UF e escolha entre
//coloque a UF e escolha entre
//CNPJ
//IE
//CPF
Expand All @@ -53,6 +56,6 @@
$cpf = '';
$response = $tools->sefazCadastro($uf, $cnpj, $iest, $cpf);

header('Content-type: text/xml; charset=UTF-8');
echo $response;
echo \NFePHP\NFe\Common\FakePretty::prettyPrint($response);


32 changes: 20 additions & 12 deletions examples/5.0testSefazCancela.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@
use NFePHP\NFe\Complements;

//tanto o config.json como o certificado.pfx podem estar
//armazenados em uma base de dados, então não é necessário
///trabalhar com arquivos, este script abaixo serve apenas como
//armazenados em uma base de dados, então não é necessário
///trabalhar com arquivos, este script abaixo serve apenas como
//exemplo durante a fase de desenvolvimento e testes.
$arr = [
"atualizacao" => "2016-11-03 18:01:21",
"tpAmb" => 2,
"razaosocial" => "SUA RAZAO SOCIAL LTDA",
"cnpj" => "99999999999999",
"siglaUF" => "SP",
"siglaUF" => "MG",
"schemes" => "PL_009_V4",
"versao" => '4.00',
"tokenIBPT" => "AAAAAAA",
Expand All @@ -28,26 +28,34 @@
"proxyPort" => "",
"proxyUser" => "",
"proxyPass" => ""
]
]
];
//monta o config.json
$configJson = json_encode($arr);

//carrega o conteudo do certificado.
$content = file_get_contents('expired_certificate.pfx');
$content = file_get_contents('fixtures/expired_certificate.pfx');

try {
$soap = new \NFePHP\Common\Soap\SoapFake();
$soap->disableCertValidation(true);


$tools = new Tools($configJson, Certificate::readPfx($content, 'associacao'));
$tools->loadSoapClass($soap);
$tools->model('55');
$chave = '35170399999999999999550010000000301000000300';

$chave = '31170399999999999999550010000000301000000300';
$xJust = 'Desistencia do comprador no momento da retirada';
$nProt = '135170001136476';
$response = $tools->sefazCancela($chave, $xJust, $nProt);


echo \NFePHP\NFe\Common\FakePretty::prettyPrint($response);

/*
//você pode padronizar os dados de retorno atraves da classe abaixo
//de forma a facilitar a extração dos dados do XML
//NOTA: mas lembre-se que esse XML muitas vezes será necessário,
//NOTA: mas lembre-se que esse XML muitas vezes será necessário,
// quando houver a necessidade de protocolos
$stdCl = new Standardize($response);
//nesse caso $std irá conter uma representação em stdClass do XML retornado
Expand All @@ -56,7 +64,7 @@
$arr = $stdCl->toArray();
//nesse caso o $json irá conter uma representação em JSON do XML retornado
$json = $stdCl->toJson();
//verifique se o evento foi processado
if ($std->cStat != 128) {
//houve alguma falha e o evento não foi processado
Expand All @@ -68,10 +76,10 @@
$xml = Complements::toAuthorize($tools->lastRequest, $response);
//grave o XML protocolado e prossiga com outras tarefas de seu aplicativo
} else {
//houve alguma falha no evento
//houve alguma falha no evento
//TRATAR
}
}
}*/
} catch (\Exception $e) {
echo $e->getMessage();
//TRATAR
Expand Down
127 changes: 127 additions & 0 deletions fake/fakeSefazConcilicacao.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
<?php

error_reporting(E_ALL);
ini_set('display_errors', 'On');
require_once '../bootstrap.php';

use NFePHP\NFe\Tools;
use NFePHP\Common\Certificate;
use NFePHP\Common\Soap\SoapFake;
use NFePHP\NFe\Common\FakePretty;

try {
$arr = [
"atualizacao" => "2016-11-03 18:01:21",
"tpAmb" => 2,
"razaosocial" => "SUA RAZAO SOCIAL LTDA",
"cnpj" => "99999999999999",
"siglaUF" => "SP",
"schemes" => "PL_009_V4",
"versao" => '4.00',
"tokenIBPT" => "AAAAAAA",
"CSC" => "GPB0JBWLUR6HWFTVEAS6RJ69GPCROFPBBB8G",
"CSCid" => "000001",
"proxyConf" => [
"proxyIp" => "",
"proxyPort" => "",
"proxyUser" => "",
"proxyPass" => ""
]
];
$configJson = json_encode($arr);
$soap = new SoapFake();
$soap->disableCertValidation(true);

$content = file_get_contents('expired_certificate.pfx');
$tools = new Tools($configJson, Certificate::readPfx($content, 'associacao'));
$tools->model('55');
$tools->setVerAplic('5.1.34');
$tools->loadSoapClass($soap);

$std = new \stdClass();
//$std->verAplic = '1.2.3'; //opcional se declarado anteriormente - versão da aplicação que está gerando o evento
$std->nSeqEvento = 1;
$std->chNFe = '12345678901234567890123456789012345678901234'; //chave de 44 digitos da nota do fornecedor
$std->detPag[0] = new \stdClass();
$std->detPag[0]->indPag = null; //opcional 0-Pagamento à Vista; 1-Pagamento à Prazo
$std->detPag[0]->tPag = '04'; //Obrigatório forma de pagamento
// '01' => 'Dinheiro',
// '02' => 'Cheque',
// '03' => 'Cartão de Crédito',
// '04' => 'Cartão de Débito',
// '05' => 'Cartão da Loja',
// '10' => 'Vale Alimentação',
// '11' => 'Vale Refeição',
// '12' => 'Vale Presente',
// '13' => 'Vale Combustível',
// '14' => 'Duplicata Mercantil',
// '15' => 'Boleto',
// '16' => 'Depósito Bancário',
// '17' => 'PIX Dinâmico',
// '18' => 'Transferência bancária, Carteira Digital',
// '19' => 'Programa fidelidade, Cashback, Créd Virt',
// '20' => 'PIX Estático',
// '21' => 'Crédito em Loja',
// '22' => 'Pagamento Eletrônico não Informado - Falha de hardware',
// '90' => 'Sem pagamento',
// '99' => 'Outros'
$std->detPag[0]->xPag = null; //opcional de 2 a 50 caracteres, usar quando tPag == 99
$std->detPag[0]->vPag = 102.34; //Obrigatório valor pago
$std->detPag[0]->dPag = '2024-07-30'; //Obrigatório data do pagamento

//grupo OPCIONAL de informações sobre envolvidos no pagamento
$std->detPag[0]->CNPJPag = '12345678901234'; //opcional, caso seja informado a UFPag também deverá ser informada
// CNPJ transacional do pagamento - Preencher informando o CNPJ do estabelecimento onde o pagamento foi
// processado/transacionado/recebido quando a emissão do documento fiscal ocorrer em estabelecimento distinto
$std->detPag[0]->UFPag = 'SP'; //opcional, caso seja informado a CNPJPag também deverá ser informada
// UF do CNPJ do estabelecimento onde o pagamento foi processado/transacionado/recebido
$std->detPag[0]->CNPJIF = '11111111111111'; //opcinal
//CNPJ da instituição financeira, de pagamento, adquirente ou subadquirente.
$std->detPag[0]->tBand = '20'; //opcional Bandeira da operadora de cartão
//01 Visa
//02 Mastercard
//03 American Express
//04 Sorocred
//05 Diners Club
//06 Elo
//07 Hipercard
//08 Aura
//09 Cabal
//10 Alelo
//11 Banes Card
//12 CalCard
//13 Credz
//14 Discover
//15 GoodCard
//16 GreenCard
//17 Hiper
//18 JcB
//19 Mais
//20 MaxVan
//21 Policard
//22 RedeCompras
//23 Sodexo
//24 ValeCard
//25 Verocheque
//26 VR
//27 Ticket
//99 Outros
$std->detPag[0]->cAut = 'a23232-49329fed'; //opcional Número de autorização da operação com cartões, PIX, boletos e outros
// pagamentos eletrônicos

//grupo OPCIONAL de informações sobre o
$std->detPag[0]->CNPJReceb = '09876543210987';//opcional CNPJ do estab. benefic. do pag., se informado informar também a UFReceb
$std->detPag[0]->UFReceb = 'CE'; //opcional se informado informar também a CNPJReceb

$std->cancelar = false; //permite cancelar um registro de conciliação financeira anterior

//para cancelar
//$std->cancela = true;
//$std->protocolo = '750123456789012';

$response = $tools->sefazConciliacao($std);

echo FakePretty::prettyPrint($response);
} catch (\Exception $e) {
echo $e->getMessage();
}
9 changes: 9 additions & 0 deletions schemes/PL_009_V4/EventoCancEConf_v1.00.xsd
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://www.portalfiscal.inf.br/nfe" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="leiauteEventoCancEConf_v1.00.xsd"/>
<xs:element name="evento" type="TEvento">
<xs:annotation>
<xs:documentation>Schema XML de validação do evento de Cancelamento do Comprovante de Entrega da NFe</xs:documentation>
</xs:annotation>
</xs:element>
</xs:schema>
9 changes: 9 additions & 0 deletions schemes/PL_009_V4/EventoEConf_v1.00.xsd
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://www.portalfiscal.inf.br/nfe" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="leiauteEventoEConf_v1.00.xsd"/>
<xs:element name="evento" type="TEvento">
<xs:annotation>
<xs:documentation>Schema XML de validação do evento de Conciliação Financeira</xs:documentation>
</xs:annotation>
</xs:element>
</xs:schema>
Loading

0 comments on commit 73c9ab7

Please sign in to comment.