san0suke / pagseguro-assinaturas-rcs

Pagseguro Assinaturas
GNU General Public License v2.0
22 stars 11 forks source link

Não recebe notificações de alteração de status no modo Sandbox #29

Open vinivst opened 4 years ago

vinivst commented 4 years ago

Bom dia san0suke,

Acabei de instalar seu plugin e simular uma compra (assinatura). Consegui finalizar sem problemas (adicionar ao carrinho, finalizar, ser redirecionado ao pagseguro e finalizar a compra com o comprador de testes), porém como padrão o Pagseguro no modo sandbox deixa o status da transação como "Aguardando pagamento" e o programador é livre para testar as alterações de status. Pois bem, realizei a alteração do status para "Paga", o Pagseguro enviou a notificação, porém não chegou no wordpress e tampouco alterou o status do pedido, conforme imagens abaixo:

image

image

image

image

image

Poderia me ajudar?

Obrigado.

san0suke commented 4 years ago

Olá vinivst, Parece que há algum problema na sua URL de notificação se o status não está alterando. Por favor depure o código fonte da classe: PGA_Gateway.class.php

Nela está o que é referente estas chamadas. Você pode ir clicando em reenviar notificações enquanto faz seus testes.

vinivst commented 4 years ago

Boa tarde san0suke,

Depois de muito bater a cabeça, consegui achar o log do nginx:

2020/02/23 19:21:03 [error] 281#281: *248 FastCGI sent in stderr: "PHP message: id was called incorrectly. Order properties should not be accessed directly. Backtrace: do_action('wp_ajax_nopriv_finalizarcompra'), WP_Hook->apply_filters, PGA_Assinaturas->finalizar_compra, PGA_Assinaturas->pagamento, PGA_Assinaturas->registrar_assinatura, WC_Abstract_Legacy_Order->__get, wc_doing_it_wrong. This message was added in version 3.0.

PHP message: user_id was called incorrectly. Order properties should not be accessed directly. Backtrace: do_action('wp_ajax_nopriv_finalizarcompra'), WP_Hook->do_action, WP_Hook->apply_filters, PGA_Assinaturas->finalizar_compra, PGA_Assinaturas->pagamento, PGA_Assinaturas->registrar_assinatura, PGA_Gateway->change_status, WC_Abstract_Legacy_Order->__get, wc_doing_it_wrong. This message was added in version 3.0.

PHP message: id was called incorrectly. Order properties should not be accessed directly. Backtrace: do_action('wp_ajax_nopriv_finalizarcompra'), WP_Hook->do_action, WP_Hook->apply_filters, PGA_Assinaturas->finalizar_compra, PGA_Assinaturas->pagamento, PGA_Assinaturas->registrar_assinatura, PGA_Gateway->change_status, PGA_WC_Pagseguro_Messages::get_status_titulo, WC_Abstract_Legacy_Order->__get, wc_doing_it_wrong. This message was added in version 3.0" while reading response header from upstream, client: 201.51.65.130, server: investrobos.com, request: "POST /wp-admin/admin-ajax.php HTTP/1.1", upstream: "fastcgi://172.20.0.4:9000", host: "investrobos.com", referrer: "https://investrobos.com/finalizar-compra/order-pay/15/?key=wc_order_PL6ubYUBs9FdP"

O detalhe é que agora não estou mais conseguindo finalizar uma compra, depois do redirect cai direto numa página do pagseguro dizendo sessão expirada:

image

Obrigado pela ajuda!

san0suke commented 4 years ago

Isso que você postou parece que está faltando uma parte...

Outra coisa, tem algum outro plugin de assinatura ao mesmo tempo?

vinivst commented 4 years ago

Atualizei agora, realmente tava faltando muita coisa que na hora de copiar do bash do linux pro windows cortou, acabei de atualizar com tudo direitinho.

Não estou usando nenhum outro plugin junto, a instalação é do zero em um container do docker, somente wordpress e woocommerce, junto com o seu plugin.

-- Edit

Consegui pegar o log de quando eu mudo um status de uma transação diretamente no console do pagseguro:

186.234.48.113 - - [23/Feb/2020:19:43:45 +0000] "POST /?wc-api=PGA_Gateway HTTP/1.1" 301 169 "-" "Jakarta Commons-HttpCliClient/3.1" "-"

Deu error 301 na http request.

vinivst commented 4 years ago

Então, não sei se tem a ver, mas instalei o plugin do Claudio Sanches do PagSeguro e fiz os mesmos testes, por lá eu consegui mudar os status no pagseguro e receber no wordpress sem problemas. Além de conseguir realizar a compra normalmente tbm, ou seja, parece ser algum problema na chamada do retorno do seu plugin, só não sei o que ainda, segue o log:

186.234.144.18 - - [23/Feb/2020:20:09:42 +0000] "POST /wc-api/WC_PagSeguro_Gateway/ HTTP/1.1" 200 30 "-" "Apache-HttpClient/4.3.3 (java 1.5)" "-"

Mais uma vez obrigado.

san0suke commented 4 years ago

Veja a URL dele POST /wc-api/WC_PagSeguro_Gateway/

Sugiro que você tente colocar a sua: http://investrobos.com/wc-api/PGA_Gateway

vinivst commented 4 years ago

Coloquei http://investrobos.com/wc-api/PGA_Gateway como url de retorno e agora consigo realizar compras novamente, porém o controle de status ainda não funciona, quando eu altero no pagseguro não chega no wordpress:

186.234.48.113 - - [23/Feb/2020:20:37:25 +0000] "POST /wc-api/PGA_Gateway HTTP/1.1" 301 169 "-" "Jakarta Commons-HttpClient/3.1" "-"

san0suke commented 4 years ago

Nesse caso volte para a primeira URL e troque seu site para URL via parâmetros lá nas configurações ao invés de usar URL amigável.

vinivst commented 4 years ago

Não entendi

san0suke commented 4 years ago

Primeiro volte para a URL de notificação /?wc-api=PGA_Gateway

Depois em configurações, defina a opção padrão de URL. Screenshot_20200223-174739

https://www.hostgator.com.br/blog/urls-amigaveis-no-wordpress/

vinivst commented 4 years ago

Voltou pro erro de sessão expirou:

image

2020/02/23 20:52:30 [error] 310#310: *1128 FastCGI sent in stderr: "PHP message: id was called incorrectly. Order properties should not be accessed directly. Backtrace: do_action('wp_ajax_nopriv_finalizarcompra'), WP_Hook->do_action, WP_Hook->apply_filters, PGA_Assinaturas->finalizar_compra, PGA_Assinaturas->pagamento, PGA_Assinaturas->registrar_assinatura, WC_Abstract_Legacy_Order->__get, wc_doing_it_wrong. This message was added in version 3.0.

PHP message: user_id was called incorrectly. Order properties should not be accessed directly. Backtrace: do_action('wp_ajax_nopriv_finalizarcompra'), WP_Hook->do_action, WP_Hook->apply_filters, PGA_Assinaturas->finalizar_compra, PGA_Assinaturas->pagamento, PGA_Assinaturas->registrar_assinatura, PGA_Gateway->change_status, WC_Abstract_Legacy_Order->__get, wc_doing_it_wrong. This message was added in version 3.0.

PHP message: id was called incorrectly. Order properties should not be accessed directly. Backtrace: do_action('wp_ajax_nopriv_finalizarcompra'), WP_Hook->do_action, WP_Hook->apply_filters, PGA_Assinaturas->finalizar_compra, PGA_Assinaturas->pagamento, PGA_Assinaturas->registrar_assinatura, PGA_Gateway->change_status, PGA_WC_Pagseguro_Messages::get_status_titulo, WC_Abstract_Legacy_Order->__get, wc_doing_it_wrong. This message was added in version 3.0" while reading response header from upstream, client: 201.51.65.130, server: investrobos.com, request: "POST /wp-admin/admin-ajax.php HTTP/1.1", upstream: "fastcgi://172.20.0.4:9000", host: "investrobos.com", referrer: "https://investrobos.com/?page_id=9&order-pay=19&key=wc_order_wwHTgS9U75mmC"
san0suke commented 4 years ago

Acredito que essas mensagens sejam apenas avisos do PHP. Quanto a sessão encerrada acho que é por que vc está usando a conta enquanto faz seus testes. Faça o logoff e espere uns minutos

vinivst commented 4 years ago

Estou testando as compras no modo navegação privada para não ter esse tipo de conflito, não acho que seja isso.

vinivst commented 4 years ago

Consegui realizar a compra tentando novamente, mas o status continua sem sincronização.

image

image

san0suke commented 4 years ago

Consegue postar um print da tela de configurações da URL do WordPress?

vinivst commented 4 years ago

Claro, esse?

image

Ou esse?

image

san0suke commented 4 years ago

Escolha a primeira opção "Padrão" e faça um novo teste

vinivst commented 4 years ago

Estou tomando Sessão Expirada há uns 10 minutos.

vinivst commented 4 years ago

Telas de network do erro de Sessão Expirada

image

image

image

image

image

vinivst commented 4 years ago

Então, fiz o seguinte teste agora, tentei realizar a compra pelo plugin do Claudio Sanches (compra normal) e consegui ser redirecionado normalmente pro pagseguro, imediatamente após isso, voltei e tentei outra compra através do seu plugin de assinatura, quando foi redirecionar deu sessão expirada.