express-cart-tea
Version:
A fully functioning Node.js shopping cart with Stripe, PayPal and Authorize.net payments.
1 lines • 3.43 kB
JavaScript
function showNotification(e,t,n,o){n=n||!1,o=o||null,e||(e="Unknown error has occured. Check inputs."),$("#notify_message").removeClass(),$("#notify_message").addClass("alert-"+t),$("#notify_message").html(e),$("#notify_message").slideDown(600).delay(2500).slideUp(600,function(){o&&(window.location=o),!0===n&&location.reload()})}function slugify(e){return $.trim(e).replace(/[^a-z0-9-æøå]/gi,"-").replace(/-+/g,"-").replace(/^-|-$/g,"").replace(/æ/gi,"ae").replace(/ø/gi,"oe").replace(/å/gi,"a").toLowerCase()}$(document).ready(function(){$("#stripe-form").length>0&&(document.querySelector("#submit").disabled=!0,$.ajax({method:"POST",url:"/stripe/setup"}).done(async function(e){var t=Stripe($("#stripePublicKey").val());document.querySelector("#payment-form").addEventListener("submit",async function(e){e.preventDefault(),i(!0);const{error:o}=await t.confirmPayment({elements:n,confirmParams:{return_url:$("#baseUrl").val()+"/stripe/checkout_action"}});"card_error"===o.type||"validation_error"===o.type?a(o.message):a("An unexpected error occured.");i(!1)});const n=t.elements({appearance:{theme:"stripe"},clientSecret:e.clientSecret}),o=n.create("payment");function a(e){const t=document.querySelector("#payment-message");t.classList.remove("hidden"),t.textContent=e,setTimeout(function(){t.classList.add("hidden"),e.textContent=""},4e3)}function i(e){e?(document.querySelector("#submit").disabled=!0,document.querySelector("#spinner").classList.remove("d-none"),document.querySelector("#button-text").classList.add("d-none")):(document.querySelector("#submit").disabled=!1,document.querySelector("#spinner").classList.add("d-none"),document.querySelector("#button-text").classList.remove("d-none"))}o.mount("#payment-element"),o.on("ready",function(){document.querySelector("#submit").disabled=!1})}).fail(function(e){showNotification(e.responseJSON.message,"danger")})),$("#checkoutInstore").validator().on("click",function(e){e.preventDefault(),$.ajax({type:"POST",url:"/instore/checkout_action"}).done(e=>{window.location="/payment/"+e.paymentId}).fail(e=>{window.location="/payment/"+e.paymentId})}),$("#dropin-container").length>0&&$.ajax({method:"POST",url:"/adyen/setup"}).done(async function(e){const t={environment:e.environment,clientKey:e.clientKey,session:{id:e.paymentsResponse.id,sessionData:e.paymentsResponse.sessionData},onPaymentCompleted:(e,t)=>{0===$("#shipping-form").validator("validate").has(".has-error").length&&$.ajax({type:"POST",url:"/adyen/checkout_action",data:{paymentCode:e.resultCode,paymentId:t._id}}).done(e=>{window.location="/payment/"+e.paymentId}).fail(e=>{showNotification("Failed to complete transaction","danger",!0)})},onError:(e,t)=>{console.log(e.name,e.message,e.stack,t)},paymentMethodsConfiguration:{hasHolderName:!1,holderNameRequired:!1,billingAddressRequired:!1}};(await AdyenCheckout(t)).create("dropin").mount("#dropin-container")}).fail(function(e){showNotification(e.responseJSON.message,"danger")}),$("#zip-checkout").length>0&&Zip.Checkout.attachButton("#zip-checkout",{checkoutUri:"/zip/setup",onComplete:function(e){"approved"===e.state?$.ajax({type:"POST",url:"/zip/charge",data:{checkoutId:e.checkoutId}}).done(e=>{window.location="/payment/"+e.paymentId}).fail(e=>{showNotification("Failed to complete transaction","danger",!0)}):window.location="/zip/return?result="+e.state},onError:function(e){window.location="/zip/return?result=cancelled"}})});