PluginProbe
Better Payment – Instant Payments, Donations, Fundraising with Subscriptions & More / 0.0.4
Better Payment – Instant Payments, Donations, Fundraising with Subscriptions & More v0.0.4
2.4.1 2.4.0 2.3.4 2.3.3 2.3.2 2.3.1 2.3.0 2.2.2 2.2.1 2.2.0 2.1.2 2.1.1 trunk 0.0.1 0.0.2 0.0.3 0.0.4 0.0.5 0.0.6 0.0.7 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 All 68 releases
better-payment / assets / js / better-payment.js

better-payment.js in Better Payment – Instant Payments, Donations, Fundraising with Subscriptions & More 0.0.4, at assets/js/better-payment.js

32 lines 13.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /*
2 * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
3 * This devtool is neither made for production nor for readable output files.
4 * It uses "eval()" calls to create a separate source file in the browser devtools.
5 * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
6 * or disable the default devtool with "devtool: false".
7 * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
8 */
9 /******/ (() => { // webpackBootstrap
10 /******/ var __webpack_modules__ = ({
11
12 /***/ "./src/js/better-payment.js":
13 /*!**********************************!*\
14 !*** ./src/js/better-payment.js ***!
15 \**********************************/
16 /***/ (() => {
17
18 eval(";\n(function ($) {\n \"use strict\";\n\n $(document).on(\"click\", \".better-payment-paypal-bt\", function (e) {\n const id = $(\"#\" + this.form.id),\n $form = $(id),\n paymentInfo = $(this).data(\"paypal-info\"),\n fields = $form.serializeObject();\n let data = validateBetterPaymentForm(paymentInfo, fields, this.form);\n\n // $(this).html('Submitting <span class=\"elementor-control-spinner\">&nbsp;<i class=\"eicon-spinner eicon-animation-spin\"></i>&nbsp;</span>');\n $(this).attr('disabled', true);\n if (typeof data.status !== 'undefined' && !data.status) {\n e.preventDefault();\n toastr.error(data.errors.length ? data.errors[0] : \"Something went wrong!\");\n this.disabled = false;\n return false;\n }\n\n // $(this).html('Proceed to Payment');\n $(this).attr('disabled', false);\n });\n $(document).on(\"click\", \".better-payment-stripe-bt\", function (e) {\n e.preventDefault();\n const id = $(\"#\" + this.form.id),\n $form = $(id),\n $this = $(this),\n setting_data = $form.data('better-payment'),\n fields = $form.serializeObject();\n let data = validateBetterPaymentForm('', fields, this.form, false);\n if (typeof data.status !== 'undefined' && !data.status) {\n e.preventDefault();\n toastr.error(data.errors.length ? data.errors[0] : \"Something went wrong!\");\n this.disabled = false;\n return false;\n }\n\n // $(this).html('Submitting <span class=\"elementor-control-spinner\">&nbsp;<i class=\"eicon-spinner eicon-animation-spin\"></i>&nbsp;</span>')\n\n $(this).attr('disabled', true);\n $.ajax({\n url: betterPayment.ajax_url,\n type: \"post\",\n data: {\n action: \"better_payment_stripe_get_token\",\n security: betterPayment.nonce,\n fields: fields,\n setting_data: setting_data\n },\n success: function (response) {\n if (typeof response.data.stripe_data != 'undefined') {\n $this.html('Redirecting <span class=\"elementor-control-spinner\">&nbsp;<i class=\"eicon-spinner eicon-animation-spin\"></i>&nbsp;</span>');\n var stripe = Stripe(response.data.stripe_public_key);\n stripe.redirectToCheckout({\n sessionId: response.data.stripe_data\n }).then(function (t) {});\n } else {\n $this.html('Stripe');\n toastr.error(response.data);\n }\n $(this).attr('disabled', false);\n // $(this).html('Proceed to Payment');\n },\n\n error: function () {\n $(this).attr('disabled', false);\n console.log('Something went wrong!');\n // $(this).html('Proceed to Payment');\n }\n });\n });\n\n function validateBetterPaymentForm(paymentInfo, fields, thisForm, isPaypal = true) {\n let fieldsToExclude = getExcludedFields(),\n data = {};\n data.status = true;\n data.errors = [];\n let validatedData = validateForm(thisForm, fields, fieldsToExclude);\n data.status = typeof validatedData.status !== \"undefined\" ? validatedData.status : data.status;\n data.errors = typeof validatedData.errors !== \"undefined\" && validatedData.errors.constructor === Array ? data.errors.concat(validatedData.errors) : data.errors;\n if (isPaypal && !paymentInfo.business_email) {\n data.errors.push(\"Business Email is required\");\n data.status = false;\n }\n if (typeof fields.primary_payment_amount === 'undefined' || fields.primary_payment_amount === '') {\n data.errors.push(\"Payment Amount field is required!\");\n data.status = false;\n }\n if (typeof fields.primary_payment_amount !== 'undefined' && parseFloat(fields.primary_payment_amount) < 1) {\n data.errors.push(\"Minimum amount is 1!\");\n data.status = false;\n }\n return data;\n }\n $(document).on(\"change\", \".bp-custom-payment-amount\", function (e) {\n if (typeof this.form.id == 'undefined') {\n toastr.error('Something went wrong!');\n }\n if ($(this).hasClass('bp-custom-payment-amount-el-integration')) {\n console.log('el integration found!');\n } else {\n console.log('el integration not found!');\n }\n const radioInput = document.querySelectorAll(\"#\" + this.form.id + ' .bp-payment-amount-wrap input[type=\"radio\"]');\n radioInput.forEach(radio => {\n radio.checked = false;\n });\n $('.bp-transaction-details-amount-text').text(this.value);\n });\n $(document).on(\"click\", \".bp-form_pay-radio\", function (e) {\n if (typeof this.form.id == 'undefined') {\n toastr.error('Something went wrong!');\n }\n const $this = $(this);\n let amount = parseFloat($this.val());\n if (amount == '') {\n return false;\n }\n $(\"#\" + this.form.id + ' .bp-custom-payment-amount').val(amount);\n $('.bp-transaction-details-amount-text').text(amount);\n });\n $(window).on('elementor/frontend/init', () => {\n const Better_Payment_Stripe = elementorModules.frontend.handlers.Base.extend({\n getDefaultSettings: function getDefaultSettings() {\n return {\n selectors: {\n form: '.elementor-form'\n }\n };\n },\n getDefaultElements: function getDefaultElements() {\n let selectors = this.getSettings('selectors'),\n elements = {};\n elements.$form = this.$element.find(selectors.form);\n return elements;\n },\n bindEvents: function bindEvents() {\n this.elements.$form.on('submit_success', this.handleFormAction);\n },\n handleFormAction: function handleFormAction(event, res) {\n if (typeof res.data.better_stripe_data != 'undefined') {\n let stripe = Stripe(res.data.better_stripe_data.stripe_public_key);\n stripe.redirectToCheckout({\n sessionId: res.data.better_stripe_data.stripe_data\n }).then(function (t) {});\n }\n }\n });\n const Better_Payment_Handler = $element => {\n elementorFrontend.elementsHandler.addHandler(Better_Payment_Stripe, {\n $element\n });\n };\n elementorFrontend.hooks.addAction('frontend/element_ready/form.default', Better_Payment_Handler);\n if (typeof elementor != 'undefined') {\n elementor.hooks.addAction('panel/open_editor/widget/form', function (panel, model, view) {\n elementor.hooks.addFilter('elementor_pro/forms/content_template/item', function (item, i, settings) {\n let bp_field_payment_amount = 'payment_amount';\n let better_payment_payment_amount_enable_settings = '';\n if (typeof settings.better_payment_payment_amount_enable !== 'undefined') {\n better_payment_payment_amount_enable_settings = settings.better_payment_payment_amount_enable;\n }\n console, l;\n if (typeof item.field_type !== 'undefined' && item.field_type == bp_field_payment_amount && better_payment_payment_amount_enable_settings === 'yes') {\n let bp_field_label = item.field_label;\n let bp_field_placeholder = typeof item.bp_placeholder !== 'undefined' ? item.bp_placeholder : '';\n let better_payment_form_currency = 'USD';\n if (settings.submit_actions.includes('paypal')) {\n better_payment_form_currency = typeof settings.better_payment_form_paypal_currency !== 'undefined' ? settings.better_payment_form_paypal_currency : better_payment_form_currency;\n } else if (settings.submit_actions.includes('stripe')) {\n better_payment_form_currency = typeof settings.better_payment_form_stripe_currency !== 'undefined' ? settings.better_payment_form_stripe_currency : better_payment_form_currency;\n }\n let better_payment_form_currency_symbol = getCurrencySymbols(better_payment_form_currency);\n let bp_payment_amount_label = `<label for=\"form-field-${bp_field_payment_amount}\" class=\"elementor-field-label\">${bp_field_label}</label>`;\n let bp_payment_amount_input = `<input type=\"number\" name=\"form_fields[${bp_field_payment_amount}]\" id=\"form-field-${bp_field_payment_amount}\" class=\"elementor-field elementor-size-sm elementor-field-textual bp-elementor-field-textual-amount\" min=\"${item.bp_field_min}\" max=\"${item.bp_field_max}\" placeholder=\"${bp_field_placeholder}\" >`;\n let payment_amount_input_group = ` <div class=\"bp-input-group mb-2\">\n <div class=\"bp-input-group-prepend\">\n <div class=\"bp-input-group-text\" title=\"${better_payment_form_currency}\">${better_payment_form_currency_symbol}</div>\n </div>\n ${bp_payment_amount_input}\n </div>\n `;\n item.field_type = 'html';\n item.field_html = bp_payment_amount_label + payment_amount_input_group;\n }\n return item;\n }, 10, 3);\n });\n }\n });\n $.fn.serializeObject = function () {\n var objInit = {};\n var a = this.serializeArray();\n $.each(a, function () {\n if (objInit[this.name]) {\n if (!objInit[this.name].push) {\n objInit[this.name] = [objInit[this.name]];\n }\n objInit[this.name].push(this.value || '');\n } else {\n objInit[this.name] = this.value || '';\n }\n });\n return objInit;\n };\n\n //Better Payment Functions Starts\n function getExcludedFields() {\n return ['better_payment_page_id', 'better_payment_widget_id', 'return', 'action', 'security', 'cancel_return', 'payment_amount', 'primary_payment_amount'];\n }\n function getCurrencySymbols(currency = 'USD') {\n let currencySymbol = '$';\n let currencyList = {\n 'AUD': \"$\",\n 'CAD': \"$\",\n 'CZK': \"Kč\",\n 'DKK': \"kr\",\n 'EUR': \"€\",\n 'HKD': \"$\",\n 'HUF': \"ft\",\n 'ILS': \"₪\",\n 'JPY': \"¥\",\n 'MXN': \"$\",\n 'NOK': \"kr\",\n 'NZD': \"$\",\n 'PHP': \"₱\",\n 'PLN': \"zł\",\n 'GBP': \"£\",\n 'RUB': \"₽\",\n 'SGD': \"$\",\n 'SEK': \"kr\",\n 'CHF': \"CHF\",\n 'TWD': \"$\",\n 'THB': \"฿\",\n 'TRY': \"₺\",\n 'USD': \"$\"\n };\n if (currency in currencyList) {\n currencySymbol = currencyList[currency];\n }\n return currencySymbol;\n }\n //Better Payment Functions Ends\n\n //Helper Functions Starts\n function validateEmail(email) {\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email);\n }\n function validateForm(formSelector, fields, fieldsToExclude) {\n let data = {};\n data.status = true;\n data.errors = [];\n for (var key in fields) {\n if (fields.hasOwnProperty(key)) {\n if (fieldsToExclude.indexOf(key) === -1) {\n let validatedData = validateField(formSelector[key], fields[key]);\n if (!validatedData.status) {\n data.errors.push(typeof validatedData.error !== 'undefined' ? validatedData.error : `${key} field is required!`);\n data.status = false;\n return data;\n }\n }\n }\n }\n return data;\n }\n function validateField(fieldSelector, fieldValue, errorMessage = '') {\n let fieldRequired = isFieldRequired(fieldSelector);\n let data = {};\n data.error = '';\n data.status = true;\n if (fieldSelector.length > 1) {\n // Multiple Fields/Nodes\n return data;\n }\n if (fieldRequired) {\n let itemPlaceholder = fieldSelector.placeholder;\n itemPlaceholder = itemPlaceholder.replace(' *', '');\n let error = errorMessage ? errorMessage : `${itemPlaceholder} field is required!`;\n if (typeof fieldValue === 'undefined' || fieldValue === '') {\n data.error = error;\n data.status = false;\n }\n }\n return data;\n }\n function isFieldRequired(fieldSelector) {\n let fieldRequired = false;\n if (fieldSelector.length > 1) {\n //Multiple Fields/Nodes\n return true;\n }\n\n //if required attribute has value rather than null or ''\n fieldRequired = !(fieldSelector.getAttribute('required') === null || fieldSelector.getAttribute('required') === '');\n return fieldRequired;\n }\n function toasterOptions() {\n toastr.options = {\n \"timeOut\": \"2000\",\n toastClass: \"font-size-md\",\n maxOpened: 1\n };\n }\n ;\n toasterOptions();\n //Helper Functions Ends\n})(jQuery);\n\n//# sourceURL=webpack://better-payment/./src/js/better-payment.js?");
19
20 /***/ })
21
22 /******/ });
23 /************************************************************************/
24 /******/
25 /******/ // startup
26 /******/ // Load entry module and return exports
27 /******/ // This entry module can't be inlined because the eval devtool is used.
28 /******/ var __webpack_exports__ = {};
29 /******/ __webpack_modules__["./src/js/better-payment.js"]();
30 /******/
31 /******/ })()
32 ;