Sobre este proyecto
it-programming / e-commerce
Abierto
Se requiere un desarrollador experto para implementar un módulo de pago en dos pasos con Redsys para la plataforma SixamMart, que utiliza el framework Laravel. El objetivo principal es gestionar pagos mediante pre-autorización al momento de crear un pedido y realizar la captura automática cuando el estado del pedido cambie a 'delivered'.
Requisitos de Configuración Redsys:
- Pre-autorización: Utilizar Ds_Merchant_TransactionType = 1.
- Captura (REST): Utilizar Ds_Merchant_TransactionType = 2.
- Anulación: Utilizar Ds_Merchant_TransactionType = 9.
- Tokenización: Implementar el uso de Ds_Merchant_Identifier para cumplir con PSD2 y habilitar pagos en "1-clic".
Implementación Backend (Módulo Laravel):
- Todo el código debe residir en la estructura Modules/RedsysPreAuth/.
- Se necesita una migración para crear una tabla `redsys_preauth_details` que almacene la siguiente información: order_id, ds_order (código de 12 caracteres), ds_authorisation_code (recibido tras la pre-autorización), card_token y status.
- Lógica de Captura: Crear un Event Listener que se active cuando el order_status de SixamMart cambie a 'delivered'. Este listener debe realizar una llamada interna vía api rest a redsys, enviando el código de autorización y el importe correspondiente. Si el código de respuesta de Redsys es 0000, se debe actualizar el payment_status del pedido a 'paid'.
Seguridad (SHA-256):
- Es crucial realizar la derivación de clave 3DES sobre el Ds_Order utilizando la Clave de Comercio (kc) antes de generar el hmac-sha256 final.
- En la fase de captura (rest), la firma se generará sobre el json de la petición.
Frontend:
- Añadir un checkbox "Guardar tarjeta" en la página de checkout.
- Si el usuario (user_id) tiene tokens de tarjeta activos, se debe mostrar un selector de tarjetas guardadas (enmascaradas) para facilitar el proceso de pago y evitar la reintroducción de datos.
Categoría Programación y Tecnología
Subcategoría Tiendas Online (e-commerce)
¿Cuál es el alcance del proyecto? Crear una tienda nueva
Plazo de Entrega: No definido
Habilidades necesarias