My Checkout (RTL SPLIT)

Stripe.js v3 Checkout Form

by Michelle Bu

HTML

<script src="https://edge-js.stripe.com/v3/"></script>
<body dir="rtl">
  <h1>
    My Checkout
  </h1>
  <form id="checkout">
    <label>
      Card details
      <div id="card-number-field" class="Field"></div>
      <div id="card-exp-field" class="Field"></div>
      <div id="card-cvc-field" class="Field"></div>
      <div id="card-zip-field" class="Field"></div>
    </label>
    <label>
      Your email (for receipt)
      <input type="email" class="Field" placeholder="[email protected]" />
    </label>
    <button type="submit">Submit</button>
  </form>
</body>

CSS

.Field {
  box-sizing: border-box;
  display: block;
  padding: 0 10px;
  background-color: white;
  width: 360px;
  border-radius: 4px;
  margin: 5px;
  font-size: 18px;
  line-height: 2em;
  color: black;
  -webkit-font-smoothing: antialiased;
  border: 2px solid #cfd7df;
}

input:focus {
  outline: none;
}


.StripeElement--focus, input:focus {
  border-color: #9cdbff
}

.StripeElement--invalid {
  border-color: #9e2146;
}

.StripeElement--webkit-autofill {
  background-color: pink !important;
}

JavaScript

const stripe = Stripe('pk_test_xxx');
const elements = stripe.elements({locale: 'auto'});

const options = {
  iconStyle: 'solid',
  style: {
  	base: {
      iconColor: 'white',
      fontSmoothing: 'antialiased',
    	color: 'black',
      fontSize: '18px',
      lineHeight: '2em',
      ':-webkit-autofill': {
      	color: 'yellow'
      }
    },
    invalid: {
    	color: '#9e2146',
    }
  }
}

const cardNumber = elements.create('cardNumber', options);
const cardExpiry = elements.create('cardExpiry', options);
const cardCvc = elements.create('cardCvc', options);
const postalCode = elements.create('postalCode', options);

cardNumber.mount('#card-number-field');
cardExpiry.mount('#card-exp-field');
cardCvc.mount('#card-cvc-field');

window.setTimeout(() => {
	postalCode.mount('#card-zip-field');
}, 200);

document.querySelector('#checkout').addEventListener('submit', function(ev) {
  ev.preventDefault();
  stripe.createToken(cardNumber).then(function(payload) {
  	console.log(payload);
    document.querySelector('form').innerText = JSON.stringify(payload);
  });
});