Добавлена возможность автоматического возврата платежей для администратора в обработчиках успешной оплаты. Теперь, если пользователь является администратором, система автоматически возвращает средства и отправляет уведомление о статусе возврата. Улучшено логирование ошибок возврата для упрощения отладки.
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("*", "")
|
plain_report = report.replace("**", "").replace("*", "")
|
||||||
await message.answer(plain_report, reply_markup=builder.as_markup())
|
await message.answer(plain_report, reply_markup=builder.as_markup())
|
||||||
logging.info("Plain text message sent successfully!")
|
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:
|
else:
|
||||||
# No detailed information found - refund the payment
|
# No detailed information found - refund the payment
|
||||||
try:
|
try:
|
||||||
@ -689,6 +713,30 @@ async def successful_payment_handler(message: Message, db: OracleDatabase = None
|
|||||||
logging.info("Sending photo information message...")
|
logging.info("Sending photo information message...")
|
||||||
await message.answer(photo_message, parse_mode="Markdown")
|
await message.answer(photo_message, parse_mode="Markdown")
|
||||||
logging.info("Photo message sent successfully!")
|
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:
|
else:
|
||||||
# Нет записей - возвращаем деньги
|
# Нет записей - возвращаем деньги
|
||||||
try:
|
try:
|
||||||
@ -737,6 +785,30 @@ async def successful_payment_handler(message: Message, db: OracleDatabase = None
|
|||||||
f"✅ Payment successful! Thank you for your purchase.\n"
|
f"✅ Payment successful! Thank you for your purchase.\n"
|
||||||
f"Transaction ID: {message.successful_payment.telegram_payment_charge_id}"
|
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():
|
async def on_startup():
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user