TON (The Open Network)

💎 Probably, the best blockchain over there

What is TON?

The Open Network (TON) is a decentralized and open internet platform made up of several components. These include: TON Blockchain, TON DNS, TON Storage, and TON Sites. TON Blockchain is the core protocol that connects TON’s underlying infrastructure together to form the greater TON Ecosystem.

Directual TON plugin

Directual TON plugin allows you to create Web-apps, Telegram Mini Apps easily and securely using no-code approach.

Step 1. Install free TON plugin from the Marketplace in your Directual app

Step 2. Add a webhook for notifications

Go to API → Webhooks and add a new one. Turn on CORS for it!

Step 3. Exploring the scenario plugin

First — you have Get transactions step in your scenario. It calls /v2/blockchain/accounts/{account_id}/transactions method of TON API.

Usually, such scenarios run on a scheduler manner (hourly, for example), the data structure (let's name it trigger) contains a single object.

Specify the wallet address to get the transactions and the field where to save the API response:

The response looks like:

{
    "transactions": [
        {
            "hash": "8c0276b72beecc5d7eba39d693fb9f8b266258caef1200f7970006b2f79d7c06",
            "lt": 46659096000001,
            "account": {
                "address": "0:84a12aee228a602c8e37a84c7e62d7846c26d6",
                "is_scam": false,
                "is_wallet": true
            },
            "success": true,
            "in_msg": {
                "msg_type": "int_msg",
                "value": 20000000,
                "fwd_fee": 266669,
                "destination": {
                    "address": "0:84a12aee228aa63a84c7e62d7846c26d6",
                    "is_scam": false,
                    "is_wallet": true
                },
                "source": {
                    "address": "0:18857605abfbbc6f1bfbb4f668bf3680",
                    "is_scam": false,
                    "is_wallet": true
                },
                "decoded_body": {
                    "text": "Order #123"
                }
            }
        }
    ]
}

Key things here are:

  • transactions.in_msg.value

  • transactions.in_msg.decoded_body.text

Let's use JSON-step for parsing the response! For that we need:

  1. Create a new data structure ton transactions with needed fields;

  2. Add a field type of arrayLink to transactions data structure to the structure trigger

  3. Configure JSON-step: add the json-scheme (copy it above) and set up matching

All right, we get all the transactions. Then we can identify them using comments/values, etc.

Hint: if you want to extract oder number from text like Your order is #12345, use the following expression (turn on JS-evaluation):

"{{text}}".match(/#(.+)/) ? "{{text}}".match(/#(.+)/)[1] : ""

Step 4. Exploring web-plugin

Add a Pay in TONs component to your web-page

Configure the plugin (paste to the webhook URL of the webhook we'e created).

Pay attention that amount is in nanoTons. 1 000 000 000 nanoTONs = 1 TON

The user will see the two-component:

  1. First step – connecting wallet (Telegram wallet, MyTonWallet, Tonkeeper, etc.)

  2. Second step – confirming transaction

Step 5. Processing transactions

When the user confirms the transaction, you'll get a notification via webhook (don't forget to turn on CORS for it!)

Notification body:

{
   "user": "36142243",
   "addressFrom": "0:18857605abf7216fa98ae1bbc6f1bfbb4f668bf3680",
   "addressTo": "UQCEoSruIoqmNBdQrEzTd6hMfmLXhGwm1hF4",
   "orderNumber": "123",
   "status": "success",
   "amountTons": "0.02",
   "amountNanoTons": 20000000
}

user will be null if your user is not authorised.

Don't use that notification for confirming your orders! Because one can send a fake request to your webhook. Use that notification as a trigger for checking the blockchain!

Bear in mind that there may be a certain lag between notification and transaction completing (usually 1-3 minutes). Thus, use Delay step in the scenario, that is triggered by the webhook.

Last updated