{"version":3,"sources":["frontend/sv-wc-payment-gateway-apple-pay.coffee"],"names":[],"mappings":"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","file":"sv-wc-payment-gateway-apple-pay.js","sourceRoot":"../js","sourcesContent":["###\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\njQuery ( $ ) ->\n\n\t\"use strict\"\n\n\t# The WooCommerce Apple Pay handler base class.\n\t#\n\t# @since 4.7.0\n\tclass window.SV_WC_Apple_Pay_Handler_v5_10_12\n\n\n\t\t# Constructs the handler.\n\t\t#\n\t\t# @since 4.7.0\n\t\tconstructor: (args) ->\n\n\t\t\t@gateway_id = args.gateway_id\n\t\t\t@gateway_slug = args.gateway_slug\n\t\t\t@merchant_id = args.merchant_id\n\t\t\t@ajax_url = args.ajax_url\n\t\t\t@validate_nonce = args.validate_nonce\n\t\t\t@recalculate_totals_nonce = args.recalculate_totals_nonce\n\t\t\t@process_nonce = args.process_nonce\n\t\t\t@payment_request = args.payment_request\n\t\t\t@generic_error = args.generic_error\n\n\t\t\t@wrapper = '.sv-wc-external-checkout'\n\t\t\t@container = '.buttons-container'\n\t\t\t@button = '.sv-wc-apple-pay-button'\n\n\n\t\t# Determines if Apple Pay is available.\n\t\t#\n\t\t# @since 4.7.0\n\t\t# @return bool\n\t\tis_available: ->\n\n\t\t\treturn false unless window.ApplePaySession\n\n\t\t\tApplePaySession.canMakePaymentsWithActiveCard( @merchant_id ).then ( canMakePayments ) =>\n\n\t\t\t\treturn canMakePayments\n\n\n\t\t# Initializes the handler.\n\t\t#\n\t\t# @since 4.7.0\n\t\tinit: ->\n\n\t\t\t# hide the wrapper if Apple Pay is the only button\n\t\t\tif $( @container ).children().length is 1\n\t\t\t\t$( @wrapper ).hide()\n\n\t\t\treturn unless this.is_available()\n\n\t\t\t# initialize for the various pages\n\t\t\tif $( 'form.cart' ).length\n\t\t\t\tthis.init_product_page()\n\t\t\telse if $( 'form.woocommerce-cart-form' ).length\n\t\t\t\tthis.init_cart_page()\n\t\t\telse if $( 'form.woocommerce-checkout' ).length\n\t\t\t\tthis.init_checkout_page()\n\n\t\t\t# bail if no UI was initialized\n\t\t\treturn unless @ui_element\n\n\t\t\tif @payment_request\n\t\t\t\t$( @button ).show()\n\t\t\t\t$( @wrapper ).show()\n\n\t\t\t$( document.body ).on 'click', '.sv-wc-apple-pay-button', ( e ) =>\n\n\t\t\t\te.preventDefault()\n\n\t\t\t\tthis.block_ui()\n\n\t\t\t\ttry\n\n\t\t\t\t\t@session = this.get_new_session( @payment_request )\n\n\t\t\t\t\t# set the payment card events\n\t\t\t\t\t@session.onvalidatemerchant = ( event ) => this.on_validate_merchant( event )\n\t\t\t\t\t@session.onpaymentmethodselected = ( event ) => this.on_payment_method_selected( event )\n\t\t\t\t\t@session.onshippingcontactselected = ( event ) => this.on_shipping_contact_selected( event )\n\t\t\t\t\t@session.onshippingmethodselected = ( event ) => this.on_shipping_method_selected( event )\n\t\t\t\t\t@session.onpaymentauthorized = ( event ) => this.on_payment_authorized( event )\n\t\t\t\t\t@session.oncancel = ( event ) => this.on_cancel_payment( event )\n\n\t\t\t\t\t@session.begin()\n\n\t\t\t\tcatch error\n\n\t\t\t\t\tthis.fail_payment( error )\n\n\n\t\t# Initializes the product page.\n\t\t#\n\t\t# @since 5.6.0\n\t\tinit_product_page: =>\n\n\t\t\t@ui_element = $( 'form.cart' )\n\n\n\t\t# Initializes the cart page.\n\t\t#\n\t\t# @since 5.6.0\n\t\tinit_cart_page: =>\n\n\t\t\t@ui_element = $( 'form.woocommerce-cart-form' ).parents( 'div.woocommerce' )\n\n\t\t\t# re-init if the cart totals are updated\n\t\t\t$( document.body ).on 'updated_cart_totals', =>\n\n\t\t\t\tthis.reset_payment_request()\n\n\n\t\t# Initializes the checkout page.\n\t\t#\n\t\t# @since 5.6.0\n\t\tinit_checkout_page: =>\n\n\t\t\t@ui_element = $( 'form.woocommerce-checkout' )\n\n\t\t\t$( document.body ).on 'updated_checkout', =>\n\n\t\t\t\t# re-init if the checkout is updated\n\t\t\t\tthis.reset_payment_request()\n\n\n\t\t# Gets a new Apple Pay session.\n\t\t#\n\t\t# @since 5.6.0\n\t\t#\n\t\t# @param [Object] payment_request payment request object\n\t\t# @return ApplePaySession\n\t\tget_new_session: ( payment_request ) ->\n\n\t\t\treturn new ApplePaySession( this.get_sdk_version(), payment_request )\n\n\n\t\t# Gets the Apple SDK version to use.\n\t\t#\n\t\t# @since 5.6.0\n\t\t# @return int\n\t\tget_sdk_version: ->\n\n\t\t\treturn 2\n\n\n\t\t# The callback for after the merchant data is validated.\n\t\t#\n\t\t# @since 4.7.0\n\t\ton_validate_merchant: ( event ) =>\n\n\t\t\tthis.validate_merchant( event.validationURL ).then ( merchant_session ) =>\n\n\t\t\t\tmerchant_session = JSON.parse( merchant_session )\n\n\t\t\t\t@session.completeMerchantValidation( merchant_session )\n\n\t\t\t, ( response ) =>\n\n\t\t\t\t@session.abort()\n\n\t\t\t\tthis.fail_payment 'Merchant could no be validated. ' + response.message\n\n\n\t\t# Validates the merchant data.\n\t\t#\n\t\t# @since 4.7.0\n\t\t# @return object\n\t\tvalidate_merchant: ( url ) => new Promise ( resolve, reject ) =>\n\n\t\t\tdata = {\n\t\t\t\t'action': \"wc_#{ @gateway_id }_apple_pay_validate_merchant\",\n\t\t\t\t'nonce': @validate_nonce,\n\t\t\t\t'merchant_id': @merchant_id,\n\t\t\t\t'url': url\n\t\t\t}\n\n\t\t\t# retrieve a payment request object\n\t\t\t$.post @ajax_url, data, ( response ) =>\n\n\t\t\t\tif response.success\n\t\t\t\t\tresolve response.data\n\t\t\t\telse\n\t\t\t\t\treject response.data\n\n\n\t\t# Fires after a payment method has been selected.\n\t\t#\n\t\t# @since 4.7.0\n\t\ton_payment_method_selected: ( event ) =>\n\n\t\t\tnew Promise ( resolve, reject ) =>\n\n\t\t\t\tdata = {\n\t\t\t\t\t'action': \"wc_#{ @gateway_id }_apple_pay_recalculate_totals\",\n\t\t\t\t\t'nonce': @recalculate_totals_nonce,\n\t\t\t\t}\n\n\t\t\t\t# retrieve a payment request object\n\t\t\t\t$.post @ajax_url, data, ( response ) =>\n\n\t\t\t\t\tif response.success\n\n\t\t\t\t\t\tdata = response.data\n\n\t\t\t\t\t\tresolve @session.completePaymentMethodSelection( data.total, data.line_items )\n\n\t\t\t\t\telse\n\n\t\t\t\t\t\tconsole.error '[Apple Pay] Error selecting a shipping contact. ' + response.data.message\n\n\t\t\t\t\t\treject @session.completePaymentMethodSelection( @payment_request.total, @payment_request.lineItems )\n\n\n\t\t# Fires after a shipping contact has been selected.\n\t\t#\n\t\t# @since 4.7.0\n\t\ton_shipping_contact_selected: ( event ) =>\n\n\t\t\tnew Promise ( resolve, reject ) =>\n\n\t\t\t\tdata = {\n\t\t\t\t\t'action': \"wc_#{ @gateway_id }_apple_pay_recalculate_totals\",\n\t\t\t\t\t'nonce': @recalculate_totals_nonce,\n\t\t\t\t\t'contact': event.shippingContact\n\t\t\t\t}\n\n\t\t\t\t# retrieve a payment request object\n\t\t\t\t$.post @ajax_url, data, ( response ) =>\n\n\t\t\t\t\tif response.success\n\n\t\t\t\t\t\tdata = response.data\n\n\t\t\t\t\t\tresolve @session.completeShippingContactSelection( ApplePaySession.STATUS_SUCCESS, data.shipping_methods, data.total, data.line_items )\n\n\t\t\t\t\telse\n\n\t\t\t\t\t\tconsole.error '[Apple Pay] Error selecting a shipping contact. ' + response.data.message\n\n\t\t\t\t\t\treject @session.completeShippingContactSelection( ApplePaySession.STATUS_FAILURE, [], @payment_request.total, @payment_request.lineItems )\n\n\n\t\t# Fires after a shipping method has been selected.\n\t\t#\n\t\t# @since 4.7.0\n\t\ton_shipping_method_selected: ( event ) =>\n\n\t\t\tnew Promise ( resolve, reject ) =>\n\n\t\t\t\tdata = {\n\t\t\t\t\t'action': \"wc_#{ @gateway_id }_apple_pay_recalculate_totals\",\n\t\t\t\t\t'nonce': @recalculate_totals_nonce,\n\t\t\t\t\t'method': event.shippingMethod.identifier\n\t\t\t\t}\n\n\t\t\t\t# retrieve a payment request object\n\t\t\t\t$.post @ajax_url, data, ( response ) =>\n\n\t\t\t\t\tif response.success\n\n\t\t\t\t\t\tdata = response.data\n\n\t\t\t\t\t\tresolve @session.completeShippingMethodSelection( ApplePaySession.STATUS_SUCCESS, data.total, data.line_items )\n\n\t\t\t\t\telse\n\n\t\t\t\t\t\tconsole.error '[Apple Pay] Error selecting a shipping method. ' + response.data.message\n\n\t\t\t\t\t\treject @session.completeShippingMethodSelection( ApplePaySession.STATUS_FAILURE, @payment_request.total, @payment_request.lineItems )\n\n\n\t\t# The callback for after the payment data is authorized.\n\t\t#\n\t\t# @since 4.7.0\n\t\ton_payment_authorized: ( event ) =>\n\n\t\t\tthis.process_authorization( event.payment ).then ( response ) =>\n\n\t\t\t\tthis.set_payment_status( true )\n\n\t\t\t\tthis.complete_purchase( response )\n\n\t\t\t, ( response ) =>\n\n\t\t\t\tthis.set_payment_status( false )\n\n\t\t\t\tthis.fail_payment 'Payment could no be processed. ' + response.message\n\n\n\t\t# Processes the transaction data.\n\t\t#\n\t\t# @since 4.7.0\n\t\tprocess_authorization: ( payment ) => new Promise ( resolve, reject ) =>\n\n\t\t\tdata = {\n\t\t\t\taction: \"wc_#{ @gateway_id }_apple_pay_process_payment\",\n\t\t\t\tnonce: @process_nonce,\n\t\t\t\tpayment: JSON.stringify( payment )\n\t\t\t}\n\n\t\t\t$.post @ajax_url, data, ( response ) =>\n\n\t\t\t\tif response.success\n\t\t\t\t\tresolve response.data\n\t\t\t\telse\n\t\t\t\t\treject response.data\n\n\n\t\t# The callback for when the payment card is cancelled/dismissed.\n\t\t#\n\t\t# @since 4.7.0\n\t\ton_cancel_payment: ( event ) =>\n\n\t\t\tthis.unblock_ui()\n\n\n\t\t# Completes the purchase based on the gateway result.\n\t\t#\n\t\t# @since 4.7.0\n\t\tcomplete_purchase: ( response ) ->\n\n\t\t\twindow.location = response.redirect\n\n\n\t\t# Fails the purchase based on the gateway result.\n\t\t#\n\t\t# @since 4.7.0\n\t\tfail_payment: ( error ) ->\n\n\t\t\tconsole.error '[Apple Pay] ' + error\n\n\t\t\tthis.unblock_ui()\n\n\t\t\tthis.render_errors( [ @generic_error ] )\n\n\n\t\t# Sets the Apple Pay payment status depending on the gateway result.\n\t\t#\n\t\t# @since 4.7.0\n\t\tset_payment_status: ( success ) ->\n\n\t\t\tif success\n\t\t\t\tstatus = ApplePaySession.STATUS_SUCCESS\n\t\t\telse\n\t\t\t\tstatus = ApplePaySession.STATUS_FAILURE\n\n\t\t\t@session.completePayment( status )\n\n\n\t\t# Resets the payment request via AJAX.\n\t\t#\n\t\t# Extending handlers can call this on change events to refresh the data.\n\t\t#\n\t\t# @since 4.7.0\n\t\treset_payment_request: ( data = {} ) =>\n\n\t\t\tthis.block_ui()\n\n\t\t\tthis.get_payment_request( data ).then ( response ) =>\n\n\t\t\t\t$( @button ).show()\n\t\t\t\t$( @wrapper ).show()\n\n\t\t\t\t@payment_request = JSON.parse( response )\n\n\t\t\t\tthis.unblock_ui()\n\n\t\t\t, ( response ) =>\n\n\t\t\t\tconsole.error '[Apple Pay] Could not build payment request. ' + response.message\n\n\t\t\t\t$( @button ).hide()\n\t\t\t\t# hide the wrapper if Apple Pay is the only button\n\t\t\t\tif $( @container ).children().length is 1\n\t\t\t\t\t$( @wrapper ).hide()\n\n\t\t\t\tthis.unblock_ui()\n\n\n\t\t# Gets the payment request via AJAX.\n\t\t#\n\t\t# @since 4.7.0\n\t\tget_payment_request: ( data ) => new Promise ( resolve, reject ) =>\n\n\t\t\tbase_data = {\n\t\t\t\t'action': \"wc_#{ @gateway_id }_apple_pay_get_payment_request\"\n\t\t\t}\n\n\t\t\t$.extend data, base_data\n\n\t\t\t# retrieve a payment request object\n\t\t\t$.post @ajax_url, data, ( response ) =>\n\n\t\t\t\tif response.success\n\t\t\t\t\tresolve response.data\n\t\t\t\telse\n\t\t\t\t\treject response.data\n\n\n\t\t# Renders any new errors and bring them into the viewport.\n\t\t#\n\t\t# @since 4.7.0\n\t\trender_errors: ( errors ) ->\n\n\t\t\t# hide and remove any previous errors\n\t\t\t$( '.woocommerce-error, .woocommerce-message' ).remove()\n\n\t\t\t# add errors\n\t\t\t@ui_element.prepend ''\n\n\t\t\t# unblock UI\n\t\t\t@ui_element.removeClass( 'processing' ).unblock()\n\n\t\t\t# scroll to top\n\t\t\t$( 'html, body' ).animate( { scrollTop: @ui_element.offset().top - 100 }, 1000 )\n\n\n\t\t# Blocks the payment form UI.\n\t\t#\n\t\t# @since 4.7.0\n\t\tblock_ui: -> @ui_element.block( message: null, overlayCSS: background: '#fff', opacity: 0.6 )\n\n\n\t\t# Unblocks the payment form UI.\n\t\t#\n\t\t# @since 4.7.0\n\t\tunblock_ui: -> @ui_element.unblock()\n\n\n\t# dispatch loaded event\n\t$( document.body ).trigger( 'sv_wc_apple_pay_handler_v5_10_12_loaded' )\n"]}