"use strict";
jQuery(function($){
if('undefined'===typeof(Stripe) ){
return;
}
var stripe=Stripe(GetPaid_Stripe.stripePublishableKey);
/**
* Hook system for customizing Stripe Elements options.
*
* Use jQuery events to filter options:
* - 'getpaid_stripe_filter_elements_options': Filter stripe.elements() options
* - 'getpaid_stripe_filter_payment_element_options': Filter elements.create('payment') options
*
* Example: Restrict countries to Australia only
* jQuery(document).on('getpaid_stripe_filter_payment_element_options', function(e, options, form){
*     options.fields=options.fields||{};
*     options.fields.billingDetails=options.fields.billingDetails||{};
*     options.fields.billingDetails.address=options.fields.billingDetails.address||{};
*     options.fields.billingDetails.address.country='never';
*     options.defaultValues=options.defaultValues||{};
*     options.defaultValues.billingDetails=options.defaultValues.billingDetails||{};
*     options.defaultValues.billingDetails.address=options.defaultValues.billingDetails.address||{};
*     options.defaultValues.billingDetails.address.country='AU';
* });
*/
$('body').on('getpaid_setup_payment_form', function(e, form){
form.on('getpaid_payment_form_changed_state', function(){
var stripe_id=form.find('.getpaid-stripe-elements').attr('id');
var displayError=$('#' + stripe_id + ' .getpaid-stripe-card-errors');
var form_state=form.data('getpaid_js_data');
if(form_state.stripe_error){
displayError.addClass('alert alert-danger').text(form_state.stripe_error);
return;
}
if(form.data('getpaid_stripe_elements') ){
form.data('getpaid_stripe_element').destroy();
}
displayError.removeClass('alert alert-danger').text('');
form.find('.getpaid-stripe-payment-intent').val(form_state.stripe_payment_intent);
form.find('.getpaid-stripe-payment-intent-secret').val(form_state.stripe_payment_intent_secret);
try {
var elementsOptions={ clientSecret: (form_state ? form_state.stripe_payment_intent_secret:''), locale: GetPaid_Stripe.locale };
$('body').trigger('getpaid_stripe_filter_elements_options', [ elementsOptions, form ]);
var elements=stripe.elements(elementsOptions);
var paymentElementOptions={};
$('body').trigger('getpaid_stripe_filter_payment_element_options', [ paymentElementOptions, form ]);
var element=elements.create('payment', paymentElementOptions);
element.mount('#' + stripe_id + ' .getpaid-stripe-elements-wrapper');
form.data('getpaid_stripe_elements', elements);
form.data('getpaid_stripe_element', element);
element.addEventListener('change', function(event){
if(event.error){
displayError.addClass('alert alert-danger mt-2').text(event.error.message)
}else{
displayError.removeClass('alert alert-danger mt-2').text('')
}});
} catch(e){
displayError.addClass('alert alert-danger mt-2').text(e.message)
}})
})
$('body').on('getpaid_process_stripe_payment', function(e, data, form){
var displayError=form.find('.getpaid-stripe-card-errors');
if(! form.data('getpaid_stripe_elements') ){
displayError.addClass('alert alert-danger mt-2').text(GetPaid_Stripe.unknownError);
return;
}
wpinvBlock(form);
var elements=form.data('getpaid_stripe_elements');
elements
.fetchUpdates()
.then(function(result){
if(result.error){
displayError.addClass('alert alert-danger mt-2').text(result.error.message);
wpinvUnblock(form);
return;
}
var confirmation;
if(data.is_setup){
confirmation=stripe.confirmSetup({
elements: elements,
confirmParams: {
return_url: data.redirect,
},
})
}else{
confirmation=stripe.confirmPayment({
elements: elements,
confirmParams: {
return_url: data.redirect,
},
})
}
confirmation.then(function(result){
if(! result.error){
return;
}
wpinvUnblock(form);
if(result.error.message){
displayError.addClass('alert alert-danger mt-2').text(result.error.message);
}else{
displayError.addClass('alert alert-danger mt-2').text(GetPaid_Stripe.unknownError);
}
console.log(result);
});
});
});
if($('#getpaid-stripe-update-payment-modal').length){
var updateModalElements;
var updateModalElement;
var successURL;
$('body').on('click', '.getpaid-stripe-update-payment-method-button', function(e){
e.preventDefault();
successURL=$(this).data('redirect');
if(window.bootstrap&&window.bootstrap.Modal){
var paymentModal=new window.bootstrap.Modal(document.getElementById('getpaid-stripe-update-payment-modal'));
paymentModal.show();
}else{
$('#getpaid-stripe-update-payment-modal').modal()
}
var displayError=$('.getpaid-stripe-update-payment-method-errors').removeClass('alert alert-danger mt-2').html('');
if($(this).data('error') ){
displayError.addClass('alert alert-danger mt-2').html($(this).data('error') );
return;
}
try {
if(! updateModalElements){
var updateElementsOptions={ clientSecret: $(this).data('intent'), locale: GetPaid_Stripe.locale };
$('body').trigger('getpaid_stripe_filter_elements_options', [ updateElementsOptions, $('#getpaid-stripe-update-payment-modal') ]);
updateModalElements=stripe.elements(updateElementsOptions);
var updatePaymentElementOptions={};
$('body').trigger('getpaid_stripe_filter_payment_element_options', [ updatePaymentElementOptions, $('#getpaid-stripe-update-payment-modal') ]);
updateModalElement=updateModalElements.create('payment', updatePaymentElementOptions);
updateModalElement.mount('.getpaid-stripe-update-payment-method');
updateModalElement.addEventListener('change', function(event){
if(event.error){
displayError.addClass('alert alert-danger mt-2').text(event.error.message)
}else{
displayError.removeClass('alert alert-danger mt-2').text('')
}});
}} catch(e){
displayError.addClass('alert alert-danger mt-2').text(e.message)
}});
$('body').on('click', '.getpaid-process-updated-stripe-payment-method', function(e){
e.preventDefault();
var displayError=$('.getpaid-stripe-update-payment-method-errors').removeClass('alert alert-danger mt-2').html('');
if(! updateModalElements){
displayError.addClass('alert alert-danger mt-2').text(GetPaid_Stripe.unknownError);
return;
}
wpinvBlock('#getpaid-stripe-update-payment-modal .modal-body');
stripe
.confirmSetup({
elements: updateModalElements,
confirmParams: {
return_url: successURL,
},
})
.then(function(result){
if(! result.error){
return;
}
wpinvUnblock('#getpaid-stripe-update-payment-modal .modal-body');
if(result.error.message){
displayError.addClass('alert alert-danger mt-2').text(result.error.message);
}else{
displayError.addClass('alert alert-danger mt-2').text(GetPaid_Stripe.unknownError);
}
console.log(result);
});
});
}});