allgood/APInter-PHP

Api 2.0

MoisesFagundes opened this issue · 2 comments

Olá Claudemir, estou tendo alguns problemas para implementar a api no meu sistema.

Este erro fica aparecendo:

erro1
erro2

Este é meu código:

boleto.blade.php:

`<?php

require_once "vendor/autoload.php";

use ctodobom\APInterPHP\BancoInter;
use ctodobom\APInterPHP\TokenRequest;
use ctodobom\APInterPHP\BancoInterException;
use ctodobom\APInterPHP\Cobranca\Boleto;
use ctodobom\APInterPHP\Cobranca\Pagador;

$dotenv = Dotenv\Dotenv::createImmutable(DIR);
$dotenv->load();

// dados do correntista
$conta = $ _ENV['INTER_CONTA' ;
$cnpj = $ _ENV['INTER_CNPJ'];
$certificado = $ _ENV['INTER_CERTIFICATE_PATH'];
$chavePrivada = $ _ENV['INTER_PRIVATE_KEY_PATH'];

// A T E N Ç Ã O
//
// Todos os dados verificáveis precisam ser válidos
// Utilize sempre CPF/CNPJ, CEP, Cidade e Estado válidos
// Para evitar importunar estranhos utilize seus próprios
// dados ou de alguma pessoa que esteja ciente, pois as
// cobranças sempre são cadastradas no sistema quente
// do banco central e aparecerão no DDA dos sacados.
//
// Os dados de exemplo NÃO SÃO VÁLIDOS e se não forem
// alterados o script de exemplo não funcionará.

// dados de teste
$cpfPagador = $ _ENV['PAGADOR_CPF'];
$estadoPagador = $ _ENV['PAGADOR_UF'];

$banco = new BancoInter($conta, $certificado, $chavePrivada, new TokenRequest($ _ENV['INTER_CLIENT_ID'], $ _ENV ['INTER_CLIENT_SECRET'], 'boleto-cobranca.read boleto-cobranca.write'));

// Se a chave privada estiver encriptada no disco
// $banco->setKeyPassword("senhadachave");

$pagador = new Pagador();
$pagador->setTipoPessoa(Pagador::PESSOA_FISICA);
$pagador->setNome("Nome de Teste");
$pagador->setEndereco("Nome da rua");
$pagador->setNumero(42);
$pagador->setBairro("Centro");
$pagador->setCidade("Cidade");
$pagador-&gt;setCep($ _ENV['PAGADOR_CEP']);

$pagador->setCnpjCpf($cpfPagador);
$pagador->setUf($estadoPagador);

$boleto = new Boleto();
$boleto->setPagador($pagador);
$boleto->setSeuNumero("123456");
$boleto->setValorNominal(100.10);
$boleto->setDataVencimento(date_add(new DateTime() , new DateInterval("P10D"))->format('Y-m-d'));

var_dump(json_decode(json_encode($boleto)));

try {
$banco->createBoleto($boleto);
echo "\nBoleto Criado\n";
echo "\n seuNumero: ".$boleto->getSeuNumero();
echo "\n nossoNumero: ".$boleto->getNossoNumero();
echo "\n codigoBarras: ".$boleto->getCodigoBarras();
echo "\n linhaDigitavel: ".$boleto->getLinhaDigitavel();
} catch ( BancoInterException $e ) {
echo "\n\n".$e->getMessage();
echo "\n\nCabeçalhos: \n";
echo $e->reply->header;
echo "\n\nConteúdo: \n";
echo $e->reply->body;
echo "\n\n".$e->getTraceAsString();
die;
}

try {
echo "\Download do PDF\n";
$pdf = $banco->getPdfBoleto($boleto->getNossoNumero());
echo "\n\nSalvo PDF em ".$pdf."\n";
} catch ( BancoInterException $e ) {
echo "\n\n".$e->getMessage();
echo "\n\nCabeçalhos: \n";
echo $e->reply->header;
echo "\n\nConteúdo: \n";
echo $e->reply->body;
echo "\n\n".$e->getTraceAsString();
}

try {
echo "\nConsultando boleto\n";
$boleto2 = $banco->getBoleto($boleto->getNossoNumero());
var_dump($boleto2);
} catch ( BancoInterException $e ) {
echo "\n\n".$e->getMessage();
echo "\n\nCabeçalhos: \n";
echo $e->reply->header;
echo "\n\nConteúdo: \n";
echo $e->reply->body;
echo "\n\n".$e->getTraceAsString();
}

try {
echo "\nBaixando boleto\n";
$banco->baixaBoleto($boleto->getNossoNumero(), INTER_BAIXA_DEVOLUCAO);
echo "Boleto Baixado";
} catch ( BancoInterException $e ) {
echo "\n\n".$e->getMessage();
echo "\n\nCabeçalhos: \n";
echo $e->reply->header;
echo "\n\nConteúdo: \n";
echo $e->reply->body;
echo "\n\n".$e->getTraceAsString();
}

try {
echo "\nConsultando boleto antigo\n";
$boleto2 = $banco->getBoleto("00571817313");
var_dump($boleto2);
} catch ( BancoInterException $e ) {
echo "\n\n".$e->getMessage();
echo "\n\nCabeçalhos: \n";
echo $e->reply->header;
echo "\n\nConteúdo: \n";
echo $e->reply->body;
echo "\n\n".$e->getTraceAsString();
}

try {
echo "\nListando boletos vencendo nos próximos 10 dias (apenas a primeira página)\n";
$listaBoletos = $banco->listaBoletos(date('Y-m-d'), date_add(new DateTime() , new DateInterval("P10D"))->format('Y-m-d'));
var_dump($listaBoletos);
} catch ( BancoInterException $e ) {
echo "\n\n".$e->getMessage();
echo "\n\nCabeçalhos: \n";
echo $e->reply->header;
echo "\n\nConteúdo: \n";
echo $e->reply->body;
}

echo "\n\n";`

.env:

`INTER_CONTA=""
INTER_CNPJ="
"
INTER_CERTIFICATE_PATH="private/Inter API_Certificado.crt"
INTER_PRIVATE_KEY_PATH="private/Inter API_Chave.key"

INTER_CLIENT_ID=""
INTER_CLIENT_SECRET="
"

PAGADOR_CPF=""
PAGADOR_UF=""
PAGADOR_CEP="
**"`

Pelo que eu entendi o código no arquivo BancoInter.php não está encontrando o certificado e a chave que eu obtiver no internet banking.

Eu coloquei elas dentro da pasta private dentro da raiz da aplicação da api-inter.

erro4
erro5

Até o momento eu já tentei mudar a pasta de lugar para dentro da src, tirar os arquivos de dentro da pasta e deixar solto na raiz e na src, mudar o jeito como passo o caminho dentro do meu código partindo da raíz do meu projeto e não da raiz da api, também mudei a extensão do arquivo Inter Api_Certificado para (ctr, pem, ssl), porém sem sucesso.

Você saberia me informar onde eu devo está deixando esses arquivos e como eu referencio o caminho dentro do meu código?

Olá @MoisesFagundes

Como vai?

$banco = new BancoInter($conta, $certificado, $chavePrivada);

Conforme com o exemplo.php e seus screenshots, realize o seguinte teste:

$banco = new BancoInter(
	$conta,
	'C:\xampp\htdocs\EmpireEvents2\vendor\ctodobom\api-inter\private\Inter API_Certificado.crt',
	'C:\xampp\htdocs\EmpireEvents2\vendor\ctodobom\api-inter\private\Inter API_Chave.key'
);

🤔

Acontece algum resultado positivo?

o erro é de carga do certificado mesmo, possivelmente o caminho passado não está correto. O ideal é sempre passar o caminho completo, ou usar a constante DIR concatenado com o caminho. Consulte o resultado do caminho final inspecionando o que você está passando e conferindo com o caminho do arquivo no seu hd.