Add customizable PayPalych payment buttons

This commit is contained in:
Egor
2025-09-30 23:42:19 +03:00
parent 88d2c8325d
commit db5551df23
6 changed files with 297 additions and 63 deletions
+64 -18
View File
@@ -851,33 +851,79 @@ async def test_payment_provider(
language=language or "ru",
)
if not payment_result or not payment_result.get("link_url") and not payment_result.get("link_page_url"):
if not payment_result:
await callback.answer("❌ Не удалось создать платеж PayPalych", show_alert=True)
await _refresh_markup()
return
payment_url = payment_result.get("link_page_url") or payment_result.get("link_url")
sbp_url = (
payment_result.get("sbp_url")
or payment_result.get("transfer_url")
or payment_result.get("link_url")
)
card_url = payment_result.get("card_url")
fallback_url = payment_result.get("link_page_url") or payment_result.get("link_url")
if not (sbp_url or card_url or fallback_url):
await callback.answer("❌ Не удалось создать платеж PayPalych", show_alert=True)
await _refresh_markup()
return
if not sbp_url:
sbp_url = fallback_url
default_sbp_text = texts.t(
"PAL24_SBP_PAY_BUTTON",
"🏦 Оплатить через PayPalych (СБП)",
)
sbp_button_text = settings.get_pal24_sbp_button_text(default_sbp_text)
default_card_text = texts.t(
"PAL24_CARD_PAY_BUTTON",
"💳 Оплатить банковской картой (PayPalych)",
)
card_button_text = settings.get_pal24_card_button_text(default_card_text)
pay_rows: list[list[types.InlineKeyboardButton]] = []
if sbp_url:
pay_rows.append([
types.InlineKeyboardButton(
text=sbp_button_text,
url=sbp_url,
)
])
if card_url and card_url != sbp_url:
pay_rows.append([
types.InlineKeyboardButton(
text=card_button_text,
url=card_url,
)
])
if not pay_rows and fallback_url:
pay_rows.append([
types.InlineKeyboardButton(
text=sbp_button_text,
url=fallback_url,
)
])
message_text = (
"🧪 <b>Тестовый платеж PayPalych</b>\n\n"
f"💰 Сумма: {texts.format_price(amount_kopeks)}\n"
f"🆔 Bill ID: {payment_result['bill_id']}"
)
reply_markup = types.InlineKeyboardMarkup(
inline_keyboard=[
[
types.InlineKeyboardButton(
text="🏦 Перейти к оплате (СБП)",
url=payment_url,
)
],
[
types.InlineKeyboardButton(
text="📊 Проверить статус",
callback_data=f"check_pal24_{payment_result['local_payment_id']}",
)
],
]
)
keyboard_rows = pay_rows + [
[
types.InlineKeyboardButton(
text="📊 Проверить статус",
callback_data=f"check_pal24_{payment_result['local_payment_id']}",
)
],
]
reply_markup = types.InlineKeyboardMarkup(inline_keyboard=keyboard_rows)
await callback.message.answer(message_text, reply_markup=reply_markup, parse_mode="HTML")
await callback.answer("✅ Ссылка на платеж PayPalych отправлена", show_alert=True)
await _refresh_markup()