Ir para conteúdo
  • Cadastre-se

dev botao

Problema ao integrar PSP Ailos PIXCD


Ver Solução Respondido por EliasCesar,

Recommended Posts

Postado (editado)

Estou tentando integrar o PSP Ailos, porém no exemplo do PixCD não obtenho retorno ao chamar a api, tentei dar f7, mas o response parece estar em branco

image.thumb.png.4a150f76ee25a24b4ac121f3d04c9054.png

 

Já no postman, consegui inserir o crt, key e root também e me retornou o token no endpoint de auth, ai precisaria seguir usando o token para criar o pagamento, mas eu gostaria de conseguir fazer isso pelo exemplo do acbr, já que os métodos já estão prontos, poupando tempo. 

image.thumb.png.2fcfb555f5c80bb2d65cb78764f04965.png

 

Segue na foto abaixo como configurei o componente do acbr

image.thumb.png.6ee8bbbfc8c72564af0bfbc591558a80.png

image.png.2f37f97d00ddc134d9f5ead01001fd22.png

 

Gerei os arquivos conforme instruído na documentação do ailos utilizando meu certificado .pfx, que é o certificado do cnpj relacionado ao client id e secret que o ailous me passou

image.png.35b38d443390bf83c8182a473884ec6a.png

 

Alguém saberia me dizer o que pode estar faltando ou que precisa ser corrigido para funcionar?

Editado por fabio alberto
coloquei uma imagem que não devia
Postado

Criei um form aqui para fazer o teste e deu certo, mas no exemplo do acbr ainda não consegui fazer funcionar:

image.png.d3a7fa499b14250d9d7b1a202ae0cabb.png

Imagino que a grande diferença aqui foi que usei essas dlls na pasta do executavel, já que foram as únicas que funcionaram com o TidHttp sem dar o "could not load ssl library":

https://svn.code.sf.net/p/acbr/code/trunk2/DLLs/OpenSSL/1.0.2.21/x86/

Segue abaixo a rotina que usei pra fazer o post, achei esse exemplo no forum e adaptei pra conseguir por minhas credenciais e certificados:

var
  HTTPClient: TIdHTTP;
  SSLIOHandler: TIdSSLIOHandlerSocketOpenSSL;
  RequestBody: TStringStream;
  Response: TStringStream;
begin
  Memo1.Lines.Clear;
  HTTPClient := TIdHTTP.Create(nil);
  HTTPClient.Request.Clear;
  HTTPClient.Request.CharSet := 'utf-8';
  HTTPClient.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Maxthon; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)';
  HTTPClient.Request.ContentType := 'application/x-www-form-urlencoded';
  HTTPClient.Request.CustomHeaders.Clear;
  HTTPClient.Request.CustomHeaders.FoldLines := false;
  HTTPClient.HandleRedirects := True;
  HTTPClient.HTTPOptions := [hoKeepOrigProtocol, hoInProcessAuth];

  RequestBody := TStringStream.Create;
  Response := TStringStream.Create;
  RequestBody.WriteString('CLIENT_ID=' + edtClientId.Text + '&' +
                            'CLIENT_SECRET=' + edtClientSecret.Text + '&' +
                            'SCOPE=cob.read+cob.write+pix.read+pix.write');
  RequestBody.Position := 0;

  SSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  try
    // Set up SSL IO Handler with certificate
    SSLIOHandler.SSLOptions.Mode := sslmClient;
    SSLIOHandler.SSLOptions.VerifyMode := [];
    SSLIOHandler.SSLOptions.VerifyDepth := 0;
    SSLIOHandler.SSLOptions.CertFile := 'certificado.crt';
    SSLIOHandler.SSLOptions.KeyFile := 'chave_semsenha.key';
    SSLIOHandler.SSLOptions.RootCertFile := 'root.crt';
    SSLIOHandler.SSLOptions.SSLVersions := [sslvTLSv1_2];

    // Set up HTTP client with SSL IO Handler
    HTTPClient.IOHandler := SSLIOHandler;

    HTTPClient.Post(edtURL.Text, RequestBody, Response);
    Memo1.Lines.Add(Response.DataString);

  finally
    HTTPClient.Free;
    SSLIOHandler.Free;
    RequestBody.Free;
    Response.Free;
  end;
end;

 

Talvez o problema sejam as dlls que estou usando no exemplo do ACBR, só que as dlls que estou usando no exemplo são as recomendadas pelo pessoal aqui do forum:

https://svn.code.sf.net/p/acbr/code/trunk2/DLLs/OpenSSL/1.1.1.10/X86/

 

Alguém tem alguma dica do que eu possa fazer pra funcionar no exemplo do acbr também?

Postado

Sim, mas a ideia é homologar outros PSPs na sequência e aproveitar o tratamento feito no exemplo do ACBr que já está pronto, apenas o adaptando para minha aplicação.

Além disso, o exemplo já tem também pronto os métodos para criar a cobrança, pintar o QRCode e consultar, tudo pelo componente do PIXCD.

Então se eu conseguir usar o componente do PIXCD e dos PSPs do ACBR facilitaria bastante pra mim, até porque também vou precisar fazer integração de outros PSPs em seguida, que se não me engano são Sicredi e BB. E utilizando o componente, consigo fazer a configuração desses PSPs toda no componente e já sair usando.

É claro que no pior do casos se realmente não tiver como fazer funcionar, vou escrever os métodos do zero usando o TIdHttp igual no exemplo ali que mandei.

  • Moderadores
Postado

há tá achei que tivesse usado o componente em uma aplicação normal

então é quase certo que tu preencheu dados no exemplo e está levando coisas que não precisaria

já tive caso de pessoas que estava passando tanto o pfx arquivo quanto o caminho(é um exemplo) e dai não funcionava pois o componente tinha as duas informações ou dados errados.

Notei que no log não mostra o root.crt sendo passado

só os dois no exemplo.

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado (editado)

image.thumb.png.d6d41c32a6dbd7562e3a88494b9b3172.png

Realmente isso tá um pouco estranho, pois parece estar colocando o root no body na verdade. No exemplo do tidhttp que eu tinha achado, vai os 3 certificados no TIdSSLIOHandlerSocketOpenSSL que está ligado no httclient e no body da requisição apenas o client id, secret e scope.

image.thumb.png.3c7f2ccf87fe59d29783d65b1de8a45a.png

Mas aí não sei se é uma particularidade desse componente de http, porque já veio assim no exemplo quando baixei os fontes.

Editado por fabio alberto
Postado

Tô tentando adicionar essa linha na unit ACBrPIXCD:

http.Sock.SSL.CertCAFile := 'E:\root.crt';

Dei build no exemplo, mas ele ainda pula a linha durante a compilação, como posso fazer para que considere a linha que acabei de adicionar?

Postado (editado)

Deu certo \o/

image.thumb.png.e549a4939c5ab472360fd1ea9a16d7bb.png

 

Vocês conseguem alterar isso no svn pra mim?

image.thumb.png.27079b3a8355926040410056a80440a9.png

Precisaria só pegar o arquivo root lá de onde configura o psp e atribuir ao Http.Sock.SSL.CertCAFile, na mesma pegada que já faz pro certificado e key. Claro que não precisa ser exatamente onde coloquei ali, caso seja necessário imagino que poderia ter um if ali de PSPAilos, se for uma particularidade desse PSP por exemplo.

 

 

Editado por fabio alberto
  • Consultores
  • Solution
Postado

Olá @fabio alberto

Acabei de enviar ao SVN uma alteração um pouco diferente dessa, mas que deve corrigir o problema.

Atualize seus fontes e faça um teste por favor.

Disponível no SVN, rev: 35289.

Consultor SAC ACBr

Elias César Vieira
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil
Assine o
SAC

 
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.