const db = require("../../../db/db"); const RedsysPos = require('redsys-pos'); const { CURRENCIES, TRANSACTION_TYPES } = RedsysPos; class RedsysProviders { async New(orderFk, price) { try { const MERCHANT_KEY = process.env.REDSYS_MERCHANT_KEY; const redsys = new RedsysPos(MERCHANT_KEY); let orderValue = String(orderFk) while (true) { if (orderValue.length == 4) { break } orderValue = '0' + orderValue } const regexAmount = /[,.]/ const amountValue = regexAmount.test(String(price)) ? String(price).replace(/[,.]/g, '') : String(price + '00') const obj = { amount: amountValue, orderReference: orderValue, merchantName: process.env.REDSYS_MERCHANT_NAME, merchantCode: process.env.REDSYS_MERCHANT_CODE, currency: "978", transactionType: "0", // '0' terminal: process.env.REDSYS_MERCHANT_TERMINAL, merchantURL: `${process.env.BASE_URL}/payments/redsys/notification`, successURL: `${process.env.BASE_URL}/checkout/success?orderId=${orderFk}&type=redsys`, errorURL: `${process.env.BASE_URL}/checkout/error` }; const result = redsys.makePaymentParameters(obj); return { ...result, DS_MERCHANT_ORDER: obj.orderReference } } catch (error) { throw error; } } async success(orderId) { try { return await db.order_confirm(orderId) } catch (error) { throw error } } } module.exports = new RedsysProviders();