StaticGramBot API

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

Метод 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».

Параметры

business_connection_idStringнеобязательный
Unique identifier of the business connection on behalf of which the link will be created. For payments in Telegram Stars only.
titleStringобязательный
Product name, 1-32 characters
descriptionStringобязательный
Product description, 1-255 characters
payloadStringобязательный
Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use it for your internal processes.
amountString or Floatнеобязательный
Цена в GRAM: строка или число — "1.5", "0,01", 2.5. Не больше 9 знаков после запятой, от 0.01 до 10000 GRAM. Обязателен один из amount или nanoton_amount.
nanoton_amountIntegerнеобязательный
Цена в нанотонах (1 GRAM = 1000000000), от 10000000 до 10000000000000. Вместо amount.
labelStringнеобязательный
Подпись позиции в счёте, 1–64 символа. Не передана — используется title.
photo_urlStringнеобязательный
URL of the product photo for the invoice. Can be a photo of the goods or a marketing image for a service.
photo_sizeIntegerнеобязательный
Photo size in bytes
photo_widthIntegerнеобязательный
Photo width
photo_heightIntegerнеобязательный
Photo height

Ошибки

Ошибка приходит как {"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
curl "https://api.staticgram.top/bot$TOKEN/createGramInvoiceLink" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Пополнение",
    "description": "Пополнение игрового счёта",
    "payload": "topup-user-123",
    "amount": "0,01"
  }'
aiogram 3
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)
JavaScript
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)

JSON
{
  "ok": true,
  "result": "..."
}

Описания методов и типов взяты из официальной документации Telegram Bot API (Bot API 10.3). Адрес API: https://api.staticgram.top