{"version":3,"sources":["frontend/sv-wc-payment-gateway-apple-pay.coffee"],"names":["jQuery","$","window","SV_WC_Apple_Pay_Handler_v5_12_7","args","init_product_page","bind","init_cart_page","init_checkout_page","on_validate_merchant","validate_merchant","on_payment_method_selected","on_shipping_contact_selected","on_shipping_method_selected","on_payment_authorized","process_authorization","on_cancel_payment","reset_payment_request","get_payment_request","gateway_id","gateway_slug","merchant_id","ajax_url","validate_nonce","recalculate_totals_nonce","process_nonce","payment_request","generic_error","wrapper","container","button","ApplePaySession","canMakePaymentsWithActiveCard","then","canMakePayments","children","length","hide","is_available","ui_element","show","document","body","on","e","error","preventDefault","block_ui","session","get_new_session","onvalidatemerchant","event","onpaymentmethodselected","onshippingcontactselected","onshippingmethodselected","onpaymentauthorized","oncancel","begin","error1","fail_payment","parents","get_sdk_version","validationURL","merchant_session","JSON","parse","completeMerchantValidation","response","abort","message","url","Promise","resolve","reject","data","post","success","completePaymentMethodSelection","total","line_items","console","lineItems","shippingContact","completeShippingContactSelection","STATUS_SUCCESS","shipping_methods","STATUS_FAILURE","shippingMethod","identifier","completeShippingMethodSelection","payment","set_payment_status","complete_purchase","action","nonce","stringify","unblock_ui","location","redirect","render_errors","status","completePayment","base_data","extend","errors","remove","prepend","join","removeClass","unblock","animate","scrollTop","offset","top","block","overlayCSS","background","opacity","trigger","call"],"mappings":"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","file":"sv-wc-payment-gateway-apple-pay.js","sourceRoot":"../js","sourcesContent":["(function() {\n /*\n WooCommerce Apple Pay Handler\n Version 4.7.0\n\n Copyright (c) 2016, SkyVerge, Inc.\n Licensed under the GNU General Public License v3.0\n http://www.gnu.org/licenses/gpl-3.0.html\n */\n jQuery(function($) {\n \"use strict\";\n // The WooCommerce Apple Pay handler base class.\n\n // @since 4.7.0\n window.SV_WC_Apple_Pay_Handler_v5_12_7 = class SV_WC_Apple_Pay_Handler_v5_12_7 {\n // Constructs the handler.\n\n // @since 4.7.0\n constructor(args) {\n // Initializes the product page.\n\n // @since 5.6.0\n this.init_product_page = this.init_product_page.bind(this);\n // Initializes the cart page.\n\n // @since 5.6.0\n this.init_cart_page = this.init_cart_page.bind(this);\n // Initializes the checkout page.\n\n // @since 5.6.0\n this.init_checkout_page = this.init_checkout_page.bind(this);\n // The callback for after the merchant data is validated.\n\n // @since 4.7.0\n this.on_validate_merchant = this.on_validate_merchant.bind(this);\n // Validates the merchant data.\n\n // @since 4.7.0\n // @return object\n this.validate_merchant = this.validate_merchant.bind(this);\n // Fires after a payment method has been selected.\n\n // @since 4.7.0\n this.on_payment_method_selected = this.on_payment_method_selected.bind(this);\n // Fires after a shipping contact has been selected.\n\n // @since 4.7.0\n this.on_shipping_contact_selected = this.on_shipping_contact_selected.bind(this);\n // Fires after a shipping method has been selected.\n\n // @since 4.7.0\n this.on_shipping_method_selected = this.on_shipping_method_selected.bind(this);\n // The callback for after the payment data is authorized.\n\n // @since 4.7.0\n this.on_payment_authorized = this.on_payment_authorized.bind(this);\n // Processes the transaction data.\n\n // @since 4.7.0\n this.process_authorization = this.process_authorization.bind(this);\n // The callback for when the payment card is cancelled/dismissed.\n\n // @since 4.7.0\n this.on_cancel_payment = this.on_cancel_payment.bind(this);\n // Resets the payment request via AJAX.\n\n // Extending handlers can call this on change events to refresh the data.\n\n // @since 4.7.0\n this.reset_payment_request = this.reset_payment_request.bind(this);\n // Gets the payment request via AJAX.\n\n // @since 4.7.0\n this.get_payment_request = this.get_payment_request.bind(this);\n this.gateway_id = args.gateway_id;\n this.gateway_slug = args.gateway_slug;\n this.merchant_id = args.merchant_id;\n this.ajax_url = args.ajax_url;\n this.validate_nonce = args.validate_nonce;\n this.recalculate_totals_nonce = args.recalculate_totals_nonce;\n this.process_nonce = args.process_nonce;\n this.payment_request = args.payment_request;\n this.generic_error = args.generic_error;\n this.wrapper = '.sv-wc-external-checkout';\n this.container = '.buttons-container';\n this.button = '.sv-wc-apple-pay-button';\n }\n\n // Determines if Apple Pay is available.\n\n // @since 4.7.0\n // @return bool\n is_available() {\n if (!window.ApplePaySession) {\n return false;\n }\n return ApplePaySession.canMakePaymentsWithActiveCard(this.merchant_id).then((canMakePayments) => {\n return canMakePayments;\n });\n }\n\n // Initializes the handler.\n\n // @since 4.7.0\n init() {\n // hide the wrapper if Apple Pay is the only button\n if ($(this.container).children().length === 1) {\n $(this.wrapper).hide();\n }\n if (!this.is_available()) {\n return;\n }\n // initialize for the various pages\n if ($('form.cart').length) {\n this.init_product_page();\n } else if ($('form.woocommerce-cart-form').length) {\n this.init_cart_page();\n } else if ($('form.woocommerce-checkout').length) {\n this.init_checkout_page();\n }\n // bail if no UI was initialized\n if (!this.ui_element) {\n return;\n }\n if (this.payment_request) {\n $(this.button).show();\n $(this.wrapper).show();\n }\n return $(document.body).on('click', '.sv-wc-apple-pay-button', (e) => {\n var error;\n e.preventDefault();\n this.block_ui();\n try {\n this.session = this.get_new_session(this.payment_request);\n // set the payment card events\n this.session.onvalidatemerchant = (event) => {\n return this.on_validate_merchant(event);\n };\n this.session.onpaymentmethodselected = (event) => {\n return this.on_payment_method_selected(event);\n };\n this.session.onshippingcontactselected = (event) => {\n return this.on_shipping_contact_selected(event);\n };\n this.session.onshippingmethodselected = (event) => {\n return this.on_shipping_method_selected(event);\n };\n this.session.onpaymentauthorized = (event) => {\n return this.on_payment_authorized(event);\n };\n this.session.oncancel = (event) => {\n return this.on_cancel_payment(event);\n };\n return this.session.begin();\n } catch (error1) {\n error = error1;\n return this.fail_payment(error);\n }\n });\n }\n\n init_product_page() {\n return this.ui_element = $('form.cart');\n }\n\n init_cart_page() {\n this.ui_element = $('form.woocommerce-cart-form').parents('div.woocommerce');\n // re-init if the cart totals are updated\n return $(document.body).on('updated_cart_totals', () => {\n return this.reset_payment_request();\n });\n }\n\n init_checkout_page() {\n this.ui_element = $('form.woocommerce-checkout');\n return $(document.body).on('updated_checkout', () => {\n // re-init if the checkout is updated\n return this.reset_payment_request();\n });\n }\n\n // Gets a new Apple Pay session.\n\n // @since 5.6.0\n\n // @param [Object] payment_request payment request object\n // @return ApplePaySession\n get_new_session(payment_request) {\n return new ApplePaySession(this.get_sdk_version(), payment_request);\n }\n\n // Gets the Apple SDK version to use.\n\n // @since 5.6.0\n // @return int\n get_sdk_version() {\n return 2;\n }\n\n on_validate_merchant(event) {\n return this.validate_merchant(event.validationURL).then((merchant_session) => {\n merchant_session = JSON.parse(merchant_session);\n return this.session.completeMerchantValidation(merchant_session);\n }, (response) => {\n this.session.abort();\n return this.fail_payment('Merchant could no be validated. ' + response.message);\n });\n }\n\n validate_merchant(url) {\n return new Promise((resolve, reject) => {\n var data;\n data = {\n 'action': `wc_${this.gateway_id}_apple_pay_validate_merchant`,\n 'nonce': this.validate_nonce,\n 'merchant_id': this.merchant_id,\n 'url': url\n };\n // retrieve a payment request object\n return $.post(this.ajax_url, data, (response) => {\n if (response.success) {\n return resolve(response.data);\n } else {\n return reject(response.data);\n }\n });\n });\n }\n\n on_payment_method_selected(event) {\n return new Promise((resolve, reject) => {\n var data;\n data = {\n 'action': `wc_${this.gateway_id}_apple_pay_recalculate_totals`,\n 'nonce': this.recalculate_totals_nonce\n };\n // retrieve a payment request object\n return $.post(this.ajax_url, data, (response) => {\n if (response.success) {\n data = response.data;\n return resolve(this.session.completePaymentMethodSelection(data.total, data.line_items));\n } else {\n console.error('[Apple Pay] Error selecting a shipping contact. ' + response.data.message);\n return reject(this.session.completePaymentMethodSelection(this.payment_request.total, this.payment_request.lineItems));\n }\n });\n });\n }\n\n on_shipping_contact_selected(event) {\n return new Promise((resolve, reject) => {\n var data;\n data = {\n 'action': `wc_${this.gateway_id}_apple_pay_recalculate_totals`,\n 'nonce': this.recalculate_totals_nonce,\n 'contact': event.shippingContact\n };\n // retrieve a payment request object\n return $.post(this.ajax_url, data, (response) => {\n if (response.success) {\n data = response.data;\n return resolve(this.session.completeShippingContactSelection(ApplePaySession.STATUS_SUCCESS, data.shipping_methods, data.total, data.line_items));\n } else {\n console.error('[Apple Pay] Error selecting a shipping contact. ' + response.data.message);\n return reject(this.session.completeShippingContactSelection(ApplePaySession.STATUS_FAILURE, [], this.payment_request.total, this.payment_request.lineItems));\n }\n });\n });\n }\n\n on_shipping_method_selected(event) {\n return new Promise((resolve, reject) => {\n var data;\n data = {\n 'action': `wc_${this.gateway_id}_apple_pay_recalculate_totals`,\n 'nonce': this.recalculate_totals_nonce,\n 'method': event.shippingMethod.identifier\n };\n // retrieve a payment request object\n return $.post(this.ajax_url, data, (response) => {\n if (response.success) {\n data = response.data;\n return resolve(this.session.completeShippingMethodSelection(ApplePaySession.STATUS_SUCCESS, data.total, data.line_items));\n } else {\n console.error('[Apple Pay] Error selecting a shipping method. ' + response.data.message);\n return reject(this.session.completeShippingMethodSelection(ApplePaySession.STATUS_FAILURE, this.payment_request.total, this.payment_request.lineItems));\n }\n });\n });\n }\n\n on_payment_authorized(event) {\n return this.process_authorization(event.payment).then((response) => {\n this.set_payment_status(true);\n return this.complete_purchase(response);\n }, (response) => {\n this.set_payment_status(false);\n return this.fail_payment('Payment could no be processed. ' + response.message);\n });\n }\n\n process_authorization(payment) {\n return new Promise((resolve, reject) => {\n var data;\n data = {\n action: `wc_${this.gateway_id}_apple_pay_process_payment`,\n nonce: this.process_nonce,\n payment: JSON.stringify(payment)\n };\n return $.post(this.ajax_url, data, (response) => {\n if (response.success) {\n return resolve(response.data);\n } else {\n return reject(response.data);\n }\n });\n });\n }\n\n on_cancel_payment(event) {\n return this.unblock_ui();\n }\n\n // Completes the purchase based on the gateway result.\n\n // @since 4.7.0\n complete_purchase(response) {\n return window.location = response.redirect;\n }\n\n // Fails the purchase based on the gateway result.\n\n // @since 4.7.0\n fail_payment(error) {\n console.error('[Apple Pay] ' + error);\n this.unblock_ui();\n return this.render_errors([this.generic_error]);\n }\n\n // Sets the Apple Pay payment status depending on the gateway result.\n\n // @since 4.7.0\n set_payment_status(success) {\n var status;\n if (success) {\n status = ApplePaySession.STATUS_SUCCESS;\n } else {\n status = ApplePaySession.STATUS_FAILURE;\n }\n return this.session.completePayment(status);\n }\n\n reset_payment_request(data = {}) {\n this.block_ui();\n return this.get_payment_request(data).then((response) => {\n $(this.button).show();\n $(this.wrapper).show();\n this.payment_request = JSON.parse(response);\n return this.unblock_ui();\n }, (response) => {\n console.error('[Apple Pay] Could not build payment request. ' + response.message);\n $(this.button).hide();\n // hide the wrapper if Apple Pay is the only button\n if ($(this.container).children().length === 1) {\n $(this.wrapper).hide();\n }\n return this.unblock_ui();\n });\n }\n\n get_payment_request(data) {\n return new Promise((resolve, reject) => {\n var base_data;\n base_data = {\n 'action': `wc_${this.gateway_id}_apple_pay_get_payment_request`\n };\n $.extend(data, base_data);\n // retrieve a payment request object\n return $.post(this.ajax_url, data, (response) => {\n if (response.success) {\n return resolve(response.data);\n } else {\n return reject(response.data);\n }\n });\n });\n }\n\n // Renders any new errors and bring them into the viewport.\n\n // @since 4.7.0\n render_errors(errors) {\n // hide and remove any previous errors\n $('.woocommerce-error, .woocommerce-message').remove();\n // add errors\n this.ui_element.prepend('