TransbankDevelopers / transbank-plugin-magento2-webpay-rest

Plugin Magento 2 using Transbank REST API
BSD 3-Clause "New" or "Revised" License
4 stars 10 forks source link

Error al retornar de una transacción rechazada #71

Closed socialweb-iaraya closed 7 months ago

socialweb-iaraya commented 9 months ago

Describe el bug

En ambiente de pruebas de una instalación limpia de Magento 2.4.2, el sitio se cae al volver de una transacción rechazada, a pesar de que se crea el registro en el log:

Dec 1, 2023 12:31:52 PM Canceled Customer Not Notified {"vci":"TSY","status":"FAILED","responseCode":-1,"amount":100005,"authorizationCode":"000000","paymentTypeCode":"VD","accountingDate":"1201","installmentsNumber":0,"installmentsAmount":null,"sessionId":"1","buyOrder":"000000001","cardNumber":"3829","cardDetail":{"card_number":"3829"},"transactionDate":"2023-12-01T15:31:14.511Z","balance":null}

Para reproducir

  1. Hacer instalación limpia de Magento 2.4.2
  2. Instalar plugin de Transbank usando composer.
  3. Realizar una compra que genere una transacción rechazada.
  4. El log retorna un error relacionado con un tipo de parámetro que se está pasando incorrectamente a una función.

Comportamiento observado

El sitio se cae y arroja el siguiente error:

TypeError: Argument 1 passed to Transbank\Webpay\Controller\Transaction\CommitWebpayM22::getRejectMessage() must be of the type array, object given, called in /var/www/test.domain.com/vendor/transbank/webpay-magento2-rest/Controller/Transaction/CommitWebpayM22.php on line 137 and defined in /var/www/test.domain.com/vendor/transbank/webpay-magento2-rest/Controller/Transaction/CommitWebpayM22.php:307 Stack trace: #0 /var/www/test.domain.com/vendor/transbank/webpay-magento2-rest/Controller/Transaction/CommitWebpayM22.php(137): Transbank\Webpay\Controller\Transaction\CommitWebpayM22->getRejectMessage() #1 /var/www/test.domain.com/vendor/magento/framework/Interception/Interceptor.php(58): Transbank\Webpay\Controller\Transaction\CommitWebpayM22->execute() #2 /var/www/test.domain.com/vendor/magento/framework/Interception/Interceptor.php(138): Transbank\Webpay\Controller\Transaction\CommitWebpay\Interceptor->callParent() #3 /var/www/test.domain.com/vendor/magento/framework/App/Action/Plugin/ActionFlagNoDispatchPlugin.php(51): Transbank\Webpay\Controller\Transaction\CommitWebpay\Interceptor->Magento\Framework\Interception{closure}() #4 /var/www/test.domain.com/vendor/magento/framework/Interception/Interceptor.php(135): Magento\Framework\App\Action\Plugin\ActionFlagNoDispatchPlugin->aroundExecute() #5 /var/www/test.domain.com/vendor/magento/framework/Interception/Interceptor.php(153): Transbank\Webpay\Controller\Transaction\CommitWebpay\Interceptor->Magento\Framework\Interception{closure}() #6 /var/www/test.domain.com/generated/code/Transbank/Webpay/Controller/Transaction/CommitWebpay/Interceptor.php(41): Transbank\Webpay\Controller\Transaction\CommitWebpay\Interceptor->callPlugins() #7 /var/www/test.domain.com/vendor/magento/framework/App/Action/Action.php(111): Transbank\Webpay\Controller\Transaction\CommitWebpay\Interceptor->execute() #8 /var/www/test.domain.com/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Framework\App\Action\Action->dispatch() #9 /var/www/test.domain.com/vendor/magento/framework/Interception/Interceptor.php(138): Transbank\Webpay\Controller\Transaction\CommitWebpay\Interceptor->callParent() #10 /var/www/test.domain.com/vendor/magento/framework/Interception/Interceptor.php(153): Transbank\Webpay\Controller\Transaction\CommitWebpay\Interceptor->Magento\Framework\Interception{closure}() #11 /var/www/test.domain.com/generated/code/Transbank/Webpay/Controller/Transaction/CommitWebpay/Interceptor.php(50): Transbank\Webpay\Controller\Transaction\CommitWebpay\Interceptor->callPlugins() #12 /var/www/test.domain.com/vendor/magento/framework/App/FrontController.php(186): Transbank\Webpay\Controller\Transaction\CommitWebpay\Interceptor->dispatch() #13 /var/www/test.domain.com/vendor/magento/framework/App/FrontController.php(118): Magento\Framework\App\FrontController->processRequest() #14 /var/www/test.domain.com/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Framework\App\FrontController->dispatch() #15 /var/www/test.domain.com/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\App\FrontController\Interceptor->callParent() #16 /var/www/test.domain.com/vendor/magento/module-store/App/FrontController/Plugin/RequestPreprocessor.php(99): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception{closure}() #17 /var/www/test.domain.com/vendor/magento/framework/Interception/Interceptor.php(135): Magento\Store\App\FrontController\Plugin\RequestPreprocessor->aroundDispatch() #18 /var/www/test.domain.com/vendor/magento/module-page-cache/Model/App/FrontController/BuiltinPlugin.php(75): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception{closure}() #19 /var/www/test.domain.com/vendor/magento/framework/Interception/Interceptor.php(135): Magento\PageCache\Model\App\FrontController\BuiltinPlugin->aroundDispatch() #20 /var/www/test.domain.com/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception{closure}() #21 /var/www/test.domain.com/generated/code/Magento/Framework/App/FrontController/Interceptor.php(23): Magento\Framework\App\FrontController\Interceptor->callPlugins() #22 /var/www/test.domain.com/vendor/magento/framework/App/Http.php(116): Magento\Framework\App\FrontController\Interceptor->dispatch() #23 /var/www/test.domain.com/generated/code/Magento/Framework/App/Http/Interceptor.php(23): Magento\Framework\App\Http->launch() #24 /var/www/test.domain.com/vendor/magento/framework/App/Bootstrap.php(263): Magento\Framework\App\Http\Interceptor->launch() #25 /var/www/test.domain.com/pub/index.php(29): Magento\Framework\App\Bootstrap->run() #26 {main}

Comportamiento esperado

Debería mostrar un mensaje al usuario de que la transacción se rechazó por X motivo.

Capturas de pantalla

N/A

Versiones de software

ubuntu 22.04.3 - php7.4 - mysql 8.0.35 - elasticsearch 7.6.0 - composer 1.10.17 - magento 2.4.2 - Plugin Transbank 2.1.5

Contexto adicional

El sitio está configurado con certificado SSL instalado usando Certbot. Las transacciones aceptadas no generan error.

mastudillot commented 7 months ago

Hola @socialweb-iaraya esto quedo resuelto en el siguiente PR https://github.com/TransbankDevelopers/transbank-plugin-magento2-webpay-rest/pull/79

Estará incluido en la siguiente versión del plugin

Gracias por el reporte.