ecomplus / app-mercadopago

E-Com Plus app to integrate Mercado Pago
MIT License
1 stars 3 forks source link

Notificação não encontrando pedido #74

Closed matheusgnreis closed 3 years ago

matheusgnreis commented 3 years ago

@leomp12 essa semana tive ocorrência de pedidos que não recebeu o status, fui olhar e tinha informado que não tinha encontrado, desde então estou monitorando e apareceu mais aqui no log. Além disso apareceram erro de update tokens conforme abaixo

erros-repetidos

Erro de criar pedido, ai não sei se o erro 500 é referente ao erro da nossa aplicação que está ocorrendo nesse update tokens ou do mp em si

leomp12 commented 3 years ago

Na real não têm relação uma coisa com a outra não. No create transaction não consome a nossa API, só a do MP, ao que parece aí ela retornou 500 (esteve indisponível) nessa requisição.

O update tokens só tem relação com atualização de status, você olhou no Firestore a data de atualização do token da loja que não teve o pedido atualizado como deveria?

leomp12 commented 3 years ago

Sendo mais específico, se bater o olho no código vai ver que esse log do erro 500 está no catch dessa request aqui https://github.com/ecomplus/app-mercadopago/blob/master/functions/routes/ecom/modules/create-transaction.js#L119

Ou seja, nessa ocasião tentamos criar o payment no MP mas ele retornou um erro de servidor (5xx).

Acredito que isso não seja frequente, chegou a pesquisar nos logs aí? Deve ter sido só uma instabilidade pontual da API deles.

leomp12 commented 3 years ago

Os tokens paracem atualizados, dar esse hang up aí no update tokens vez ou outra não vai atrapalhar na verdade, porque depois ele é executado de novo. Sobre ter informado que não tinha encontrado, como está isso no log exatamente? Qual é o ID da loja e do pedido (ou código da transação no MP)?

matheusgnreis commented 3 years ago

https://github.com/ecomplus/app-mercadopago/blob/master/functions/routes/ecom/modules/create-transaction.js#L119 Eu até li, mas assim vai que não é o que estava achando, apesar de estar claro.

Ou seja, nessa ocasião tentamos criar o payment no MP mas ele retornou um erro de servidor (5xx)

Poucas vezes.

O update tokens só tem relação com atualização de status, você olhou no Firestore a data de atualização do token da loja que não teve o pedido atualizado como deveria?

not-found

Acho que o problema não seria de autenticação, porque na hora de mostrar not found, não mostra antes problema de autenticação. Aparentemente nem entrou aqui https://github.com/ecomplus/app-mercadopago/blob/master/functions/routes/mercadopago/notifications.js#L20, se tivesse entrado e dado erro de autenticação, teríamos isso aqui https://github.com/ecomplus/app-mercadopago/blob/master/functions/routes/mercadopago/notifications.js#L39 provavelmente com uma mensagem de não autenticado.

Acabou de dar por exemplo:

Error: Payment 16453673506 not found

Ontem deu:

Error: Payment 16447337537 not found

Como não tem o store id ali, não sei de onde que é

leomp12 commented 3 years ago

Achei que você tinha pesquisado pelo código da transação dos tais pedidos que não foram atualizados, e nesse caso saberia a loja e o ID do produto...

É comum o MP (e os outros) também enviarem notificações de transações não sucedidas ou até feitas de outra forma e não relacionadas a plataforma, nada de errado com isso, nesse caso só é ignorado mesmo. Não olhei no código mas esse not found nem parece ser batendo na Store API, na verdade o código da transação do MP é salvo no Firestore associado ao ID da loja e pedido, se não for encontrado a notificação é ignorada.

De qualquer forma não tenho certeza se esses pagamentos em específicos deveriam estar salvos ou deveriam ser ignorados, só observando o log você não vai ter como saber isso nem chegar a conclusão sobre os pedidos que não foram atualizados, acho que vai ter que procurar pelo ID do pedido ou código da transação mesmo.