Prezados, nos últimos dias enfrentamos alguns problemas durante a fase de homologação com a cielo devido ao que se mostrou ser um problema de encoding da requisição.
O cenário usado pela cielo para a homologação era um de criação de token seguido de uma transação em modo recorrente utilizando esse token. Verificamos que para vários cartões ocorria um erro entre a primeira e segunda etapas desse processo. Os servidores da cielo respondiam com um erro de 'Token desconhecido', mas nós enviávamos o token que havia sido recém-criado.
O pessoal do suporte pediu que enviássemos toda a troca de mensagens entre nosso servidor e o da cielo, para que eles pudessem ajudar na identificação do problema. Nós enviamos, e a resposta deles foi a seguinte:
O token esta sendo enviado sem a conversão de URL-encoding, assim os caracteres + esta sendo interpretado como espaços pela plataforma. Isto ocorre porque a plataforma recebe o xml em um parâmetro da requisição http, utilizando o content-type application/x-www-form-urlencoded. Tecnologias como Java (Apache HttpComponent/HttpClient) realizam esta conversão automaticamente, ficando transparente para o desenvolvedor. O estabelecimento deve avaliar e ajustar o enconding (URLEnconde) na sua solução. Outros caracteres especiais irão apresentar o mesmo problema.
Consegui reproduzir o problema usando testes automatizados e o servidor de testes da cielo. Os testes que tínhamos até então não acusaram o problema aparentemente por simples coincidência. Incrementei os testes com mais números de cartões, em particular os que estão na documentação da cielo, e o problema ficou evidente.
Seguindo essa dica fizemos a seguinte alteração no código de criação dos parâmetros da transação:
Escapamos explicitamente o parâmetro 'token' porque apesar de o alerta ser desferido contra toda a request, obviamente a porção problemática dizia respeito ao token.
Pois bem, após essa mudança nossos testes passaram e os da cielo também, de forma que pudemos concluir a homologação.
Pode acontecer. Não sei o quanto o escape vai alterar o valor do token e se isso terá algum significado com a cielo. Você conseguiu resolver o seu problema @Sanmoo
Prezados, nos últimos dias enfrentamos alguns problemas durante a fase de homologação com a cielo devido ao que se mostrou ser um problema de encoding da requisição. O cenário usado pela cielo para a homologação era um de criação de token seguido de uma transação em modo recorrente utilizando esse token. Verificamos que para vários cartões ocorria um erro entre a primeira e segunda etapas desse processo. Os servidores da cielo respondiam com um erro de 'Token desconhecido', mas nós enviávamos o token que havia sido recém-criado.
O pessoal do suporte pediu que enviássemos toda a troca de mensagens entre nosso servidor e o da cielo, para que eles pudessem ajudar na identificação do problema. Nós enviamos, e a resposta deles foi a seguinte:
Consegui reproduzir o problema usando testes automatizados e o servidor de testes da cielo. Os testes que tínhamos até então não acusaram o problema aparentemente por simples coincidência. Incrementei os testes com mais números de cartões, em particular os que estão na documentação da cielo, e o problema ficou evidente.
Seguindo essa dica fizemos a seguinte alteração no código de criação dos parâmetros da transação:
Mudamos disso:
Para isso
Escapamos explicitamente o parâmetro 'token' porque apesar de o alerta ser desferido contra toda a request, obviamente a porção problemática dizia respeito ao token. Pois bem, após essa mudança nossos testes passaram e os da cielo também, de forma que pudemos concluir a homologação.
Isso é um bug?