async function SquarePaymentFlow() {



  // Create card payment object and attach to page

  CardPay(document.getElementById('card-container'), document.getElementById('card-button'));



  //Create Apple pay instance

  // ApplePay(document.getElementById('apple-pay-button'));



  // Create Google pay instance

  // GooglePay(document.getElementById('google-pay-button'));



  //Create ACH payment

  // ACHPay(document.getElementById('ach-button'));

}



window.payments = Square.payments(window.applicationId, window.locationId);



window.paymentFlowMessageEl = document.getElementById('payment-flow-message');



window.showSuccess = function(message) {

  window.paymentFlowMessageEl.classList.add('success');

  window.paymentFlowMessageEl.classList.remove('error');

  window.paymentFlowMessageEl.innerText = message;

}



window.showError = function(message) {

  window.paymentFlowMessageEl.classList.add('error');

  window.paymentFlowMessageEl.classList.remove('success');

  window.paymentFlowMessageEl.innerText = message;

}



window.createPayment = async function(token) {

  // $('#loading-spinner-overlay').css('visibility', 'visible');

  var address = $('#member_address').serialize();

  const dataJsonString = JSON.stringify({

    token,

    idempotencyKey: window.idempotencyKey,

    amount : document.getElementById('amount').value,

    order_id : document.getElementById('order_id').value,

    address : address

  });

  

  try {

     var getUrl = window.location;

        path_name = "/"+getUrl.pathname.split('/')[1];


    

    const response = await fetch(window.location.origin+path_name+"/processPayment", {

      method: 'POST',

      headers: {

        'Content-Type': 'application/json'

      },

      body: dataJsonString

    });



  

    const data = await response.json();



   

    if (data.errors && data.errors.length > 0) {

      if (data.errors[0].detail) {

        console.log(data);

        //window.showError(data.errors[0].detail);

        var getUrl = window.location;

        path_name = "/"+getUrl.pathname.split('/')[1];

        window.location.href = window.location.origin+path_name+"/payment_failed/"+document.getElementById('order_id').value;

      } else {

        window.showError('Payment Failed.');

      }

    } else {

      var getUrl = window.location;

      path_name = "/"+getUrl.pathname.split('/')[1];

      window.location.href = window.location.origin+path_name+"/payment_success/"+document.getElementById('order_id').value;

     // window.showSuccess('Payment Successful!');

    }

  } catch (error) {

    console.error('Error:', error);

  }

}



// Hardcoded for testing purpose, only used for Apple Pay and Google Pay

window.getPaymentRequest = function() {

  return {

    countryCode: window.country,

    currencyCode: window.currency,

    lineItems: [

      { amount: '1.23', label: 'Cat', pending: false },

      { amount: '4.56', label: 'Dog', pending: false },

    ],

    requestBillingContact: false,

    requestShippingContact: true,

    shippingContact: {

      addressLines: ['123 Test St', ''],

      city: 'San Francisco',

      countryCode: 'US',

      email: 'test@test.com',

      familyName: 'Last Name',

      givenName: 'First Name',

      phone: '1111111111',

      postalCode: '94109',

      state: 'CA',

    },

    shippingOptions: [

      { amount: '0.00', id: 'FREE', label: 'Free' },

      { amount: '9.99', id: 'XP', label: 'Express' },

    ],

    total: { amount: '1.00', label: 'Total', pending: false },

  };

};



SquarePaymentFlow();