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.
Параметры
ID пользователя, который оплатил счёт.
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 found | user_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
}