# Telegram MiniApp

Теперь в Telegram можно принимать криптовалютные платежи через сеть TON с помощью нашего мини-приложения. Оно легко подключается, позволяет работать с клиентами прямо в Telegram и открывает новые возможности для бизнеса в экосистеме TON.

***

## Параметры

Для управления создаваемым платежом доступны следующие параметры:

| Параметр           | Обязательный | Описание                                                                |
| ------------------ | ------------ | ----------------------------------------------------------------------- |
| **apiKey**         | НЕТ          | Публичная часть API-ключа (используется для подписи вебхуков о платеже) |
| **orderId**        | ДА           | Идентификатор платежа                                                   |
| **description**    | НЕТ          | Описание платежа                                                        |
| **organizationId** | ДА           | Id организации                                                          |
| **amount**         | НЕТ          | Сумма к оплате                                                          |
| **payerEmail**     | НЕТ          | Почта плательщика                                                       |
| **returnUrl**      | НЕТ          | URL возврата после успешного платежа                                    |

> API ключ вы можете получить в личном кабинете в разделе интеграции

***

## Подключение

Доступно два удобных способа подключения нашего мини-приложения для приема крипто платежей.

### 1. Платежная кнопка через скрипт

Вы можете интегрировать платежную систему на ваш сервис или мини-приложение, добавив готовый скрипт кнопки. Это удобное решение, которое позволяет быстро настроить процесс оплаты через сеть TON в самых используемых кошельках.

### Подключение скрипта

Для работы платежной кнопки нужно подключить скрипт на ваш сервис

```html
<script src="https://cdn.onchainpay.io/images/PaymentButtonMiniApp.js"></script>
```

Пример тега платежной кнопки с необходимыми параметрами:

```html
<payment-button
    data-orderid="test"
    data-organizationid="your_organization_id"
    data-description="test"
    data-payeremail="email@test.mail"
    data-apikey="your_public_api_key"
    data-label="Оплатить"
    data-accentcolor="red"
    data-returnurl="https://example.com/success"
>
</payment-button>
```

> Обратите внимание! data-атрибуты должны быть написаны в lowercase

***

### Параметры тэга платежной кнопки

#### `data-label`

Текст, отображаемый на кнопке.

Пример: `data-label="Оплатить"`

#### `data-accentcolor`

Цвет кнопки. Доступные значения: `purple, orange, green, red, yellow, blue`

### 2. Прямая ссылка

В качестве альтернативы можно использовать прямую ссылку, которую необходимо вставить на ваш сервис или мини-приложение. Эта ссылка перенаправит пользователя на наше приложение оплаты внутри Telegram.

> Для того чтобы открыть мини-приложение оплаты, вам необходимо сформировать из параметров `base64` строку и вставить в query-параметр `startapp`

#### Пример формирования base64 строки на JavaScript:

```js
const encodeObjectToUrlString = (obj) => { 
  const jsonString = JSON.stringify(obj); // Преобразуем объект в строку JSON 
  return encodeURIComponent(btoa(jsonString)); // Кодируем в Base64 и делаем безопасным для URL 
};

// Пример использования:
const params = {
  apiKey: "apiKey",
  orderId: "Payment#1234",
  description: "Some payment description",
  organizationId: "organizationId",
  payerEmail: "email@mail.ru",
  returnUrl: "https://example.com/success"
};

const base64Params = encodeObjectToUrlString(params);
```

#### Пример ссылки:

```
https://t.me/Onchainapay_app_bot/onchainpay?startapp=${base64Params}
```

Ссылку доступно открыть через `window.open` функцию

```js
window.open(`https://t.me/Onchainapay_app_bot/onchainpay?startapp=${base64Params}`)
```

> Вставьте результат из функции в base64Params в строке.

***

> Доступные валюты для оплаты USDT (TON), TON (TON)

> Обратите внимание! При открытии мини-приложения оплаты, ваше мини приложение закроется


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.onchainpay.io/ru/payment-miniapp.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
