Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

inclusão do evento de conciliação financeira #1071

Merged
merged 1 commit into from
Jul 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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