Vers?o 2.5.0 – problemas com token em webhooks woocommerce
-
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' );
? ? ? ? }
? ? }
- You must be logged in to reply to this topic.