01Как это работает
- Откройте кассу. Зарегистрируйтесь и отправьте заявку. После одобрения администратором выдаётся API-ключ.
- Создайте платёж. Отправьте сумму и
callback_urlнаPOST /create— в ответе придётpay_url. - Отдайте ссылку клиенту. Клиент выбирает Click, Payme или Paynet на странице checkout и платит.
- Примите callback. Приходит
status=paid, проверяете подпись и закрываете заказ.
02Страница checkout
Страница checkout готова: делать свою форму или дизайн не нужно. Клиент открывает ссылку pay.tolovgo.uz/pay/…, выбирает платёжную систему и после оплаты видит чек.
Ссылка действует 1 час, затем переходит в статус expired. Если передать return_url, после оплаты клиент вернётся на ваш сайт или в бота.
Click, Payme и Paynet включаются и выключаются отдельно для каждой кассы. В поле providers ответа есть прямые ссылки на каждую систему — чтобы сделать свои кнопки оплаты.
03Методы API
https://pay.tolovgo.uz/api
| Метод | Путь | Назначение |
|---|---|---|
| POST | /create | Создание платежа, в ответе pay_url |
| GET | /status/{order_id} | Статус платежа |
| POST | /v1/orders | Создание платежа (v1): external_id, данные плательщика, JSON-callback |
| GET | /v1/orders/{id} | Статус платежа (v1) |
04Пример кода
Создание платежа — PHP и Python. Ключ берётся на странице кассы в кабинете.
PHP
$ch = curl_init('https://pay.tolovgo.uz/api/create');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['X-Api-Key: KALIT'],
CURLOPT_POSTFIELDS => ['amount' => 25000, 'callback_url' => 'https://example.uz/tolov'],
CURLOPT_RETURNTRANSFER => true,
]);
$javob = json_decode(curl_exec($ch), true);
echo $javob['pay_url']; // https://pay.tolovgo.uz/pay/…
Python
import requests
r = requests.post('https://pay.tolovgo.uz/api/create',
headers={'X-Api-Key': 'KALIT'},
data={'amount': 25000, 'callback_url': 'https://example.uz/tolov'})
print(r.json()['pay_url']) # https://pay.tolovgo.uz/pay/…
05Безопасность
- Каждый callback подписывается HMAC-SHA256 (
X-Rox-Signature) с меткой времени — поддельные и старые запросы отсекаются. - На API-ключ можно поставить ограничение по IP. Ключ не хранится в базе в открытом виде.
- Статусы:
pending,paid,expired,cancelled,refunded. Перед закрытием заказа статус можно подтвердить черезGET /status.
Полная документация: поля, подпись, коды ошибок →
Оплата в Telegram-боте →
06Вопросы
Какие платёжные системы подключены?
Click, Payme и Paynet. Все — через один API и одну страницу checkout, без отдельных договоров и интеграций с каждой системой.
Работает ли API не только в Telegram-боте?
Да. API работает через обычные HTTPS-запросы: его можно вызывать с сайта, из Telegram-бота или с бэкенда мобильного приложения.
Сколько стоит?
С каждого платежа удерживается 6% комиссии, абонентской платы нет. Вывод на карту: ручной — без комиссии, ускоренный — 1%.
Как узнать, что платёж прошёл?
На callback_url приходит подписанное уведомление. Также статус можно в любой момент запросить через GET /status/{order_id}.
Какие суммы принимаются?
Один платёж — от 1 000 до 99 999 999 сум.