| 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\"> <i class=\"eicon-spinner eicon-animation-spin\"></i> </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\"> <i class=\"eicon-spinner eicon-animation-spin\"></i> </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\"> <i class=\"eicon-spinner eicon-animation-spin\"></i> </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?"); |