UNPKG

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
"use strict"; 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'); }