allgood / APInter-PHP

Biblioteca PHP para acesso à API do Banco Inter
GNU Lesser General Public License v3.0
104 stars 52 forks source link

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 ? #2

Closed Casadossites closed 4 years ago

Casadossites commented 4 years ago

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

allgood commented 4 years ago

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.

Casadossites commented 4 years ago

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 ?

allgood commented 4 years ago

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

bhcosta90 commented 4 years ago

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

allgood commented 4 years ago

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

bhcosta90 commented 4 years ago

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?

allgood commented 4 years ago

Sim, o .key é a chave privada, e caso você tenha colocado uma senha nesse processo ela precisa ser colocada no teu código pois o arquivo estará encriptado com ela.

Em ter., 25 de ago. de 2020 às 09:05, Bruno Henrique da Costa < notifications@github.com> escreveu:

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.

  1. 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.

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

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

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

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/ctodobom/APInter-PHP/issues/2#issuecomment-679983358, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABOKDUGQKAHHCWICOCASBODSCOSIVANCNFSM4QIVGC6A .