HEX
Server: LiteSpeed
System: Linux node612.namehero.net 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: dfwparty (1186)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/dfwparty/dfwmagic.com/wp-content/plugins/ws-form-paypal-checkout/js/paypal-checkout.js
(function($) {

	'use strict';

	var paypal_loaded_#form_instance_id = false;

	if(
		(typeof(paypal) === 'undefined') &&
		(paypal_loaded_#form_instance_id === false)
	) {

		// Request checkout.js
		$.ajaxSetup({ cache: true });

		// Build script URL
		var paypal_script = 'https://www.paypal.com/sdk/js?client-id=#action_paypalcheckout_client_id&currency=' + paypal_get_currency_#form_instance_id() + '&locale=' + paypal_get_locale_#form_instance_id();

		// Disabled funding
		var disable_funding_array = [];
		if('#action_paypalcheckout_disable_funding_card' === 'on') { disable_funding_array.push('card'); }
		if('#action_paypalcheckout_disable_funding_credit' === 'on') { disable_funding_array.push('credit'); }
		if(disable_funding_array.length) { paypal_script += '&disable-funding=' + disable_funding_array.join(','); }

		// Get script
		$.getScript(paypal_script, function() {

			// Initialize script
			paypal_init_#form_instance_id();

		});

		paypal_loaded_#form_instance_id = true;

	} else {

		// Do not load checkout.js twice
		paypal_init_#form_instance_id();
	}

	function paypal_validate_#form_instance_id(actions) {

		// Register form validation real time hook
		window.wsf_form_instances[#form_instance_id].form_validate_real_time_register_hook(function(form_valid) {

			paypal_button_enabled_#form_instance_id() ? actions.enable() : actions.disable();
		});

		// Initial call
		return paypal_button_enabled_#form_instance_id() ? actions.enable() : actions.disable();
	}

	function paypal_message_#form_instance_id(message) {

		var method = '#action_paypalcheckout_message_method';
		var form_hide = '#action_paypalcheckout_message_form_hide';
		var duration = '#action_paypalcheckout_message_duration';
		var clear = '#action_paypalcheckout_message_clear';
		var scroll_top = '#action_paypalcheckout_message_scroll_top';

		window.wsf_form_instances[#form_instance_id].action_message(message, 'danger', method, duration, form_hide, clear, scroll_top, true, true);
	}

	function paypal_on_click_#form_instance_id(actions) {

		var ws_form = window.wsf_form_instances[#form_instance_id];

		// PayPal button not opened, so do something else
		if(!paypal_button_enabled_#form_instance_id()) {

			var paypal_total = paypal_get_amount_total_#form_instance_id();

			if(paypal_total == 0) {

				// Process as zero amount
				switch('#action_paypalcheckout_transaction_zero') {

					// Submit form
					case 'submit' : ws_form.form_obj.submit(); break;

					// Show message
					case 'message' :

						var message = '#action_paypalcheckout_transaction_zero_message';
						paypal_message_#form_instance_id(message);

						break;
				}

			} else {

				// Form is not valid, so submit it to simulate validation
				ws_form.form_obj.submit();
			}
		}
	}

	function paypal_button_enabled_#form_instance_id() {

		var paypal_total = paypal_get_amount_total_#form_instance_id();
		var form_valid = window.wsf_form_instances[#form_instance_id].form_valid;

		return (paypal_total > 0) && form_valid;
	}

	function paypal_get_amount_total_#form_instance_id() {

		var ws_form = window.wsf_form_instances[#form_instance_id];

		var transaction_total = '#action_paypalcheckout_transaction_total';
		if(transaction_total == '') { transaction_total = '#ecommerce_cart_total'; }

		// Get PayPal total
		var paypal_total = ws_form.parse_variables_process(transaction_total).output;

		// Convert to a number
		paypal_total = ws_form.get_number(paypal_total);

		return paypal_total;
	}

	function paypal_get_payer_#form_instance_id() {

		var ws_form = window.wsf_form_instances[#form_instance_id];

		var payer = {};

		// Build payer address
		var payer_address = {};

		// Address, phone
		var payer_address_mapping = #action_paypalcheckout_payer_address_mapping;

		for(var payer_address_mapping_index in payer_address_mapping) {

			var payer_address_map = payer_address_mapping[payer_address_mapping_index];
			if(typeof(payer_address_map.action_paypalcheckout_payer_address_field) === 'undefined') { continue; }
			var payer_address_field = payer_address_map.action_paypalcheckout_payer_address_field;
			if(payer_address_field == '') { continue; }
			if(typeof(payer_address_map.ws_form_field) === 'undefined') { continue; }
			if(payer_address_map.ws_form_field == '') { continue; }

			var value = ws_form.parse_variables_process('#field(' + payer_address_map.ws_form_field + ')').output;

			// Check country code
			if(payer_address_field == 'country_code') {

				value = paypal_check_country_code_#form_instance_id(value);
			}

			if(value != '') { payer_address[payer_address_field] = value; }
		}

		// Check minimum requirements for payer address
		var payer_address_valid = (

			((typeof(payer_address.address_line_1) !== 'undefined') && (payer_address.address_line_1 != '')) &&
			((typeof(payer_address.admin_area_2) !== 'undefined') && (payer_address.admin_area_2 != '')) &&
			((typeof(payer_address.admin_area_1) !== 'undefined') && (payer_address.admin_area_1 != '')) &&
			((typeof(payer_address.postal_code) !== 'undefined') && (payer_address.postal_code != '')) &&
			((typeof(payer_address.country_code) !== 'undefined') && (payer_address.country_code != ''))
		);

		if(payer_address_valid) {

			payer.address = payer_address;
		}

		// Recipient name
		var payer_name = {};
		var payer_name_set = false;
		if('#action_paypalcheckout_payer_given_name' != '') { payer_name.given_name = ws_form.parse_variables_process('#action_paypalcheckout_payer_given_name').output; payer_name_set = true; }
		if('#action_paypalcheckout_payer_surname' != '') { payer_name.surname = ws_form.parse_variables_process('#action_paypalcheckout_payer_surname').output; payer_name_set = true; }
		if(payer_name_set) { payer.name = payer_name; }

		// Email address
		if('#action_paypalcheckout_payer_email_address' != '') { payer.email_address = ws_form.parse_variables_process('#action_paypalcheckout_payer_email_address').output; payer_name_set = true; }

		// Phone
		if(
			('#action_paypalcheckout_payer_phone_type' != '') &&
			('#action_paypalcheckout_payer_phone' != '')
		) {

			// Get national number
			var national_number = ws_form.parse_variables_process('#action_paypalcheckout_payer_phone').output;
			national_number = national_number.replace(/\D/g, '');

			payer.phone = {

				phone_type: '#action_paypalcheckout_payer_phone_type',
				phone_number: {

					national_number: national_number
				}
			};
		}

		return payer;
	}

	function paypal_get_shipping_#form_instance_id() {

		var ws_form = window.wsf_form_instances[#form_instance_id];

		var shipping = {};

		// Build shipping address
		var shipping_address = {};

		// Address, phone
		var shipping_address_mapping = #action_paypalcheckout_shipping_address_mapping;

		for(var shipping_address_mapping_index in shipping_address_mapping) {

			var shipping_address_map = shipping_address_mapping[shipping_address_mapping_index];
			if(typeof(shipping_address_map.action_paypalcheckout_shipping_address_field) === 'undefined') { continue; }
			var shipping_address_field = shipping_address_map.action_paypalcheckout_shipping_address_field;
			if(shipping_address_field == '') { continue; }
			if(typeof(shipping_address_map.ws_form_field) === 'undefined') { continue; }
			if(shipping_address_map.ws_form_field == '') { continue; }

			var value = ws_form.parse_variables_process('#field(' + shipping_address_map.ws_form_field + ')').output;

			// Check country code
			if(shipping_address_field == 'country_code') {

				value = paypal_check_country_code_#form_instance_id(value);
			}

			if(value != '') { shipping_address[shipping_address_field] = value; }
		}

		// Check minimum requirements for shipping address
		var shipping_address_valid = (

			((typeof(shipping_address.address_line_1) !== 'undefined') && (shipping_address.address_line_1 != '')) &&
			((typeof(shipping_address.admin_area_2) !== 'undefined') && (shipping_address.admin_area_2 != '')) &&
			((typeof(shipping_address.admin_area_1) !== 'undefined') && (shipping_address.admin_area_1 != '')) &&
			((typeof(shipping_address.postal_code) !== 'undefined') && (shipping_address.postal_code != '')) &&
			((typeof(shipping_address.country_code) !== 'undefined') && (shipping_address.country_code != ''))
		);

		if(shipping_address_valid) {

			shipping.address = shipping_address;
		}

		// Recipient name
		if('#action_paypalcheckout_shipping_recipient_name' != '') {

			shipping.name = {

				fullname: ws_form.parse_variables_process('#action_paypalcheckout_shipping_recipient_name').output
			}
		}

		return shipping;
	}

	function paypal_check_country_code_#form_instance_id(country_code) {

		if(country_code.length != 2) { return ''; }

		var country_codes = ['AD','AE','AG','AI','AL','AM','AO','AR','AT','AU','AW','AZ','BA','BB','BE','BF','BG','BH','BI','BJ','BM','BN','BO','BR','BS','BT','BW','BY','BZ','C2','CA','CD','CG','CH','CI','CK','CL','CM','CO','CR','CV','CY','CZ','DE','DJ','DK','DM','DO','DZ','EC','EE','EG','ER','ES','ET','FI','FJ','FK','FM','FO','FR','GA','GB','GD','GE','GF','GI','GL','GM','GN','GP','GR','GT','GW','GY','HK','HN','HR','HU','ID','IE','IL','IN','IS','IT','JM','JO','JP','KE','KG','KH','KI','KM','KN','KR','KW','KY','KZ','LA','LC','LI','LK','LS','LT','LU','LV','MA','MC','MD','ME','MG','MH','MK','ML','MN','MQ','MR','MS','MT','MU','MV','MW','MX','MY','MZ','NA','NC','NE','NF','NG','NI','NL','NO','NP','NR','NU','NZ','OM','PA','PE','PF','PG','PH','PL','PM','PN','PT','PW','PY','QA','RE','RO','RS','RU','RW','SA','SB','SC','SE','SG','SH','SI','SJ','SK','SL','SM','SN','SO','SR','ST','SV','SZ','TC','TD','TG','TH','TJ','TM','TN','TO','TT','TV','TW','TZ','UA','UG','US','UY','VA','VC','VE','VG','VN','VU','WF','WS','YE','YT','ZA','ZM','ZW'];

		country_code = country_code.toUpperCase();

		if(!country_codes.includes(country_code)) { return ''; }

		return country_code;
	}

	function paypal_get_amount_breakdown_#form_instance_id() {

		var ws_form = window.wsf_form_instances[#form_instance_id];

		var amount_breakdown = {};

		var detail_mapping = #action_paypalcheckout_transaction_detail_mapping;

		for(var detail_mapping_index in detail_mapping) {

			var detail_map = detail_mapping[detail_mapping_index];
			if(typeof(detail_map.action_paypalcheckout_price_type) === 'undefined') { continue; }
			if(detail_map.action_paypalcheckout_price_type == '') { continue; }
			if(typeof(detail_map.ws_form_field_ecommerce_price_cart) === 'undefined') { continue; }
			if(detail_map.ws_form_field_ecommerce_price_cart == '') { continue; }

			amount_breakdown[detail_map.action_paypalcheckout_price_type] = {

				value: ws_form.get_number(ws_form.parse_variables_process('#field_float(' + detail_map.ws_form_field_ecommerce_price_cart + ')').output),
				currency_code: paypal_get_currency_#form_instance_id()
			};
		}

		return amount_breakdown;
	}

	function paypal_get_transaction_#form_instance_id() {

		var ws_form = window.wsf_form_instances[#form_instance_id];

		var shipping_enabled = ('#action_paypalcheckout_shipping' == 'on');

		var transaction = {

			intent: 'CAPTURE',

			purchase_units: [{

				amount: {

					value: paypal_get_amount_total_#form_instance_id(),
					currency_code: paypal_get_currency_#form_instance_id(),
					breakdown: paypal_get_amount_breakdown_#form_instance_id()
				},

				description: ws_form.parse_variables_process('#action_paypalcheckout_transaction_description').output,
			}],

			payer: paypal_get_payer_#form_instance_id(),
		}

		// Shipping
		if(shipping_enabled) {

			var shipping = paypal_get_shipping_#form_instance_id();

			if(Object.keys(shipping).length !== 0) {

				transaction.purchase_units[0].shipping = shipping;
				transaction.application_context = {

					shipping_preference: 'SET_PROVIDED_ADDRESS'
				};
			}

		} else {

			transaction.application_context = {

				shipping_preference: 'NO_SHIPPING'
			};
		}

		// Store transaction packet
		ws_form.form_ecommerce_set_transaction(JSON.stringify(transaction));

		// Set status
		ws_form.form_ecommerce_set_status('pending_payment');

		return transaction;
	}

	function paypal_get_currency_#form_instance_id() {

		return '#action_paypalcheckout_transaction_currency' ? '#action_paypalcheckout_transaction_currency' : '#currency';
	}

	function paypal_get_locale_#form_instance_id() {

		return '#action_paypalcheckout_transaction_locale' ? '#action_paypalcheckout_transaction_locale' : '#locale';
	}

	function paypal_init_#form_instance_id() {

		var ws_form = window.wsf_form_instances[#form_instance_id];

		// Style
		var paypal_checkout_style_#form_instance_id = {

			layout: '#action_paypalcheckout_button_layout',
			color: '#action_paypalcheckout_button_color',
			shape: '#action_paypalcheckout_button_shape',
			label: '#action_paypalcheckout_button_label',
			tagline: ('#action_paypalcheckout_button_layout' == 'horizontal') && ('#action_paypalcheckout_button_tagline' == 'on')
		};

		// Height
		var paypal_checkout_height_#form_instance_id = parseInt('#action_paypalcheckout_button_height');
		if(paypal_checkout_height_#form_instance_id > 0) { paypal_checkout_style_#form_instance_id.height = paypal_checkout_height_#form_instance_id; }

		paypal.Buttons({

			style: paypal_checkout_style_#form_instance_id,

			commit: true,

			createOrder: function(data, actions) {

				ws_form.log('log_payment', 'PayPal Checkout - Payment Initiated', 'payment');

				return actions.order.create(paypal_get_transaction_#form_instance_id());
			},

			onInit: function(data, actions) {

				ws_form.log('log_payment', 'PayPal Checkout - Validated', 'payment');

				paypal_validate_#form_instance_id(actions);
			},

			onClick: function() {

				ws_form.log('log_payment', 'PayPal Checkout - Clicked', 'payment');

				paypal_on_click_#form_instance_id();
			},

			onApprove: function(data, actions) {

				return actions.order.capture().then(function(data) {

					var transaction_id = data.purchase_units[0].payments.captures[0].id;
					var amount = data.purchase_units[0].payments.captures[0].amount.value;

					ws_form.log('log_payment', 'PayPal Checkout - Authorized', 'payment');
					ws_form.form_ecommerce_payment_process(transaction_id, amount, 'PayPal Checkout');
				});
			},

			onRender: function() {

				ws_form.log('log_payment', 'PayPal Checkout - Rendered', 'payment');
			},

			onDisplay: function() {

				ws_form.log('log_payment', 'PayPal Checkout - Displayed', 'payment');
			},

			onError: function(err) {

				ws_form.form_ecommerce_payment_error('PayPal Checkout<pre>\n\n' + err + '</pre>');
				ws_form.form_ecommerce_set_status('failed');

				paypal_message_#form_instance_id('A PayPal error occurred. Please check your form and try again.');

	//			actions.restart();
			},

			onCancel: function(data, actions) {

				ws_form.log('log_payment', 'PayPal Checkout - Cancelled', 'payment');
				ws_form.form_ecommerce_set_status('cancelled');
			}

		}).render('##id');
	}
})(jQuery);