payunitjs-test
Version:
PayUnit is Seven's Payment aggregator created @SevenGroups by SevenGPS Core Engineers and tested by Silicon Valley professionals and Google experts
328 lines (294 loc) • 12.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.paymentInitialize_POST = paymentInitialize_POST;
exports.paymentProviders_GET = paymentProviders_GET;
exports.makePayment_POST = makePayment_POST;
exports.paymentStatus_GET = paymentStatus_GET;
exports.stripePaymentHandler = stripePaymentHandler;
exports.paypalPaymentHandler = paypalPaymentHandler;
var _payunitAjax = require("./payunitAjax.js");
var _endpoints = require("./endpoints.js");
var _sdkUtilities = require("./sdkUtilities.js");
var sdkUtils = _interopRequireWildcard(_sdkUtilities);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
var baseUrl = _endpoints.endpoints.liveBaseUrl;
// Function to initialize the payment
function paymentInitialize_POST(credentials, payload) {
// console.log(payload);
var url = baseUrl + _endpoints.endpoints.paymentEndpoints.initialize;
var initializePromise = new Promise(function (resolve, reject) {
(0, _payunitAjax.HttpDigest)(credentials, {
url: url,
method: "POST",
payload: payload,
uri: _endpoints.endpoints.digestURIs.initialize
}, function (data) {
if (data.error) {
reject({
error: data.error,
status: false
});
} else {
resolve(data);
}
});
});
return initializePromise;
}
// Function to get providers
function paymentProviders_GET(credentials, params) {
// console.log(params);
var url = baseUrl + _endpoints.endpoints.paymentEndpoints.gateways + ("?t_id=" + params.t_id + "&t_sum=" + params.t_sum + "&t_url=" + params.t_url);
var gatewayPromise = new Promise(function (resolve, reject) {
(0, _payunitAjax.HttpDigest)(credentials, {
url: url,
method: "GET",
payload: {},
uri: _endpoints.endpoints.digestURIs.gateways
}, function (data) {
if (data.error) {
reject({
error: data.error,
status: false,
message: "failed"
});
} else {
resolve(data.data);
}
});
});
return gatewayPromise;
}
// Function to make a payment
function makePayment_POST(credentials, payload) {
var url = baseUrl + _endpoints.endpoints.paymentEndpoints.makepayment;
var makePaymentPromise = new Promise(function (resolve, reject) {
(0, _payunitAjax.HttpDigest)(credentials, {
url: url,
method: "POST",
payload: payload,
uri: _endpoints.endpoints.digestURIs.makepayment
}, function (data) {
if (data.status === 200 || data.statusCode === 200 || data.status === 201 || data.statusCode === 201) {
data.data.gateway = payload.gateway;
data.data.message = data.message;
resolve(data.data);
} else {
// console.log(data);
var responseError = data.data.error !== undefined && data.data.error.length > 2 ? data.data.error : data.data.message;
if (data.data.status !== 200) {
errorMessage.textContent = responseError;
reject({
error: responseError,
status: false,
message: "FAILED",
errorData: data
});
}
}
});
});
return makePaymentPromise;
}
// function to get the status of a payment
function paymentStatus_GET(credentials, params, container) {
var url = void 0;
if (params.gateway.startsWith("mtn")) {
url = baseUrl + _endpoints.endpoints.paymentEndpoints.getpaymentstatus + ("/" + params.gateway + "/" + params.transaction_id + "?payment_ref=" + params.payment_ref + "&pay_token=" + params.pay_token);
}
var paymentStatusPromise = new Promise(function (resolve, reject) {
(0, _payunitAjax.HttpDigest)(credentials, {
url: url,
method: "GET",
payload: params,
uri: _endpoints.endpoints.digestURIs.getpaymentstatus
}, function (data) {
if (data.error) {
container.textContent = data.error;
reject({
error: data.error,
status: false,
message: "FAILED"
});
} else {
container.textContent = data.message;
resolve(data);
}
});
});
return paymentStatusPromise;
}
// export function paymentErrorHandler(response) {}
// export function paymentSuccessHandler(response) {}
function stripePaymentHandler() {
var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var data = sdkUtils.paramsParser(url);
// console.log(data);
var stripe = Stripe(data.publishable_key); //test key
var elements = stripe.elements();
var style = {
base: {
color: "#32325d",
fontFamily: "Arial, sans-serif",
fontSmoothing: "antialiased",
fontSize: "16px",
"::placeholder": {
color: "#32325d"
}
},
invalid: {
fontFamily: "Arial, sans-serif",
color: "#fa755a",
iconColor: "#fa755a"
}
};
var card = elements.create("card", { style: style });
// Stripe injects an iframe into the DOM
card.mount("#card-element");
card.on("change", function (event) {
// Disable the Pay button if there are no card details in the Element
document.querySelector("button").disabled = event.empty;
document.querySelector("#card-error").textContent = event.error ? event.error.message : "";
});
var form = document.getElementById("payment-form");
form.addEventListener("submit", function (event) {
event.preventDefault();
// Complete payment when the submit button is clicked
payWithCard(stripe, card, data.client_secret);
});
// Calls stripe.confirmCardPayment
// If the card requires authentication Stripe shows a pop-up modal to
// prompt the user to enter authentication details without leaving your page.
var payWithCard = function payWithCard(stripe, card, clientSecret) {
loading(true);
stripe.confirmCardPayment(clientSecret, {
payment_method: {
card: card
}
}).then(function (result) {
if (result.error) {
// Show error to your customer
showError(result.error.message);
} else {
// The payment succeeded!
orderComplete(result.paymentIntent.id);
setTimeout(function () {
window.location.href = data.return_url + ("?transaction_id = " + data.transaction_id + "&transaction_amount=" + data.amount + "&transaction_gateway=stripe&transaction_status=SUCCESS&message=Payment completed successfully");
}, 5000);
sdkUtils.notifyUrlHandler(data.notify_url, data);
// .then((isNotified) => {
// if(isNotified){
// window.location.href = data.return_url;
// }else{
// window.location.href =
// data.return_url +
// `?transaction_id = ${data.transaction_id}&status=SUCCESS&message=Payment completed successfully&isNotified=false`;
// }
// });
}
});
};
/* ------- UI helpers ------- */
// Shows a success message when the payment is complete
var orderComplete = function orderComplete(paymentIntentId) {
loading(false);
// document
// .querySelector(".result-message a")
// .setAttribute(
// "href",
// "https://app-payunit.sevengps.net/#/user/dashboard?intent=" + paymentIntentId
// );
document.querySelector(".result-message").classList.remove("hidden");
document.querySelector("button").disabled = true;
};
// Show the customer the error from Stripe if their card fails to charge
var showError = function showError(errorMsgText) {
loading(false);
var errorMsg = document.querySelector("#card-error");
errorMsg.textContent = errorMsgText;
setTimeout(function () {
errorMsg.textContent = "";
}, 4000);
};
// Show a spinner on payment submission
var loading = function loading(isLoading) {
if (isLoading) {
// Disable the button and show a spinner
document.querySelector("button").disabled = true;
document.querySelector("#spinner").classList.remove("hidden");
document.querySelector("#button-text").classList.add("hidden");
} else {
document.querySelector("button").disabled = false;
document.querySelector("#spinner").classList.add("hidden");
document.querySelector("#button-text").classList.remove("hidden");
}
};
}
function paypalPaymentHandler(url) {
var _this = this;
var loading = true;
var order = sdkUtils.paramsParser(url);
paypal.Buttons({
createOrder: function createOrder(data, actions) {
// console.log("This is the order data: ", order);
return order.order_id;
},
onApprove: function () {
var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(data, actions) {
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
loading = false;
document.getElementById("mobile-paypal").innerHTML = "\n <div class=\"payUnit_test\">\n <div class=\"elementLoading\">\n <input type=\"checkbox\" id=\"check\" />\n <label for=\"check\">\n <div class=\"check-icon\"></div>\n </label>\n </div>\n <div class=\"element\">\n <br />\n <p>Thanks for Using PayUnit, you will be Redirected shortly...</p>\n <br />\n </div>\n </div>\n ";
setTimeout(function () {
window.location.href = order.return_url + ("?transaction_id = " + order.transaction_id + "&transaction_amount=" + order.amount + "&transaction_gateway=paypal&transaction_status=SUCCESS&message=Payment completed successfully");
}, 5000);
sdkUtils.notifyUrlHandler(order.notify_url, order);
// .then((isNotified) => {
// if (isNotified) {
// // send to redirect url without params
// window.location.href = order.return_url;
// } else {
// // send to redirect url with params
// window.location.href =
// order.return_url +
// `?transaction_id = ${order.transaction_id}&status=SUCCESS&message=Payment completed successfully&isNotified=false`;
// }
// }).catch((error)=>{
// // send to redirect url with params
// window.location.href =
// order.return_url +
// `?transaction_id = ${order.transaction_id}&status=SUCCESS&message=Payment completed successfully&isNotified=false`;
// })
case 4:
case "end":
return _context.stop();
}
}
}, _callee, _this);
}));
function onApprove(_x2, _x3) {
return _ref.apply(this, arguments);
}
return onApprove;
}(),
onError: function onError(err) {
sdkUtils.notifyUrlHandler(order.notify_url, order).then(function (isNotified) {
if (isNotified) {
// send to redirect url without params
window.location.href = order.return_url;
} else {
// send to redirect url with params
window.location.href = order.return_url + ("?transaction_id = " + order.transaction_id + "&status=FAILED&message=Payment failed&isNotified=false");
}
}).catch(function (error) {
// send to redirect url with params
window.location.href = order.return_url + ("?transaction_id = " + order.transaction_id + "&status=FAILED&message=Payment failed&isNotified=false");
});
}
}).render('#paypalButton');
}