UNPKG

redsys-connect

Version:

A simple and secure NPM package to integrate the RedSys payment gateway with modern web technologies like React, Next.js, and Angular.

183 lines (126 loc) 6.86 kB
# RedSys-Connect **RedSys-Connect** es un paquete NPM ligero diseñado para simplificar la integración de la pasarela de pagos RedSys en aplicaciones web modernas. Este paquete funciona a la perfección con tecnologías como React, Next.js, Angular y otras. ## Características - **Fácil integración**: Convierte rápidamente los parámetros del comercio a un formato compatible con RedSys. - **Codificación Base64**: Codifica automáticamente los parámetros en Base64 para una comunicación segura con RedSys. - **Generación de firma**: Genera la firma HMAC-SHA256 necesaria para las transacciones de RedSys. - **Formulario de pago personalizable**: Genera y personaliza el formulario de pago según tus necesidades. ## Instalación Para instalar el paquete, simplemente ejecuta: ```bash npm install redsys-connect ``` ## Uso de RedSys-Connect con Formulario propio Importar las funciones necesarias primero, importe las funciones necesarias del paquete: ```javascript import { MerchantParams, orderNumber } from "redsys-connect"; ``` ### Definir los parámetros del comercio: Debes definir los parámetros del comercio que se enviarán a RedSys. Estos parámetros son requeridos por la API de RedSys para la transacción. ```javascript const params: MerchantParams = { amount: '1000', // Importe en céntimos (p. ej., 10,00 EUR = 1000) currency: 'EUR', // código de moneda merchantCode: '123456789', // Su código de comerciante de RedSys merchantUrl: 'https://your-merchant-url.com', // La URL de tu comercio order: orderNumber(), // Orden - La orden se ppuede generar automaticamente terminal: '1', // número de terminal transactionType: '0', // tipo de transacción urlPaymentDenied: 'https://your-site.com/payment-denied', // URL de pago denegado urlPaymentSuccess: 'https://your-site.com/payment-success', // URL de pago exitoso }; ``` ### Pasa los parámetros a Base64 Para pasar los _merchantParams_ puedes usar la función _createMerchantParameters_ ```javascript const parametrosDelComercio = createMerchantParameters(params); ``` ### Define tu clave secreta (clave Comercio) Debes proporcionar tu clave secreta (RedSys la proporciona): ```javascript const claveComercio = "your-secret-key"; ``` ### Generar la firma RedSys requiere que los datos enviados esten en Base64, por lo cual para generar la firma puedes hacerlo usando _createMerchantSignature_ ```javascript const dsSignature = createMerchantSignature( params, parametrosDelComercio, claveComercio ); ``` ### Botón para pagar Una vez realizado todo el proceso anterior puede realizar tu formulario, recuerda que los campos no pueden ser visibles: ```HTML <form name="formularioPago" method="POST" action="https://sis-t.redsys.es:25443/sis/realizarPago"> <input type="text" hidden name="DS_MERCHANTPARAMETERS" value={parametrosDelComercio}/> <input type="text" hidden name="DS_SIGNATURE" value={dsSignature} /> <input type="text" name="DS_SIGNATUREVERSION" value={signatureVersion} /> `Puedes importarla de: import { signatureVersion } from "redsys-connect";` <input type="submit" value="REALIZAR PAGO" /> </form> ``` ### URL para produción y desarrollo: Las url para desarrollo es: ```bash https://sis-t.redsys.es:25443/sis/realizarPago ``` para produción es: ```bash https://sis.redsys.es/sis/realizarPago ``` # Formulario integrado Importar las funciones necesarias ```javascript import { generatePaymentForm, orderNumber } from "redsys-connect"; import { MerchantParams } from "redsys-connect"; ``` ### Definir los parámetros del comercio Define un objeto MerchantParams con los parámetros necesarios para crear el formulario de pago. A continuación se muestran algunos de los parámetros clave que debes configurar: ```javascript const params: MerchantParams = { amount: '1000', // Importe en céntimos (p. ej., 10,00 EUR = 1000) currency: 'EUR', // código de moneda merchantCode: '123456789', // Su código de comerciante de RedSys merchantUrl: 'https://your-merchant-url.com', // La URL de tu comercio order: orderNumber(), // Orden - La orden se ppuede generar automaticamente terminal: '1', // número de terminal transactionType: '0', // tipo de transacción urlPaymentDenied: 'https://your-site.com/payment-denied', // URL de pago denegado urlPaymentSuccess: 'https://your-site.com/payment-success', // URL de pago exitoso }; ``` ### Definir la clave de comercio La clave de comercio es un valor base64 que se utiliza para firmar el formulario de pago. Este valor es proporcionado por Redsys y se utiliza para garantizar la integridad y seguridad de la transacción. ```javascript const claveComercio = " TU CLAVE"; ``` ### Generar el formulario de pago Llama a la función _generatePaymentForm()_ para generar el formulario de pago. Asegúrate de proporcionar los parámetros necesarios, incluyendo la clave de comercio, si estás en un entorno de desarrollo _(dev = true)_, y el texto personalizado para el botón de pago. ```javascript const dev = true; const submitText = "PAGAR AHORA"; // Llamada a la acción const formHTML = generatePaymentForm(params, claveComercio, dev, submitText); ``` ### Mostrar el formulario Una vez que tengas el HTML del formulario, puedes insertarlo en tu aplicación para que el usuario pueda completar el pago. ```javascript <div dangerouslySetInnerHTML={{ __html: formHTML }} /> ``` ### Configuración para producción solo generatePaymentForm Si estás listo para producción, debes cambiar el parámetro dev a false y utilizar los valores correctos de Redsys para producción. ```javascript const dev = false; ``` ## Soporte Para soporte puedes enviarnos un correo a spain@ark-platforms.com ## 🔗 Links [![linkedin](https://img.shields.io/badge/linkedin-0A66C2?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/arkplatforms) [![instagram](https://img.shields.io/badge/instagram-E4405F?style=for-the-badge&logo=instagram&logoColor=white)](https://www.instagram.com/arkplatforms/) [![facebook](https://img.shields.io/badge/facebook-1877F2?style=for-the-badge&logo=facebook&logoColor=white)](https://www.facebook.com/arkplatforms) [![whatsapp](https://img.shields.io/badge/whatsapp-25D366?style=for-the-badge&logo=whatsapp&logoColor=white)](https://wa.me/+34614297204) [![website](https://img.shields.io/badge/web-Ark%20Platforms-000000?style=for-the-badge&logo=google-chrome&logoColor=white)](https://ark-platforms.com) [![gmail](https://img.shields.io/badge/gmail-contacto@arkplatforms.com-D14836?style=for-the-badge&logo=gmail&logoColor=white)](mailto:spain@arkplatforms.com)