Make a Payment

Header Block

The Host header block need to go just below the closing hero </section> tag - this needs to be added otherwise the padding is wrong on mobile

<div class="hero-body modal-box">
  <div class="container has-text-centered">
    <p class="title">
      Become a Host
    </p>
  </div>
</div>

Host Type Block

Add the host block right after the closing hero </section>

  <div class="modal-content payment">
    <div class="columns m-t-0">
      <div class="column is-12 ">
        <div class="content-item type">
          <h1 class="title small">Making a Payment <i class="material-icons fa" style="color: #23d160;">payment</i>
          </h1>
          <div class="is-separator ">
            <span class="tag selector">Fill in</span>
            <hr>
          </div>
          <form class="stripe">
            <label>
                <input name="cardholder-name" class="field is-empty" placeholder="Jane Doe" />
                <span><span>Name</span></span>
              </label>
            <label>
                <input class="field is-empty" type="tel" placeholder="(123) 456-7890" />
                <span><span>Phone</span></span>
              </label>
            <label>
                <div id="card-element" class="field is-empty test"></div>
                <span><span>Card</span></span>
              </label>
            <a type="submit" class="button is-success book">Pay Now</a>

            <div class="outcome ">
              <div class="error"></div>
              <div class="success">
                Success! Your Stripe token is <span class="token"></span>
              </div>
            </div>
          </form>

          <div class="content">
            <a class="link-footer" href="">Payment icons here !</a>
          </div>
        </div>
      </div>
    </div>
  </div>

JS for the Stripe

you will need to add the stripe cdn <script src="https://js.stripe.com/v3/"></script>

   <script>
    var stripe = Stripe('pk_test_6pRNASCoBOKtIshFeQd4XMUh');
    var elements = stripe.elements();

    var card = elements.create('card', {
      iconStyle: 'solid',
      style: {
        base: {
          iconColor: '#8898AA',
          color: '#363636',
          lineHeight: '36px',
          fontWeight: 400,
          fontFamily: '"Montserrat", Helvetica, sans-serif',
          fontSize: '15px',

          '::placeholder': {
            color: '#8898AA',
          },
        },
        invalid: {
          iconColor: '#e85746',
          color: '#e85746',
        }
      },
      classes: {
        focus: 'is-focused',
        empty: 'is-empty',
      },
    });
    card.mount('#card-element');

    var inputs = document.querySelectorAll('input.field');
    Array.prototype.forEach.call(inputs, function (input) {
      input.addEventListener('focus', function () {
        input.classList.add('is-focused');
      });
      input.addEventListener('blur', function () {
        input.classList.remove('is-focused');
      });
      input.addEventListener('keyup', function () {
        if (input.value.length === 0) {
          input.classList.add('is-empty');
        } else {
          input.classList.remove('is-empty');
        }
      });
    });

    function setOutcome(result) {
      var successElement = document.querySelector('.success');
      var errorElement = document.querySelector('.error');
      successElement.classList.remove('visible');
      errorElement.classList.remove('visible');

      if (result.token) {
        // Use the token to create a charge or a customer
        // https://stripe.com/docs/charges
        successElement.querySelector('.token').textContent = result.token.id;
        successElement.classList.add('visible');
      } else if (result.error) {
        errorElement.textContent = result.error.message;
        errorElement.classList.add('visible');
      }
    }

    card.on('change', function (event) {
      setOutcome(event);
    });

    document.querySelector('form').addEventListener('submit', function (e) {
      e.preventDefault();
      var form = document.querySelector('form');
      var extraDetails = {
        name: form.querySelector('input[name=cardholder-name]').value,
      };
      stripe.createToken(card, extraDetails).then(setOutcome);
    });
  </script>

results matching ""

    No results matching ""