Refactor payment method ID extraction for improved reliability
- Updated the logic for extracting payment method IDs from callback data to handle cases with multiple segments, ensuring more robust parsing. - Enhanced the consistency of ID retrieval across different payment method handlers, improving overall code reliability and user experience.
This commit is contained in:
@@ -654,7 +654,8 @@ async def payment_method_delete_confirm(callback: types.CallbackQuery, settings:
|
|||||||
current_lang = i18n_data.get("current_language", settings.DEFAULT_LANGUAGE)
|
current_lang = i18n_data.get("current_language", settings.DEFAULT_LANGUAGE)
|
||||||
i18n: Optional[JsonI18n] = i18n_data.get("i18n_instance")
|
i18n: Optional[JsonI18n] = i18n_data.get("i18n_instance")
|
||||||
_ = lambda key, **kwargs: i18n.gettext(current_lang, key, **kwargs) if i18n else key
|
_ = lambda key, **kwargs: i18n.gettext(current_lang, key, **kwargs) if i18n else key
|
||||||
pm_id = callback.data.split(":", 1)[-1] if ":" in callback.data else ""
|
parts = callback.data.split(":", 2)
|
||||||
|
pm_id = parts[2] if len(parts) >= 3 else ""
|
||||||
await callback.message.edit_text(_("payment_method_delete_confirm"), reply_markup=get_payment_method_delete_confirm_keyboard(pm_id, current_lang, i18n))
|
await callback.message.edit_text(_("payment_method_delete_confirm"), reply_markup=get_payment_method_delete_confirm_keyboard(pm_id, current_lang, i18n))
|
||||||
try:
|
try:
|
||||||
await callback.answer()
|
await callback.answer()
|
||||||
@@ -668,7 +669,8 @@ async def payment_method_delete(callback: types.CallbackQuery, settings: Setting
|
|||||||
i18n: Optional[JsonI18n] = i18n_data.get("i18n_instance")
|
i18n: Optional[JsonI18n] = i18n_data.get("i18n_instance")
|
||||||
_ = lambda key, **kwargs: i18n.gettext(current_lang, key, **kwargs) if i18n else key
|
_ = lambda key, **kwargs: i18n.gettext(current_lang, key, **kwargs) if i18n else key
|
||||||
# Try to parse specific method id for multi-card deletion
|
# Try to parse specific method id for multi-card deletion
|
||||||
pm_id_raw = callback.data.split(":", 1)[-1] if ":" in callback.data else ""
|
parts = callback.data.split(":", 2)
|
||||||
|
pm_id_raw = parts[2] if len(parts) >= 3 else ""
|
||||||
deleted = False
|
deleted = False
|
||||||
# Attempt multi-card deletion first
|
# Attempt multi-card deletion first
|
||||||
try:
|
try:
|
||||||
@@ -737,7 +739,8 @@ async def payment_method_view(callback: types.CallbackQuery, settings: Settings,
|
|||||||
if not methods:
|
if not methods:
|
||||||
await callback.answer(_("payment_method_none"), show_alert=True)
|
await callback.answer(_("payment_method_none"), show_alert=True)
|
||||||
return
|
return
|
||||||
pm_id = callback.data.split(":", 1)[-1] if ":" in callback.data else str(methods[0].method_id)
|
parts = callback.data.split(":", 2)
|
||||||
|
pm_id = parts[2] if len(parts) >= 3 else str(methods[0].method_id)
|
||||||
# Map:
|
# Map:
|
||||||
sel = next((m for m in methods if str(m.method_id) == pm_id or m.provider_payment_method_id == pm_id), methods[0])
|
sel = next((m for m in methods if str(m.method_id) == pm_id or m.provider_payment_method_id == pm_id), methods[0])
|
||||||
title = _("payment_method_card_title", network=sel.card_network or "Card", last4=sel.card_last4 or "????")
|
title = _("payment_method_card_title", network=sel.card_network or "Card", last4=sel.card_last4 or "????")
|
||||||
|
|||||||
Reference in New Issue
Block a user