payu-websdk
Version:
PayU WEB SDK for nodejs
39 lines (32 loc) • 1.43 kB
JavaScript
const hasher = require('../utils/hasher');
const PayuErrors = require('../Error');
const htmlEncoder = require('../utils/htmlencoder');
/**
* PayU payment initiate function
* @param {Object} credes - PayU credentials
* @param {Object} params - Payment parameters
* @returns {string} - HTML form with auto-submit
*/
module.exports = function app(credes, params) {
const hash = hasher.paymentHasher(credes, params);
params.hash = hash;
params.key = credes.key;
function inputGen(name, val) {
const encodedName = htmlEncoder.encodeHTMLAttribute(name);
let encodedValue;
if (typeof val === 'object') {
encodedValue = htmlEncoder.encodeJSONForHTML(val);
} else {
encodedValue = htmlEncoder.encodeHTMLAttribute(String(val));
}
return `<input type="hidden" name="${encodedName}" value="${encodedValue}" />`;
}
const formAction = htmlEncoder.encodeHTMLAttribute(credes.paymentURL);
const header = `<form name="payment_post" id="payment_post" action="${formAction}" method="post">`;
const footer = `</form><script type="text/javascript">window.onload=function(){document.forms['payment_post'].submit();};</script>`;
let inputs = header;
for (let key in params) {
inputs += inputGen(key, params[key]);
}
return inputs + footer;
};