Em alguns casos, é possível que um pedido seja pago ou negado, mas o mesmo não aparecer com a atualização correta no seu painel WooCommerce.
Isso ocorre porque o PagBank encontrou alguma dificuldade ao enviar a notificação da atualização para sua loja.
Se nenhum pedido tem o status atualizado, é provável que seu provedor ou CDN esteja bloqueando estas requisições (veja mais em Usuários Cloudflare e CDN's).
No entanto, caso deseje atualizar manualmente um pedido, ou seja, se deseja reenviar a notificação para sua loja, você pode fazer isso seguindo os passos abaixo.
1. Obtenha o código do pedido.
O Order_id é obtido nos detalhes do pedido no WooCommerce, e identificado por pagbank_order_id
.
2. Realize a chamada para API PagBank para obter o status do pedido
Para isso, você precisará realizar uma chamada do tipo POST para https://api.pagseguro.com/orders/:order_id
substituindo o :order_id
pelo id do order acima.
Também precisará informar seu Token PagBank no Authorization Header.
Veja um exemplo da chamada com cURL: curl -L 'https://api.pagseguro.com/orders/ORDE_4AF6D47A-752E-4BA3-932C-F77BBD133455'
-H 'Authorization: Bearer meu-token-pagbank'
Esta chamada devolverá um JSON com as informações atualizadas do pedido, e eventualmente as atualizações do mesmo.
Guarde este JSON de retorno. Nós usaremos ele nos próximos passos.
3. Obtenha o hash e url de notificação do pedido
A api de notificação de pedido recebe um parâmetro hash de 5 caracteres. Ele é único da sua loja, e varia a cada pedido criado.
Ao abrir o pedido no PagBank você encontrará um link para Notificações da transação enviadas para a API do cliente localizado no final da página.
Ao clicar neste link, um popup mostrará sempre uma URL do próprio PagBank. Copie o valor do parâmetro url_cli
, como mostrado abaixo.
E utilize o base64_decode
ou o site base64decode.net para fazer o decode desta url.
Esta é a URL para onde devemos mandar a notificação de atualização do pedido manualmente.
4. Faça o reenvio da notificação de atualização do pedido
Esta será uma requisição do tipo POST para o URL acima, contendo o JSON obtido no passo 1.
Veja um exemplo em cURL:
curl -L 'https://pagseguro-exemplo-woo.ricardomartins.net.br/?wc-api=rm_ps_notif&hash=c8263'
-H 'Content-Type: application/json'
--data-raw '{
"id": "ORDE_4AF6D47A-752E-4BA3-932C-F77BBD133455",
"reference_id": "237",
...
}'
Pronto!
Isso lhe permitirá atualizar um pedido manualmente ou debugar algum tipo de problema no retorno das atualizações de pedido em sua loja.
Caso você consiga realizar a chamada com sucesso e o pedido seja atualizado como esperado, podemos constatar que seu site estava fora do ar quando a notificação foi enviada ou há um bloqueio de firewall que impediu as notificações do PagBank de chegarem na sua loja.
No futuro iremos implementar outras formas de processar tais retornos e notificações mesmo que sua loja esteja fora do ar e facilitar este processo.
Comentários
0 comentário
Por favor, entre para comentar.