Files

1 line
4.0 KiB
JavaScript

"use strict";!function($){(new function(){var e=this,t=Stripe(ppress_stripe_vars.publishable_key,{locale:ppress_stripe_vars.locale});this.init=function(){window.processCheckoutFlag=!1,window.confirmPaymentFlag=!1,$(document).on("ppress_updated_checkout",e.updated_checkout),$(document).on("ppress_update_checkout",e.unmountPaymentElement),$(document).on("click","#ppress-checkout-button",(function(){window.processCheckoutFlag=!0})),e.updatePaymentElement()},this.updated_checkout=function(t,s){e.checkout_form=$("form#ppress_mb_checkout_form"),e.checkout_form.on("ppress_checkout_place_order_stripe",e.validateFormSubmission),e.checkout_form.on("ppress_process_checkout_stripe",e.processCheckout),e.mountPaymentElement(s)},this.fieldValueOrEmpty=function(e){return e||""},this.getBillingDetails=function(){return{name:e.fieldValueOrEmpty($("#stripe-card_name").val()),email:e.fieldValueOrEmpty($("#ppmb_email").val()),phone:e.fieldValueOrEmpty($("#stripe_ppress_billing_phone").val()),address:{line1:e.fieldValueOrEmpty($("#stripe_ppress_billing_address").val()),line2:"",city:e.fieldValueOrEmpty($("#stripe_ppress_billing_city").val()),state:e.fieldValueOrEmpty($("#stripe_ppress_billing_state").val()),country:e.fieldValueOrEmpty($("#stripe_ppress_billing_country").val()),postal_code:e.fieldValueOrEmpty($("#stripe_ppress_billing_postcode").val())}}},this.updatePaymentElement=function(){$(document).on("change","#ppmb_email",(function(){e.unmountPaymentElement(),void 0!==window.elements.create&&(window.paymentElement=window.elements.create("payment",e.getPaymentOptions()),window.paymentElement.mount("#ppress-stripe-card-element"))}))},this.getPaymentOptions=function(){return{layout:{type:"tabs"},fields:{billingDetails:"true"===ppress_stripe_vars.hideBillingFields?"never":"auto"},defaultValues:{billingDetails:e.getBillingDetails()},terms:{card:"never"}}},this.mountPaymentElement=function(s){0!==$("#ppress-stripe-card-element").length&&(window.elements=t.elements(s.data.stripe_args),window.paymentElement=window.elements.create("payment",e.getPaymentOptions()),window.paymentElement.mount("#ppress-stripe-card-element"))},this.unmountPaymentElement=function(){0!==$("#ppress-stripe-card-element").length&&void 0!==window.paymentElement.destroy&&window.paymentElement.destroy()},this.validateFormSubmission=function(){if(!0===window.processCheckoutFlag)return window.processCheckoutFlag=!1,window.elements.submit().then((function(t){"error"in t&&void 0!==t.error.message?ppressCheckoutForm.createAlertMessage(t.error.message):e.checkout_form.submit()})),!1},this.processCheckout=function(s,n,i){if(!0===ppressCheckoutForm.is_var_defined(n.gateway_response)&&(!0===ppressCheckoutForm.is_var_defined(n.gateway_response.latest_invoice)||!0===ppressCheckoutForm.is_var_defined(n.gateway_response.status))){if(!1===window.confirmPaymentFlag){window.confirmPaymentFlag=!0;let s,r="confirmPayment",o="paymentIntent";ppressCheckoutForm.is_var_defined(n.gateway_response.client_secret)?s=n.gateway_response.client_secret:ppressCheckoutForm.is_var_defined(n.gateway_response.latest_invoice.payment_intent)&&ppressCheckoutForm.is_var_defined(n.gateway_response.latest_invoice.payment_intent.client_secret)?s=n.gateway_response.latest_invoice.payment_intent.client_secret:ppressCheckoutForm.is_var_defined(n.gateway_response.setup_intent_response)&&ppressCheckoutForm.is_var_defined(n.gateway_response.setup_intent_response.client_secret)&&(s=n.gateway_response.setup_intent_response.client_secret,r="confirmSetup",o="setupIntent"),void 0===s&&($(document.body).trigger("ppress_checkout_success",[n,i]),window.location.assign(n.order_success_url));let a=e.getBillingDetails();t[r]({elements:window.elements,clientSecret:s,confirmParams:{return_url:n.order_success_url,payment_method_data:{billing_details:a}},redirect:"if_required"}).then((function(e){e.error?(window.confirmPaymentFlag=!1,ppressCheckoutForm.createAlertMessage(e.error.message)):("succeeded"===e[o].status&&$(document.body).trigger("ppress_checkout_success",[n,i]),window.location.assign(n.order_success_url))}))}return!1}}}).init()}(jQuery);