StaticGramBot API

refundGramPaymentПоддерживается

Расширение StaticGram (в официальном Bot API его нет). Возвращает пользователю один платёж в GRAM: GRAM списываются с баланса бота и зачисляются покупателю, в чат приходит сервисное сообщение refunded_payment (currency "TON", total_amount в нанотонах, gram_amount). Работает как refundStarPayment, но только для GRAM-платежей (refundStarPayment возвращает платежи в обеих валютах). Синоним — refundTonPayment. Returns True on success.

Особенности StaticGram

Метод StaticGram. Возврат требует, чтобы на балансе бота было не меньше суммы платежа. refunded_payment в чате содержит currency "TON", total_amount в нанотонах и gram_amount.

Параметры

user_idIntegerобязательный
ID пользователя, который оплатил счёт.
telegram_payment_charge_idStringобязательный
telegram_payment_charge_id из successful_payment этого платежа.

Ошибки

Ошибка приходит как {"ok": false, "error_code": 400, "description": "Bad Request: КОД: пояснение"}, если не указано иное.

ОшибкаКогда
CHARGE_ID_EMPTYне передан telegram_payment_charge_id
CHARGE_ID_INVALIDплатёж не найден, принадлежит другому пользователю или это платёж в звёздах (XTR)
CHARGE_ALREADY_REFUNDEDплатёж уже возвращён
BALANCE_TOO_LOWна балансе бота меньше GRAM, чем сумма платежа
Bad Request: user not founduser_id не передан или некорректен

Пример запроса

curl
curl "https://api.staticgram.top/bot$TOKEN/refundGramPayment" \
  -H "Content-Type: application/json" \
  -d '{
    "user_id": 123456789,
    "telegram_payment_charge_id": "stx..."
  }'
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

# Метода StaticGram нет в aiogram: описываем его сами, bot(...) отправит запрос как обычно.
class RefundGramPayment(TelegramMethod[bool]):
    __returning__ = bool
    __api_method__ = "refundGramPayment"

    user_id: int
    telegram_payment_charge_id: str

session = AiohttpSession(api=TelegramAPIServer.from_base("https://api.staticgram.top"))
bot = Bot(TOKEN, session=session)

# charge_id — message.successful_payment.telegram_payment_charge_id
await bot(RefundGramPayment(user_id=123456789, telegram_payment_charge_id=charge_id))
JavaScript
const res = await fetch(`https://api.staticgram.top/bot${TOKEN}/refundGramPayment`, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    user_id: 123456789,
    telegram_payment_charge_id: chargeId,
  }),
});
const { ok, description } = await res.json();

Ответ (True)

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

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