Plugin Directory

Changeset 3288747


Ignore:
Timestamp:
05/07/2025 02:13:28 AM (11 months ago)
Author:
refacilpay
Message:

feat(logging): ✨ Enhance logger functionality to include order context and improve error message formatting

Location:
refacil-pay/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • refacil-pay/trunk/class-gateway.php

    r3278455 r3288747  
    9494    public function process_payment($order_id): array
    9595    {
     96        $this->logger->setOrder($order_id);
    9697        $order = wc_get_order($order_id);
     98
    9799        if (!$order) {
    98100            $this->logger->error('Order not found: ' . $order_id);
     
    102104            );
    103105        }
    104 
    105         $this->logger->info('Processing payment for order ' . $order_id);
    106106
    107107        try {
     
    120120            } else {
    121121                $message = 'Error processing payment for order: ' . $order_id . ' - Response: ' . json_encode($response_transaction);
    122                 $this->logger->error($message);
     122                $this->logger->error('Error en el procesamiento del pago: ' . json_encode([
     123                    'order_id' => $order_id,
     124                    'response' => $response_transaction,
     125                    'error_message' => $message
     126                ]));
    123127
    124128                return array(
     
    129133        } catch (Exception $e) {
    130134            $message = 'Exception processing payment for order ' . $order_id . ' - ' . $e->getMessage();
    131             $this->logger->error($message);
     135            $this->logger->error('Excepción en el procesamiento del pago: ' . $e->getMessage());
    132136
    133137            return array(
     
    135139                'message' => 'Excepción al procesar el pago: ' . $e->getMessage()
    136140            );
     141        } finally {
     142            $this->logger->cleanOrder();
    137143        }
    138144    }
     
    282288        $returnUrl = $this->environment->get_return_url($order);
    283289        $name = $order->get_billing_first_name() . ' ' . $order->get_billing_last_name();
    284         $email = $order->get_billing_email();
    285         $cell_phone = $order->get_billing_phone();
    286290
    287291        $this->request_body_pay = ([
     
    292296            'returnUrl' => $returnUrl,
    293297            'showSummary' => true,
    294             'name' => $order->get_billing_first_name() . ' ' . $order->get_billing_last_name(),
    295             'email' => $order->get_billing_email(),
    296             'cell_phone' => $order->get_billing_phone(),
    297298            'reference1' => null,
    298299            'reference2' => [
    299300                "Label" => [
    300301                    "Name" => $name,
    301                     "Email" => base64_encode($email),
    302                     "CellPhone" => base64_encode($cell_phone)
     302                    "Email" => base64_encode($order->get_billing_email()),
     303                    "CellPhone" => base64_encode($order->get_billing_phone())
    303304                ],
    304305                "Commerce" => [
     
    316317    private function get_trx_token(): ?string
    317318    {
    318         $authorization = "{'Bearer'} {$this->get_token_auth_from_db()}";
     319        $authorization = "Bearer " . $this->get_token_auth_from_db();
    319320        $request_headers = array('Content-Type' => 'application/json', 'Authorization' => $authorization);
    320321        $url = $this->get_pay_api_url() . 'trx-token/generate';
    321322        $data = array('service' => '/cash-in/generate/payment-link/token');
     323
     324        $this->logger->info('Enviando petición para generar token transaccional: ' . json_encode([
     325            'url' => $url,
     326            'payload' => $data
     327        ]));
    322328
    323329        $response = wp_remote_post($url, array('body' => wp_json_encode($data), 'headers' => $request_headers));
     
    326332        $response_data = json_decode($response_body, true);
    327333       
     334        $this->logger->info('Respuesta en la generación de token transaccional: ' . json_encode([
     335            'response_code' => $response_code,
     336            'response_data' => $response_data
     337        ]));
     338       
    328339        if (is_wp_error($response)) {
    329             $this->logger->error('Response data: ' . json_encode($response_data));
     340            $this->logger->error('Error en la petición de token transaccional: ' . json_encode([
     341                'error' => is_wp_error($response) ? $response->get_error_message() : '',
     342                'response_data' => $response_data
     343            ]));
    330344            throw new Exception('Error getting transaction token');
    331345        }
    332346       
    333347        if (!isset($response_data['data']['token'])) {
    334             $this->logger->error('Token not found in response');
     348            $this->logger->error('Token no encontrado en la respuesta: ' . json_encode([
     349                'response_data' => $response_data
     350            ]));
    335351        }
    336352
     
    347363        $this->request_body_pay['reference1'] = $this->reference1;
    348364
    349         $authorization = "{'Bearer'} {$this->get_token_auth_from_db()}";
     365        $this->logger->info('Iniciando creación de transacción: ' . json_encode([
     366            'reference1' => $this->reference1
     367        ]));
     368
     369        $authorization = "Bearer " . $this->get_token_auth_from_db();
    350370        $request_headers = [
    351371            'Content-Type' => 'application/json',
     
    354374        ];
    355375
     376        $this->logger->info('Enviando petición de creación de transacción: ' . json_encode([
     377            'url' => $this->get_pay_api_url() . 'cash-in/generate/payment-link/token',
     378            'payload' => $this->request_body_pay
     379        ]));
     380
    356381        $response = wp_remote_post(
    357382            $this->get_pay_api_url() . 'cash-in/generate/payment-link/token',
     
    365390        $url_return = null;
    366391
    367         $this->logger->info('Response data: ' . json_encode($response_data));
     392        $this->logger->info('Respuesta de creación de transacción recibida: ' . json_encode([
     393            'response_code' => $response_code,
     394            'response_body' => $response_body,
     395            'response_data' => $response_data
     396        ]));
    368397
    369398        if ($response_code >= 200 && $response_code < 300 && $response_status_code === '00' && is_array($response_data)) {
     
    377406            );
    378407        } elseif ($response_code === 401) {
     408            $this->logger->warning('Token inválido detectado, intentando renovar: ' . json_encode([
     409                'order_id' => $order_id,
     410                'response_code' => $response_code
     411            ]));
     412
    379413            $this->delete_invalid_token();
    380414            $this->register_transaction_log(
     
    388422            $this->update_store_token($this->token);
    389423
     424            $this->logger->info('Token renovado exitosamente');
    390425            throw new Exception('Invalid token. Please try again.');
    391426        } else {
  • refacil-pay/trunk/includes/logger.php

    r3231483 r3288747  
    55    private $context;
    66    private $logger;
     7    private $orderNumber;
    78
    89    public function __construct($context = 'refacil_pay')
     
    1011        $this->context = $context;
    1112        $this->logger = new WC_Logger();
     13        $this->orderNumber = null;
     14    }
     15
     16    public function setOrder($orderNumber)
     17    {
     18        $this->orderNumber = $orderNumber;
     19    }
     20
     21    public function cleanOrder()
     22    {
     23        $this->orderNumber = null;
     24    }
     25
     26    private function formatMessage($message)
     27    {
     28        $formattedMessage = $message;
     29       
     30        if ($this->orderNumber !== null) {
     31            $formattedMessage = '[' . $this->orderNumber . '] ' . $message;
     32        }
     33       
     34        return $formattedMessage;
    1235    }
    1336
    1437    public function info($message)
    1538    {
    16         $this->logger->info($message, ['source' => $this->context]);
     39        $formattedMessage = $this->formatMessage($message, $context);
     40        $this->logger->info($formattedMessage, ['source' => $this->context]);
    1741    }
    1842
    1943    public function error($message)
    2044    {
    21         $this->logger->error($message, ['source' => $this->context]);
     45        $formattedMessage = $this->formatMessage($message);
     46        $this->logger->error($formattedMessage, ['source' => $this->context]);
    2247    }
    2348}
  • refacil-pay/trunk/re-facil-gateway.php

    r3278468 r3288747  
    33Plugin Name: Refácil Pay
    44Description: Pasarela de pagos para Woocommerce.
    5 Version: 1.0.6
     5Version: 1.0.7
    66Author: Refácil Pay
    77Author URI: https://refacilpay.com/
  • refacil-pay/trunk/readme.txt

    r3278455 r3288747  
    44Requires at least: 4.0 
    55Tested up to: 6.4.2 
    6 Stable tag: 1.0.6 
     6Stable tag: 1.0.7 
    77Requires PHP: 7.0 
    88License: GPL-2.0+ 
     
    8282
    8383== Changelog == 
     84= 1.0.7 =
     85* Implementación de validación de datos en el checkout
     86* Mejora en el manejo de errores y mensajes de validación
     87* Optimización del proceso de checkout para mejor experiencia de usuario
     88* Actualización de dependencias y mejoras de seguridad
     89
    8490= 1.0.6 =
    8591* Refactorización de la gestión de tokens para mejorar la seguridad y mantenibilidad
     
    101107
    102108== Upgrade Notice == 
    103 = 1.0.6
    104 * Actualiza a esta versión para obtener mejoras en la seguridad del manejo de tokens, procesamiento de pagos más robusto y una mejor experiencia de usuario en el checkout.
     109= 1.0.7
     110* Actualiza a esta versión para obtener mejoras en la validación de datos del checkout, manejo de errores más robusto y una experiencia de usuario optimizada en el proceso de pago.
Note: See TracChangeset for help on using the changeset viewer.