The Tonder JS SDK is a vanilla Javascript solution for integrating our system into your platform. This solution ensures PCI DSS (Payment Card Industry Data Security Standard) by securely collecting and tokenizing sensitive data in the browser, without exposing your front-end infrastructure to any sensitive data.

This guide will walk you through all the steps, from installation and configuring to styling the SDK to fit your website.

Installation

Tonder gives you two ways to install our SDK. You can install our npm package or use script tags directly in your HTML.

Requirements

To configure our SDK you need to add the following script tags to your HTML:

<script src="https://js.skyflow.com/v1/index.js"></script>
<script src="https://openpay.s3.amazonaws.com/openpay.v1.min.js"></script>
<script src="https://openpay.s3.amazonaws.com/openpay-data.v1.min.js"></script>

The first tag is mandatory for achieving PCI DSS (Payment Card Industry Data Security Standard), as stated at the top of this page, by using Skyflows’s integration. The other tags are necessary to ensure a reliable connection to the payment processor.

You can also install each one with their respective npm packages

Configuration

Before initializing an instance of Tonder SDK, ensure that you have configured it properly. Follow the usage example below:

1

Add the required ID to your HTML

Tonder’s JS SDK needs an entry point to operate. This entry point is defined by adding a tonder-checkout ID to an empty div, like the example below:

<div>
    <h1>Checkout</h1>
    <!-- You have to add an entry point with the ID 'tonder-checkout' -->
    <div id="tonder-checkout">
    </div>
</div>
2

Initialize Tonder's SDK Instance

Initialize Tonder’s JS SDK instance with the following parameters:

FieldDescription
apiKeyThe API key used for authentication and authorization.
returnUrlThe URL to which the user is redirected after the checkout process, regardless of success or failure.
stylesCustom styles object that allows you to customize the appearance of the inline checkout. It may include properties such as colors, fonts, and other styling options.
3

Inject checkout method

Call the injectCheckout method with your inlineCheckout instance, with the code below:

inlineCheckout.injectCheckout();

This method will use the element with id tonder-checkout added in Step 1 to render the checkout elements, as exemplified by the image below:

With this, you can render the checkout to your customers.

4

Add 3DS verification

Use Tonder’s SDK verify3dsTransaction() method to validate if the 3DS challenge was successful or not. Use the example below to call the method and handle the response as needed:

inlineCheckout.verify3dsTransaction().then(response => {
  console.log('Verify 3ds response', response);
  
  if (response.transaction_status === 'Success') {
    alert('3DS Transaction verified.');
    // Proceed with normal payment flow
  } else if (response.transaction_status === 'Failed') {
    alert('3DS Transaction Failed');
  }
});
5

Add a pay button

Lastly, you need to create a button to submit the form. This button needs to have an event listener that calls the payment method from the inlineCheckout instance, sending the checkout data as payload, like presented below:

document.getElementById('your-pay-button').addEventListener('click', async () => {
  try {
    response = await inlineCheckout.payment(checkoutData);
    if (response.transaction_status === 'Success') {
      alert('Payment successful.');
    } else if (response.transaction_status === 'Pending') {
      alert('Payment pending. Redirecting to 3DS...');
      // The redirection to 3DS occurs automatically
    } else {
      alert('Payment declined.');
    }
  } catch (error) {
    alert('Error with payment.');
  }
});

Checkout data

The payment function payload needs to be an object with detailed information about the customer, currency and cart. Below you find details abou each needed field:

Checkout data example

Below you find an example of a checkout data object:

Styling

To learn how you can add your own styles to the checkout elements, refer to the SDK Styles page.