CC Icons (left / right)

by VeryGoodFiddle

HTML

<!DOCTYPE html>
<html lang="en">

  <head>
    <meta charset="UTF-8">
    <title>VGS Collect Credit Card Example</title>

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

    <!--Replace with generated for your organization JS file.-->
    <script type="text/javascript" src="https://js.verygoodvault.io/vgs-collect/1/development.js"></script>

  </head>

  <body>
    <main>
      <div class="row">
        <div class="col-md-2"></div>
        <div class="col-md-4">
          <div class="row card card-outline-secondary">
            <div class="card-body">
              <h3 class="text-center">Collect.js Credit Card Payment</h3>
              <hr>
              <form id="cc-form">
                <div class="form-group">
                  <label for="cc-name">Name</label>
                  <span id="cc-name" class="form-field">
                <!--VGS Collect iframe for card name field will be here!-->
              </span>
                </div>
                <div class="form-group">
                  <label for="cc-number">Card number</label>
                  <span id="cc-number" class="form-field">
                <!--VGS Collect iframe for card number field will be here!-->
              </span>
                </div>
                <div class="form-group">
                  <label for="cc-number">Card number (right)</label>
                  <span id="cc-number2" class="form-field">
                <!--VGS Collect iframe for card number field will be here!-->
              </span>
                </div>
                <div class="form-group">
                  <label for="cc-cvc">CVC</label>
                  <span id="cc-cvc" class="form-field">
              <!--VGS Collect iframe for CVC field will be here!-->
              </span>
                </div>
                <div...

CSS

body {
  padding: 25px;
}

span[id*="cc-"] {
  display: block;
  height: 40px;
  margin-bottom: 15px;
}

span[id*="cc-"] iframe {
  height: 100%;
  width: 100%;
}

pre {
  font-size: 12px;
}

.form-field {
  display: block;
  width: 100%;
  height: calc(2.25rem + 2px);
  padding: .375rem .75rem;
  font-size: 1rem;
  line-height: 1.5;
  color: #495057;
  background-color: #fff;
  background-clip: padding-box;
  border: 1px solid #ced4da;
  border-radius: .25rem;
  transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;
}

.form-field iframe {
  border: 0 none transparent;
  height: 100%;
  vertical-align: middle;
  width: 100%;
}

p {
  margin-bottom: 10px;
}

JavaScript

const form = VGSCollect.create("development", function(state) {});
form.getUrl = () => 'https://tntmkqble3w.SANDBOX.verygoodproxy.io';
form.field('#cc-name', {
  type: 'text',
  name: 'card_name',
  value: 'Joe Business'
});
// Create VGS Collect field for credit card number
form.field('#cc-number', {
  type: 'card-number',
  name: 'cc-number',
  placeholder: 'Card number',
  validations: ['required', 'validCardNumber'],
  showCardIcon: {
    left: '0px',
  },
  css: {
    paddingRight: 0,
    textAlign: 'right',
  }
});
form.field('#cc-number2', {
  type: 'card-number',
  name: 'cc-number',
  placeholder: 'Card number',
  validations: ['required', 'validCardNumber'],
  showCardIcon: true,
});

// Create VGS Collect field for CVC
form.field('#cc-cvc', {
  type: 'card-security-code',
  name: 'card_cvc',
  value: '344'
});
// Create VGS Collect field for credit card expiration date
form.field('#cc-expiration-date', {
  type: 'card-expiration-date',
  name: 'card_expirationDate',
  value: '01 / 2020'
});
// Submits all of the form fields by executing a POST request.
document.getElementById('cc-form')
  .addEventListener('submit', function(e) {
    e.preventDefault();
    form.submit('/server?enable=true&status=200', {
      headers: {
        "VGS-Client": "source=collect&medium=collect",
      }
    }, function(status, data) {
      alert('SUCCESS');
    });
  }, function(errors) {
    alert('ERROR');
  });