• Rasmussen

    (@rasmussen)


    A versão 2.5.0 tem problemas com a geração e armazenamento do token usado para woocoomerce webhooks.

    O erro começa aqui. Foi criada essa função para “””automatizar””” a geração do webhook no asaas. Mas a função que gera o token que será usado não o salva para validação. Em outras palavras, o webhook é criado com um token, mas esse token não é salvo na loja.

    Entao o webhook causa um erro 500 (token invalido) quando o webhook é chamado pelo Asaas. Vale notar que o erro 500 para um token errado é outra falha na implementação.. Deveria ser um erro 4**.

        private function set_request_data() {

            $this->name        = __( 'Webhooks from WooCommerce', 'woo-asaas' );

            $this->url         = home_url() . self::WEBHOOK_SUFFIX;

            $this->email       = get_option( 'admin_email' );

            $this->send_type   = 'SEQUENTIALLY';

            $this->enabled     = true;

            $this->interrupted = false;

            $this->auth_token  = ( new Webhook_helper() )->genereate_random_token();

            $this->events      = array(

                Webhook::PAYMENT_CONFIRMED,

                Webhook::PAYMENT_CREATED,

                Webhook::PAYMENT_DELETED,

                Webhook::PAYMENT_OVERDUE,

                Webhook::PAYMENT_RECEIVED,

                Webhook::PAYMENT_REFUNDED,

                Webhook::PAYMENT_RESTORED,

                Webhook::PAYMENT_UPDATED,

            );

        }

    A seguinte função valida se o token é valido, mas get_option( ‘webhook_access_token’ ) não existe – nao foi criado na função anterior.

        private function validate_token() {

            $access_token = isset( $_SERVER['HTTP_ASAAS_ACCESS_TOKEN'] ) ? sanitize_text_field( wp_unslash( $_SERVER['HTTP_ASAAS_ACCESS_TOKEN'] ) ) : '';

            $expected_token = $this->gateway->get_option( 'webhook_access_token' );

            $decoded_expected_token = html_entity_decode( $expected_token );

            if ( $expected_token !== $access_token && $decoded_expected_token !== $access_token ) {

                throw new \Exception( 'Invalid Token' );

            }

        }
    • This topic was modified 7 months ago by Rasmussen.
Viewing 4 replies - 1 through 4 (of 4 total)
Viewing 4 replies - 1 through 4 (of 4 total)
  • The topic ‘Versão 2.5.0 – problemas com token em webhooks woocommerce’ is closed to new replies.