53 lines
1.5 KiB
JavaScript
53 lines
1.5 KiB
JavaScript
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(); |