pagseguro / pagseguro-sdk-java

Biblioteca de integração JAVA.
80 stars 60 forks source link

Status de transação na consulta #33

Closed leandrohsilveira closed 5 years ago

leandrohsilveira commented 6 years ago

Olá, Estou encarregado de atualizar a API de pagamentos do PagSeguro num projeto aqui da empresa. Tudo ok com a implementação, porém na hora de testar, percebi que os status das transações nas consultas parecem bagunçados.

Consultando a documentação disponível aqui ou aqui, cita o mapeamento dos Status da seguinte forma:

Codigo Significado
1 Aguardando pagamento: o comprador iniciou a transação, mas até o momento o PagSeguro não recebeu nenhuma informação sobre o pagamento.
2 Em análise: o comprador optou por pagar com um cartão de crédito e o PagSeguro está analisando o risco da transação.
3 Paga: a transação foi paga pelo comprador e o PagSeguro já recebeu uma confirmação da instituição financeira responsável pelo processamento.
4 Disponível: a transação foi paga e chegou ao final de seu prazo de liberação sem ter sido retornada e sem que haja nenhuma disputa aberta.
5 Em disputa: o comprador, dentro do prazo de liberação da transação, abriu uma disputa.
6 Devolvida: o valor da transação foi devolvido para o comprador.
7 Cancelada: a transação foi cancelada sem ter sido finalizada.

E olhando o código da classe TransactionStatus, vi que existe um enum lá:

public enum Status {
    INITIAL(1),
    WAITING_PAYMENT(2),
    IN_REVIEW(3),
    APPROVED(4),
    AVAILABLE(5),
    IN_DISPUTE(6),
    RETURNED(7),
    CANCELLED(8),
    SELLER_CHARGEBACK(9),
    CONTESTATION(10),
    PROCESSING_REFUND(11),
    UNRECOGNIZED(null);
}

Pelo que entendi, o mapeamento desse enum é feito pelo código do status, então está certo assim mesmo?

Codigo Status sandbox Status API
1 Aguardando pagamento  INITIAL
2 Em análise  WAITING_PAYMENT
3 Paga  IN_REVIEW
4 Disponível  APPROVED
5 Em disputa  AVAILABLE
6 Devolvida  IN_DISPUTE
7 Cancelada  RETURNED
8 ? CANCELLED
9 ? SELLER_CHARGEBACK
10 ? CONTESTATION
11 ? PROCESSING_REFUND
IvoFritsch commented 6 years ago

Infelizmente o PagSeguro não está nem aí para os clientes, não corrigem os problemas dessa biblioteca já tem um bom tempo. É melhor corrigir você mesmo, assim como eu fiz, porque eles vão arrumar isso é nunca.

leandrohsilveira commented 6 years ago

@IvoFritsch pois é, eu percebi pela frequência de commits, mas a minha parte de avisar eu fiz...

iranmarcius commented 6 years ago

Eu já estou sugerindo pra minha gerência para trocarmos o serviço porque fico com a sensação de que é uma API que jogaram aí pra suprir uma necessidade mas que não dão a devida atenção.

IvoFritsch commented 6 years ago

Nem mesmo os pull requests de correção eles olham mais

lucasbasquerotto commented 5 years ago

@leandrohsilveira Qual versão você está utilizando? Na versão que estou usando (4.3.2), bem como no código atual do github, os status parecem estar ok:

https://github.com/pagseguro/pagseguro-java-sdk/blob/master/source/src/main/java/br/com/uol/pagseguro/api/common/domain/TransactionStatus.java

public enum Status {
    INITIAL(0),
    WAITING_PAYMENT(1),
    IN_REVIEW(2),
    APPROVED(3),
    AVAILABLE(4),
    IN_DISPUTE(5),
    RETURNED(6),
    CANCELLED(7),
    SELLER_CHARGEBACK(8),
    CONTESTATION(9),
    PROCESSING_REFUND(11),
    UNRECOGNIZED(null);

    //...

}

Pelo que vi, teve um commit para corrigir isso em Agosto de 2018 (fix: fixing ENUM values (ID) of transaction status):

https://github.com/pagseguro/pagseguro-java-sdk/commits/master/source/src/main/java/br/com/uol/pagseguro/api/common/domain/TransactionStatus.java

leandrohsilveira commented 5 years ago

@lucasbasquerotto não lembro qual versão eu estava utilizando quando reportei esse bug, pois no sistema que mantemos nós implementamos a propria API REST com o JAX-RS/JAXB mesmo, o motivo disso foi pq precisavamos de alguns webservices (de assinaturas) que esta API ainda não tinha implementado.

Mas se foi corrigido então fecharei esta issue :)