creagia / laravel-redsys

Integrate your Laravel application with Redsys, the lead payment gateway in Spain.
MIT License
10 stars 2 forks source link

clave duplicada al lanzar una request de Devolución #34

Closed gonbooster closed 3 months ago

gonbooster commented 10 months ago

Buenas,

Al intentar realizar una petición de Devolución o AnulacionPago me devuelve el error de que se esta intentando almacenar una orden duplicada en la tabla redsys-request.

Dado que la orden ya esta previamente almacenada, para estos casos no hay alguna forma de evitar guardar los valores en base de datos? Y que se añadan varios status más para deegado con exito, o con fallo?

    ```
$redsysRequest = RequestBuilder::newRequest(new RequestParameters(
            amountInCents: $game->getTotalAmount(),
            currency: Currency::EUR,
            order: $redsysRequest->order_number,
            payMethods: $redsysRequest->pay_method,
            transactionType: TransactionType::AnulacionPago,
            merchantUrl: route('game_refund_payment_notification'),
            urlOk: "test://games/$gameId/ok",
            urlKo: "test://games/$gameId/ko",
        ))->associateWithModel($game);
        $post = $redsysRequest->post();
dtorras commented 10 months ago

Creo que es mejor si siempre guardamos el log de las request. He estado haciendo pruebas con el proceso de devolución y, a parte del tema de la clave única en la base de datos veo que no se gestiona la respuesta en el post.

Voy a preparar una nueva versión con la gestión de esto y modificando la estructura de la tabla para que permita repetir el número de orden. Temporalmente si modificas tu base de datos eliminado la restricción, te debería funcionar quedando la request como 'pending' después del post.

A qué te refieres con lo último que comentas de "Y que se añadan varios status más para deegado con exito, o con fallo?"?

gonbooster commented 10 months ago

¡Buenas noches, David!

Quiero expresarte mi agradecimiento por tu respuesta y felicitarte por el excelente plugin. Ha simplificado enormemente mi carga de trabajo.

En cuanto a la sugerencia de añadir varios estados adicionales para "denegado con éxito" o "denegado con fallo", comprendo que estás en proceso de modificar la librería para permitir órdenes duplicadas, por lo que este detalle no es tan relevante. Mi consulta inicial era en caso de que no permitieras duplicarlas y, en consecuencia, necesitara ajustar el atributo de "status" en las solicitudes de Redsys para los diferentes "transaction_type".

Sin embargo, considero que permitir duplicados añade un valor significativo. Incluso entendiendo que la tabla se aplicará a todos los tipos de transacciones, te sugiero modificar el enumerado de estados a (success, denied, pending). Esto proporcionaría una información más detallada sobre el estado de las transacciones y mejoraría la comprensión general del sistema.

Gracias.

dtorras commented 3 months ago

Hola! Acabo de publicar la versión 3.0.0 que incorpora varias de las propuestas tuyas en este issue https://github.com/creagia/laravel-redsys/releases/tag/3.0.0

Si necesitas hacer upgrade de la v2 a la v3 en tu app, puedes mirar los cambios en el enlace anterior y ver un resumen de los cambios breaking en https://github.com/creagia/laravel-redsys/blob/3.0.0/UPGRADING.md

gonbooster commented 3 months ago

Buenas David, estupendo, he mirado por encima los cambios, veo que ahora los enum son $table->enum('status', ['pending', 'error', 'success'])->default('pending'); . si quiero hacer un refund y es correcto ahora saldrá como una nueva lineal y debo fijarme en el código para saber si es de tipo refund no ?

El dom, 2 jun 2024 a las 18:48, David Torras @.***>) escribió:

Hola! Acabo de publicar la versión 3.0.0 que incorpora varias de las propuestas tuyas en este issue https://github.com/creagia/laravel-redsys/releases/tag/3.0.0

Si necesitas hacer upgrade de la v2 a la v3 en tu app, puedes mirar los cambios en el enlace anterior y ver un resumen de los cambios breaking en https://github.com/creagia/laravel-redsys/blob/3.0.0/UPGRADING.md

— Reply to this email directly, view it on GitHub https://github.com/creagia/laravel-redsys/issues/34#issuecomment-2143938552, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFNNSCBEJIEFAYDGAV43CALZFNEFPAVCNFSM6AAAAAA7U2M7ESVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNBTHEZTQNJVGI . You are receiving this because you authored the thread.Message ID: @.***>

-- Un saludo.

- Gonzalo del Palacio Jiménez -