allgood/APInter-PHP

Bom dia grande mestre, estou com esse erro na integração da api o senhor pode me dizer o que eu estou fazendo de errado ?

Closed this issue · 7 comments

require_once "../vendor/autoload.php";

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

// dados do correntista
$conta = "1111111111111";
$cnpj = "1111111111111111111";
$certificado = "certificado.crt";
$chavePrivada = "private-chave.pem";

// dados de teste
$cpfPagador = "12312312312";
$estadoPagador = "AM";

$banco = new BancoInter($conta, $certificado, $chavePrivada);
//$banco->setKeyPassword("");

echo'

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

$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->setCep("12345000");

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

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

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;
}

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;
}

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;
}

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;
}

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;
}

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";

Captura de Tela 2020-08-23 às 09 03 41

Todos os dados precisam ser válidos. Nesse script eu consigo dizer que o CPF não é válido. Sugestão usar seu próprio CPF ou CNPJ para evitar que apareça no DDA de alguém. Aconselho a usar CEP e estado válidos também.

Boa noite meu mestre !
Eu consegui obrigado mesmo, ele grava o pdf no temp como eu faço pra deslocar esse pdf para uma pasta no servidor?

\Download do PDF

Salvo PDF em /tmp/boleto-inter-p30rYR.pdf

O senhor pode me ajudar ?

É só usar as funções padrão do php para manipulação de arquivos. Nesse caso a funcao rename deve resolver.

Bom dia, como voce chegou a gerar o .pem para colocar no inicio da classe?

@bhcosta90 o certificado é exatamente o arquivo que foi baixado do banco, a chave é o arquivo .key que você gerou, não precisa converter.

Executei esses passos

openssl req -new -newkey rsa:2048 -nodes -keyout seudominio.key -out seudominio.csrObservação: Substitua [seudominio] com o nome de domínio que quer proteger. Por exemplo: acme.com.br.

2. Nos campos solicitados, insira as informações:

Country Name (código do país): as duas letras que representam o país internacionalmente. Ex: BR é Brasil

State or Province Name (nome completo do estado): ex. São Paulo, Minas Gerais, Ceará.

Locality Name (nome completo da cidade): ex. São Paulo, Belo Horizonte, Fortaleza.

Organization Name (a razão social completa da sua empresa): ex. Banco Inter S.A.

Organizational Unit Name (número de aplicação): copie a chave exclusiva gerada pelo Inter e cole-a no campo. Este é o "Número de aplicação" e é formado por letras, números e separado por hífens.

Common Name (nome comum - campo opcional): o nome de domínio totalmente qualificado, ou URL que você deseja proteger. Exemplo: bancointer.com.br

E-mail Address (endereço de e-mail): insira seu e-mail

A Challenge Password (uma senha forte): crie uma senha forte para este SSL
Observação: Se você não quiser inserir uma senha para esse SSL, você pode deixar o campo "senha" em branco. Porém, lembre-se de que isso pode ser mais arriscado.

3. Abra a CSR em um editor de texto e copie todo o texto gerado.

4. Cole o texto gerado no campo "Assinatura do certificado (CSR)" e clique em "Confirmar".

No caso seria o arquivo seudominio.key na variavel $chavePrivada?