createGramInvoiceLinkПоддерживается
Расширение StaticGram (в официальном Bot API его нет). Создаёт ссылку на счёт в GRAM: параметры как у createInvoiceLink без currency, prices, provider_token и subscription_period, цена — amount в GRAM или nanoton_amount. Returns the created invoice link as String on success.
Метод StaticGram. Цена: ровно одно из amount (GRAM, строка или число, до 9 знаков после запятой, запятая или точка) и nanoton_amount; от 0.01 до 10000 GRAM. Счёт создаётся с currency "TON": в invoice, pre_checkout_query, successful_payment и refunded_payment приходят currency "TON", total_amount в нанотонах и gram_amount — сумма в GRAM строкой ("1.5"). Ошибки: AMOUNT_INVALID (нет цены, обе цены, не число, больше 9 знаков), AMOUNT_TOO_SMALL, AMOUNT_TOO_LARGE, CURRENCY_INVALID (currency не GRAM/TON), PRICES_INVALID (передан prices или label длиннее 64), PAYMENT_PROVIDER_INVALID (передан provider_token). Возврат — refundGramPayment, баланс — getMyGramBalance, вывод — withdrawGramBalance. Подробнее — раздел «Оплата» → «Счета в GRAM».
Параметры
Ошибки
Ошибка приходит как {"ok": false, "error_code": 400, "description": "Bad Request: КОД: пояснение"}, если не указано иное.
| Ошибка | Когда |
|---|---|
AMOUNT_INVALID | нет цены, переданы и amount, и nanoton_amount, не число или больше 9 знаков после запятой |
AMOUNT_TOO_SMALL | меньше 0.01 GRAM (10000000 нанотонов) |
AMOUNT_TOO_LARGE | больше 10 000 GRAM |
CURRENCY_INVALID | передан currency, отличный от GRAM/TON |
PRICES_INVALID | передан prices или label длиннее 64 символов |
PAYMENT_PROVIDER_INVALID | передан provider_token |
… | остальные ошибки как у sendInvoice / createInvoiceLink (INVOICE_TITLE_INVALID и т. п.) |
Пример запроса
curl "https://api.staticgram.top/bot$TOKEN/createGramInvoiceLink" \
-H "Content-Type: application/json" \
-d '{
"title": "Пополнение",
"description": "Пополнение игрового счёта",
"payload": "topup-user-123",
"amount": "0,01"
}'from aiogram import Bot
from aiogram.client.session.aiohttp import AiohttpSession
from aiogram.client.telegram import TelegramAPIServer
from aiogram.methods.base import TelegramMethod
from aiogram.types import InlineKeyboardMarkup, Message
# Метода StaticGram нет в aiogram: описываем его сами, bot(...) отправит запрос как обычно.
class CreateGramInvoiceLink(TelegramMethod[str]):
__returning__ = str
__api_method__ = "createGramInvoiceLink"
title: str
description: str
payload: str
amount: str | float | None = None # "1.5", "0,01", 2.5
nanoton_amount: int | None = None # или цена в нанотонах
label: str | None = None
photo_url: str | None = None
session = AiohttpSession(api=TelegramAPIServer.from_base("https://api.staticgram.top"))
bot = Bot(TOKEN, session=session)
link = await bot(CreateGramInvoiceLink(
title="Пополнение", description="Пополнение игрового счёта",
payload="topup-user-123", amount="0,01",
))
# link: https://staticgram.top/invoice/... — откройте в Mini App через Telegram.WebApp.openInvoice(link)const res = await fetch(`https://api.staticgram.top/bot${TOKEN}/createGramInvoiceLink`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
title: "Пополнение",
description: "Пополнение игрового счёта",
payload: "topup-user-123",
amount: "0,01",
}),
});
const { result: link } = await res.json();Ответ (String)
{
"ok": true,
"result": "..."
}