wirecardBrasil / moip-sdk-java

:new: Java SDK for Moip API v2 server-side integration.
MIT License
7 stars 4 forks source link

Erro na validação. #20

Open rodriguesabner opened 5 years ago

rodriguesabner commented 5 years ago

Opa, tudo bem? Eu estava tentando implementar a API, fazendo os testes de criação de Cliente e Pedido, na primeira tentativa eu consegui, mas depois acabou não funcionando. Eu apenas mudei os nomes e dados dos "clientes", mas acabou que deu erro.

[ Erro: Process: intelizze.com.parkedclient, PID: 1884 br.com.moip.exception.ValidationException at br.com.moip.api.request.RequestMaker.responseBodyTreatment(RequestMaker.java:244) at br.com.moip.api.request.RequestMaker.doRequest(RequestMaker.java:118) at br.com.moip.models.Customers.create(Customers.java:37) at intelizze.com.parkedclient.ParkedActivity.createClient(ParkedActivity.java:154) at intelizze.com.parkedclient.ParkedActivity$1.onClick(ParkedActivity.java:103)....]

Método:

   public void createClient(){
    String token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; //Aqui está o meu token correto
    String key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; //E a key correta também
    Authentication authBasic = new BasicAuth(token, key);

    String oauth = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX_v2"; // oAuth está correto tbm
    Authentication auth = new OAuth(oauth);
    Setup setup = new Setup().setAuthentication(authBasic).setEnvironment(Setup.Environment.SANDBOX); //Usei a autenticação básica mesmo

    Map<String, Object> taxDocument = payloadFactory(
            value("type", "CPF"),
            value("number", "12345678900")
    );

    Map<String, Object> phone = payloadFactory(
            value("countryCode", "55"),
            value("areaCode", "11"),
            value("number", "982743910")
    );

    Map<String, Object> shippingAddress = payloadFactory(
            value("city", "Sao Paulo"),
            value("district", "Caieiras"),
            value("street", "Rua de Algum Lugar"),
            value("streetNumber", "31"),
            value("state", "SP"),
            value("country", "BRA"),
            value("zipCode", "07700-000")
    );

    Map<String, Object> customerRequestBody = payloadFactory(
            value("ownId", "customer_own_id"),
            value("fullname", "João Rodrigues"),
            value("email", "email@gmail.com"),
            value("birthDate", "1999-10-07"),
            value("taxDocument", taxDocument),
            value("phone", phone),
            value("shippingAddress", shippingAddress)
    );

    Map<String, Object> responseCreation = Moip.API.customers().create(customerRequestBody, setup);
    System.out.println(responseCreation);
}

Obrigado desde já :)

rodriguesabner commented 5 years ago

Eu tinha desistido de usar essa API, mas me surgiu um novo projeto e eu resolvi dar outra chance. A princípio tive o mesmo erro, após printar o resultado, eu descobri que o problema estava no JSON e que o retorno era inválido. Está cheia de erros (sem aspas, com vírgulas má colocadas), fiz uns métodos utilizando o OkHttp e funcionou. Vou terminar de criar os métodos e se possível posto aqui

Esse é o resultado que retornava:

{fullname=Customer Full Name, email=customerasf@mail.com, taxDocument={number=44455522233, type=CPF}, phone={number=22226842, areaCode=11, countryCode=55}, shippingAddress={country=BRA, zipCode=01451001, city=Sao Paulo, streetNumber=3064, street=Av. Brigadeiro Faria Lima, district=Itaim BiBi, state=SP}, birthDate=1980-5-10, ownId=customer_own_id}
Renascienza commented 3 years ago

Eu tinha desistido de usar essa API, mas me surgiu um novo projeto e eu resolvi dar outra chance. A princípio tive o mesmo erro, após printar o resultado, eu descobri que o problema estava no JSON e que o retorno era inválido. Está cheia de erros (sem aspas, com vírgulas má colocadas), fiz uns métodos utilizando o OkHttp e funcionou. Vou terminar de criar os métodos e se possível posto aqui

Esse é o resultado que retornava:

{fullname=Customer Full Name, email=customerasf@mail.com, taxDocument={number=44455522233, type=CPF}, phone={number=22226842, areaCode=11, countryCode=55}, shippingAddress={country=BRA, zipCode=01451001, city=Sao Paulo, streetNumber=3064, street=Av. Brigadeiro Faria Lima, district=Itaim BiBi, state=SP}, birthDate=1980-5-10, ownId=customer_own_id}

Um sério problema nessa API parece ser a falta de suporte, já que em 7 meses ninguém te respondeu, Sendo uma API suportada por uma empresa, isso é um sério risco.

Você não deve marcar como SOLVED, já que não existe solução dada para o issue.

rodriguesabner commented 3 years ago

Pois é @Renascienza, eu acabei marcando, não consegui de fato utilizar a API e esqueci de desmarcar. Essa falta de suporte deles realmente é bem chato... Issue tá aberta desde 2019, nem lembrava mais que tinha feito.

O lado bom é que há outras opções no mercado, assim, não ficamos preso só com eles.

E já alterei aqui, obrigadão 😀

Renascienza commented 3 years ago

@rodriguesabner eu tive sucesso usando diretamente a API REST com Retrofit. Exige ler com atenção a documentação e dá um pouco mais de trabalho ao implementar, mas o grau de controle que você tem é maior.

rodriguesabner commented 3 years ago

@Renascienza Opa, pior que eu li bastante a documentação, segui todos os passos certinhos, fiz tudo de acordo, porém... E também faz muito tempo que não mexi mais com a gateway deles, não sei como está hoje.

Como mencionei lá no primeiro post, eu tive que fazer um monte de validação manual pra funcionar. Até a PagSeguro que é chatinha de mexer eu consegui implementar de boa.