/var/www/greso.tech/server/nsm/controllers/order/payment
NameSizeModeActions
authorize_webhook.js17460644editdlrm
cardknox_sale.js57740644editdlrm
cardknox_send_link.js30040644editdlrm
cardknox_webhook.js29630644editdlrm
create.js25380644editdlrm
delete.js10800644editdlrm
edit.js16840644editdlrm
list.js12110644editdlrm
Edit: /var/www/greso.tech/server/nsm/controllers/order/payment/cardknox_webhook.js (2963B)
module.exports = function ({ db, logger, config }) { const { NotFound, BadRequest } = require('../../../responseModels/errors') const { isSet, isEmail, isPhone, isEmpty, minLength, isNumber } = require('../../../utils/validator.util') var fs = require('fs'); function format(date) { if (!(date instanceof Date)) { throw new Error('Invalid "date" argument. You must pass a date instance') } const year = date.getFullYear() const month = String(date.getMonth() + 1).padStart(2, '0') const day = String(date.getDate()).padStart(2, '0') const h = String(date.getHours()).padStart(2, '0') const m = String(date.getMonth()).padStart(2, '0') const s = String(date.getSeconds()).padStart(2, '0') return `${year}-${month}-${day} ${h}:${m}:${s}` } return async (req, res, next) => { logger.child({ path: req.path, request: req.query }).info() let t1 = performance.now() try { console.log('CardKnox Webhook Received') var body = req.body fs.appendFile(config.api.log_dir + 'cardknox_webhooks.json', format(new Date()) + ": REQ: " + JSON.stringify(req.query) + "\r\nBODY: " + JSON.stringify(body) + "\r\n\r\n", (err) => err && console.error(err)); var { xAmount, xEnteredDate, xInvoice, xCustom01, xMaskedCardNumber, xOrderID, xRefNum, xRequestAmount, xResponseResult, xToken, } = body // res.writeHead(200, { // 'Context-Type': 'text/plain', // 'Access-Control-Allow-Origin': '*' // }) // // load payment const payment = await db.orderPayment.findOne({ where: { id: xCustom01 } }) if (payment) { payment.status = xResponseResult // payment.error = json['xError'] // payment.errorCode = json['xErrorCode'] payment.summ = xAmount payment.refNumber = xRefNum payment.maskedCardNumber = xMaskedCardNumber payment.token = xToken payment.response = xResponseResult.toString() payment.transactionType = 'webhook' // payment.ipAddress = parseIp(req) if (xResponseResult == 'Approved') { // load order const order = await db.order.findOne({ where: { id: payment.orderId } }) const inventory = await db.orderInventory.findOne({ where: { id: order.orderInventoryId } }) if (!inventory) { throw new BadRequest({ code: 2087, lang: req.user?.languageCode }) } if(inventory.paid == null){ inventory.paid = parseFloat(xAmount) }else{ inventory.paid = parseFloat(inventory.paid) + parseFloat(xAmount) } inventory.due = parseFloat(inventory.total) - inventory.paid await inventory.save() payment.confirmed = true } await payment.save() if (order) { await SERVICES.OrderService.OrderStatus(order, 'orderEdit') } } const time = performance.now() - t1 return res.status(200).json({ status: 'success', time }) } catch (err) { next(err) } } }