Добавлена возможность автоматического возврата платежей для администратора в обработчиках успешной оплаты. Теперь, если пользователь является администратором, система автоматически возвращает средства и отправляет уведомление о статусе возврата. Улучшено логирование ошибок возврата для упрощения отладки.
This commit is contained in:
parent
991f1d74b1
commit
097a481026
72
main.py
72
main.py
@ -522,6 +522,30 @@ async def successful_payment_handler(message: Message, db: OracleDatabase = None
|
||||
plain_report = report.replace("**", "").replace("*", "")
|
||||
await message.answer(plain_report, reply_markup=builder.as_markup())
|
||||
logging.info("Plain text message sent successfully!")
|
||||
|
||||
# Проверяем, является ли пользователь администратором и возвращаем звезды
|
||||
if message.from_user.id == ADMIN_USER_ID:
|
||||
try:
|
||||
await message.bot.refund_star_payment(
|
||||
user_id=message.from_user.id,
|
||||
telegram_payment_charge_id=message.successful_payment.telegram_payment_charge_id
|
||||
)
|
||||
await message.answer(
|
||||
"🔧 **Admin Refund**\n\n"
|
||||
f"💰 Payment automatically refunded for admin user.\n"
|
||||
f"🆔 Transaction ID: {escape_markdown(message.successful_payment.telegram_payment_charge_id)}\n"
|
||||
"ℹ️ Admin access - no charges applied.",
|
||||
parse_mode="Markdown"
|
||||
)
|
||||
logging.info(f"Admin refund successful for user {message.from_user.id}")
|
||||
except Exception as refund_error:
|
||||
logging.error(f"Failed to refund admin payment: {refund_error}")
|
||||
await message.answer(
|
||||
"⚠️ **Admin Refund Failed**\n\n"
|
||||
"Could not automatically refund admin payment. Please contact technical support.\n"
|
||||
f"🆔 Transaction ID: {escape_markdown(message.successful_payment.telegram_payment_charge_id)}",
|
||||
parse_mode="Markdown"
|
||||
)
|
||||
else:
|
||||
# No detailed information found - refund the payment
|
||||
try:
|
||||
@ -689,6 +713,30 @@ async def successful_payment_handler(message: Message, db: OracleDatabase = None
|
||||
logging.info("Sending photo information message...")
|
||||
await message.answer(photo_message, parse_mode="Markdown")
|
||||
logging.info("Photo message sent successfully!")
|
||||
|
||||
# Проверяем, является ли пользователь администратором и возвращаем звезды
|
||||
if message.from_user.id == ADMIN_USER_ID:
|
||||
try:
|
||||
await message.bot.refund_star_payment(
|
||||
user_id=message.from_user.id,
|
||||
telegram_payment_charge_id=message.successful_payment.telegram_payment_charge_id
|
||||
)
|
||||
await message.answer(
|
||||
"🔧 **Admin Refund**\n\n"
|
||||
f"💰 Payment automatically refunded for admin user.\n"
|
||||
f"🆔 Transaction ID: {escape_markdown(message.successful_payment.telegram_payment_charge_id)}\n"
|
||||
"ℹ️ Admin access - no charges applied.",
|
||||
parse_mode="Markdown"
|
||||
)
|
||||
logging.info(f"Admin refund successful for user {message.from_user.id}")
|
||||
except Exception as refund_error:
|
||||
logging.error(f"Failed to refund admin payment: {refund_error}")
|
||||
await message.answer(
|
||||
"⚠️ **Admin Refund Failed**\n\n"
|
||||
"Could not automatically refund admin payment. Please contact technical support.\n"
|
||||
f"🆔 Transaction ID: {escape_markdown(message.successful_payment.telegram_payment_charge_id)}",
|
||||
parse_mode="Markdown"
|
||||
)
|
||||
else:
|
||||
# Нет записей - возвращаем деньги
|
||||
try:
|
||||
@ -738,6 +786,30 @@ async def successful_payment_handler(message: Message, db: OracleDatabase = None
|
||||
f"Transaction ID: {message.successful_payment.telegram_payment_charge_id}"
|
||||
)
|
||||
|
||||
# Проверяем, является ли пользователь администратором и возвращаем звезды
|
||||
if message.from_user.id == ADMIN_USER_ID:
|
||||
try:
|
||||
await message.bot.refund_star_payment(
|
||||
user_id=message.from_user.id,
|
||||
telegram_payment_charge_id=message.successful_payment.telegram_payment_charge_id
|
||||
)
|
||||
await message.answer(
|
||||
"🔧 **Admin Refund**\n\n"
|
||||
f"💰 Payment automatically refunded for admin user.\n"
|
||||
f"🆔 Transaction ID: {escape_markdown(message.successful_payment.telegram_payment_charge_id)}\n"
|
||||
"ℹ️ Admin access - no charges applied.",
|
||||
parse_mode="Markdown"
|
||||
)
|
||||
logging.info(f"Admin refund successful for user {message.from_user.id}")
|
||||
except Exception as refund_error:
|
||||
logging.error(f"Failed to refund admin payment: {refund_error}")
|
||||
await message.answer(
|
||||
"⚠️ **Admin Refund Failed**\n\n"
|
||||
"Could not automatically refund admin payment. Please contact technical support.\n"
|
||||
f"🆔 Transaction ID: {escape_markdown(message.successful_payment.telegram_payment_charge_id)}",
|
||||
parse_mode="Markdown"
|
||||
)
|
||||
|
||||
|
||||
async def on_startup():
|
||||
await oracle_db.connect()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user