wirecardBrasil/moip-sdk-php

Dúvida na busca de webhooks por resource_id

victor-carv opened this issue · 6 comments

Quando faço uma consulta para obter os webhooks que o moip me enviou estou obtendo um resultado um pouco estranho. Para um único pedido estão aparecendo mais de 100 webhooks referenciando o mesmo resourceId num espaço de tempo muito curso.

Minha consulta está sendo feita com:

$webHookList = $moip->webhooks()->get(new Pagination(100, 0), $pedido->resource_id);
return $webHookList->getWebhooks();

E como resultado:

image

É normal essa quantidade de webhooks?
e pelo timestamp desses registros, em um o pedido foi autorizado, no outro ele passou para "em análise" e depois voltou para autorizado. Essa ordem também está correta? Se estiver é possível receber um webhook de cancelamento após um de aprovação por exemplo?

Olá @victor0402

Este comportamento não é normal, ao meu ver, a sua aplicação está cadastrando uma preferência de notificação para cada pagamento criado, fazendo com quem os webhooks sejam disparados "n" vezes para a mesma url, por gentileza, faça a listagem de suas preferências e verifique quantas preferência foram cadastradas.

método ---> $notifications = $moip->notifications()->getList();
print_r($notifications);

Obrigado @mariodias

Acho que você acertou. Fiz a listagem e obtive mais de 100 preferências cadastradas.
Para cada pagamento realmente está sendo registrado uma nova preferência de notificação.
Devo apagar todas as preferências e deixar somente uma cadastrada então?

Olá @victor0402 haaa sabia!!!!! hahahahah

Sim, você deve remover todas as preferências e deixar apenas uma, desta forma, você receberá os dados de forma consistente ;)

mesmo problema aqui com minha solução, se tiver como resolver poderia postar aq ajudaria bastante... obrigado...

Como vc conseguiu remover todas as preferências? Como vc fez?? Tenho várias cadastradas estava cadastrando as preferencias toda hora q um pagamento era gerado...

O código para remoção de todas as preferências pode ser algo como:

$notifications = $moip->notifications()->getList()->getNotifications();
foreach ($notifications as $n) {
    $moip->notifications()->delete($n->id);
}