@guruhotel/external-checkout

Library to consume GuruHotel checkout in a secure way

Usage no npm install needed!

<script type="module">
  import guruhotelExternalCheckout from 'https://cdn.skypack.dev/@guruhotel/external-checkout';
</script>

README

external-checkout by guruhotel

Options

Parameter Value Description
apiKey pk_123 the private key generated in the hotel dashbaord
sandbox true or false (false by default) this will allow you to test the iframe calls in a sandbox environment
render true or false (true by default) this value determine if lib initialization display or not the iframe
containerName html element id the lib will take this param to build the iframe
styles.width size in % or px this value will be the width of the container max is 100%
styles.height size in % or px this value will be the height of the container max is 100%
styles.overflow hidden or visible or scroll or auto this value specifies whether to clip the content or to add scrollbars

Using via cdn

  1. import script
<script src="https://external-checkout.guruhotel.com/v1/index.min.js"></script>

using es6

npm install @guruhotel/external-checkout
import GuruCheckout from "@guruhotel/external-checkout";

usage

standalone example

<div id="gh-checkout"></div>
const params = {
  apiKey: "<YOUR-PRIVATE-KEY>",
  sandbox: true,
  containerName: "gh-checkout",
  styles: {
    width: "100%",
    height: "100%",
    left: "0",
    overflow: "hidden",
    position: "fixed",
    top: "0"
  },
};

const checkout = new GuruCheckout(params);

Passing query params

<!-- index.html -->
<form id="gh-form" onsubmit="javascript:handleSubmit">
  <input name="arrival" type="date" />
  <input name="departure" type="date" />
  <select name="currency" required>
    <option value="MXN">MXN</option>
    <option value="USD">USD</option>
  </select>
  <button id="gh-form-submit" type="submit">Open checkout</button>
</form>
<div id="gh-checkout"></div>
// index.js
const params = {
  apiKey: "<YOUR-PRIVATE-KEY>",
  render: false, // wait render until user triggers search method
  sandbox: true,
  containerName: "gh-checkout",
  styles: {
    width: "100%",
    height: "100%",
    left: "0",
    overflow: "hidden",
    position: "fixed",
    top: "0"
  },
};
const checkout = new GuruCheckout(params);

const form = document.getElementById("gh-form");
form.onsubmit = handleSubmit;

function handleSubmit(e) {
  e.preventDefault();
  const arrival = e.target[0].value;
  const departure = e.target[1].value;
  const currency = e.target[2].value;

  // use search function to pass form values to iframe
  checkout.search({
    arrival,
    departure,
    currency,
  });
}

Payment link

<div id="gh-checkout"></div>
const params = {
  apiKey: "<YOUR-PRIVATE-KEY>",
  sandbox: true,
  containerName: "gh-checkout",
  styles: {
    width: "100%",
    height: "100%",
    left: "0",
    overflow: "hidden",
    position: "fixed",
    top: "0"
  },
};
const checkout = new GuruCheckout(params);

// this will enable the functionality of listen for payment links
checkout.paymentLinkListener();

Close checkout

const params = {
  apiKey: "pk_xxxxxxxxx",
  sandbox: true, // default false
  containerName: "gh-checkout",
  styles: {
    width: "100%",
    height: "100%",
    left: "0",
    overflow: "hidden",
    position: "fixed",
    top: "0"
  },
};
const checkout = new GuruCheckout(params);

// trigger this whenever you want to set containers visibility to 'visible'
checkout.makeVisible();