File: public/js/checkout.js

Recommend this page to a friend!
  Classes of mbjwebdevelopment  >  All in One PayPal WooCommerce Plugin  >  public/js/checkout.js  >  Download  
File: public/js/checkout.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: All in One PayPal WooCommerce Plugin
Paypal payment plugin for Woocommerce
Author: By
Last change:
Date: 5 years ago
Size: 5,163 bytes
 

Contents

Class file image Download
jQuery(function($) {

	// wc_checkout_params is required to continue, ensure the object exists
	if (typeof wc_checkout_params === "undefined")
		return false;

	var updateTimer;
	var dirtyInput = false;
	var xhr;

	function update_checkout() {

		if (xhr) xhr.abort();

		var shipping_methods = [];

		$('select.shipping_method, input[name^=shipping_method][type=radio]:checked, input[name^=shipping_method][type=hidden]').each( function( index, input ) {
			shipping_methods[ $(this).data( 'index' ) ] = $(this).val();
		} );

		var payment_method 	= $('#order_review input[name=payment_method]:checked').val();
		var country 		= $('#billing_country').val();
		var state 			= $('#billing_state').val();
		var postcode 		= $('input#billing_postcode').val();
		var city	 		= $('input#billing_city').val();
		var address	 		= $('input#billing_address_1').val();
		var address_2	 	= $('input#billing_address_2').val();

		if ( $('#ship-to-different-address input').is(':checked') || $('#ship-to-different-address input').size() == 0 ) {
			var s_country 	= $('#shipping_country').val();
			var s_state 	= $('#shipping_state').val();
			var s_postcode 	= $('input#shipping_postcode').val();
			var s_city 		= $('input#shipping_city').val();
			var s_address 	= $('input#shipping_address_1').val();
			var s_address_2	= $('input#shipping_address_2').val();
		} else {
			var s_country 	= country;
			var s_state 	= state;
			var s_postcode 	= postcode;
			var s_city 		= city;
			var s_address 	= address;
			var s_address_2	= address_2;
		}

		$('#order_methods, #order_review').block({message: null, overlayCSS: {background: '#fff url(' + wc_checkout_params.ajax_loader_url + ') no-repeat center', backgroundSize: '16px 16px', opacity: 0.6}});

		var data = {
			action: 			'woocommerce_update_order_review',
			security: 			wc_checkout_params.update_order_review_nonce,
			shipping_method: 	shipping_methods,
			payment_method:		payment_method,
			country: 			country,
			state: 				state,
			postcode: 			postcode,
			city:				city,
			address:			address,
			address_2:			address_2,
			s_country: 			s_country,
			s_state: 			s_state,
			s_postcode: 		s_postcode,
			s_city:				s_city,
			s_address:			s_address,
			s_address_2:		s_address_2,
            pp_action:          'revieworder',
			post_data:			$('form.paypal_express_checkout').serialize()
		};

		xhr = $.ajax({
			type: 		'POST',
			url: 		wc_checkout_params.ajax_url,
			data: 		data,
			success: 	function( data ) {

                // Always update the fragments
                if ( data && data.fragments ) {
                    $.each( data.fragments, function ( key, value ) {
                        $( key ).replaceWith( value );
                        $( key ).unblock();
                    } );
                }

                // Check for error
                if ( 'failure' == data.result ) {

                    if ( 'true' === data.reload ) {
                        window.location.reload();
                        return;
                    }

                    $( '.woocommerce-error, .woocommerce-message' ).remove();

                    // Form object
                    var $form = $( 'form.paypal_express_checkout' );

                    // Add new errors
                    if ( data.messages ) {
                        $form.prepend( data.messages );
                    } else {
                        $form.prepend( data );
                    }

                    // Lose focus for all fields
                    $form.find( '.input-text, select' ).blur();

                    // Scroll to top
                    $( 'html, body' ).animate( {
                        scrollTop: ( $( 'form.paypal_express_checkout' ).offset().top - 100 )
                    }, 1000 );

                }

                //$( '#order_review' ).html( $.trim( response.html ) );
                $( '#order_review' ).find( 'input[name=payment_method]:checked' ).trigger( 'click' );
                $( 'body' ).trigger( 'updated_checkout' );
            }

		});

	}

	// Event for updating the checkout
	$('body').bind('update_checkout', function() {
		clearTimeout(updateTimer);
		update_checkout();
	});



	// Used for input change events below
	function input_changed() {
		var update_totals = true;

		if ( $(dirtyInput).size() ) {

			$required_siblings = $(dirtyInput).closest('.form-row').siblings('.address-field.validate-required');

			if ( $required_siblings.size() ) {
				 $required_siblings.each(function(){
					if ( $(this).find('input.input-text').val() == '' || $(this).find('input.input-text').val() == 'undefined' ) {
						update_totals = false;
					}
				 });
			}

		}

		if ( update_totals ) {
			dirtyInput = false;
			$('body').trigger('update_checkout');
		}
	}

	$('form.paypal_express_checkout')

	/* Update totals/taxes/shipping */

	// Inputs/selects which update totals instantly
	.on( 'input change', 'select.shipping_method, input[name^=shipping_method], #ship-to-different-address input, .update_totals_on_change select', function(){
		clearTimeout( updateTimer );
		dirtyInput = false;
		$('body').trigger('update_checkout');
	})

});

For more information send a message to info at phpclasses dot org.