Signature validation for return URL via InLine checkout

Overview

To start, you need to generate the InLine checkout content using the TwoCoInlineCart client.

At this step, you must add a product to your cart, set the return method, and set a previously generated cart payload signature.

TwoCoInlineCart.cart.setCurrency('USD');
TwoCoInlineCart.products.add({
    code    : 'TEST_PROD',
    quantity: 1,
    price   : 29
});

TwoCoInlineCart.cart.setReturnMethod({
    type: 'redirect',
    url : 'https:\/\/yourbackend.com\/'
});

TwoCoInlineCart.cart.setSignature('314cfb1f277ef89f9f3735517...........1c62abee466c9d1774bf1e4655f0');

After triggering TwoCoInlineCart.cart.checkout(); the InLine checkout will initialize in the new iframe.

In case of a valid signature, the cart will boot and the shopper can complete the order. Otherwise, he will see an empty cart page.

In case of a valid signature and successful order placing, the shopper is redirected to the page you have defined in the return parameters. The return URL is appended with some return parameters which are refno, total, total-currency, all of them are signed and their signature should be present in the query parameters.

In the backend, you need to gather all these parameters and validate the parameters' hash you generate with the new signature appended to the return-URL.

To generate the hash and validate the return URL, follow the steps below.

Build the InLine Checkout Signature

To sign an InLine checkout buy-link, you need to follow these steps:

  1. Sort the parameters that require a signature alphabetically.

  2. Serialize the parameters and append to them the length of their values.

  3. Concatenate the resulting values.

  4. The serialized value is then encrypted with your Buy-Link Secret Word using the HMAC method (algorithm sha256).

  5. The resulting value is added to the buy-link under the signature parameter.

In order to generate a valid InLine checkout signature, you should include all the parameters from the return URL, except the signature.

Example

When encrypting the values to generate the signature, for the return-url parameter, use an URL with the following structure: https://..... Do not use an encoded URL.

Let's consider the following parameters:

  • refno = 11606896

  • total = 29

  • total-currency = USD

The regular return link will have the following structure:

Steps applied to these parameters:

  1. Sort the parameters alphabetically: refno, total, total-currency.

  2. Serialize the values by prefixing each value with its length (number of characters):

  • refno811606896

  • total229

  • total-currency3USD

  1. Concatenate the serialized values: 118116068962293USD

  2. Encrypt using your Secret Word

  • Algorithm: sha256

  • Key: merchant secret word (example: vendor-secret-key)

This outputs a 64-character hexadecimal string:

You can also use the following PHP HashValidationTool to validate a return URL signature.

Diagram

The successful order placement flow with a valid signature for the InLine checkout is described in the following diagram.

Last updated

Was this helpful?