Загрузка...

Проблема с либой AsyncPayments

Тема в разделе Python создана пользователем jingliisa 8 янв 2025. 199 просмотров

  1. jingliisa
    jingliisa Автор темы 8 янв 2025 Заблокирован(а) 0 23 дек 2024
    Хочу добавить платежку CrystalPay в свой проект, юзаю AsyncPayments т.к легче, но есть трабл инвойс создается на нужную сумму все ок, но когда оплачиваешь и нажимаешь на кнопку "Я оплатил" ниче, тупо ничего не происходит. Я уже и делал подробное логгирование ошибки связаной с проверки оплаты инвойса, ошибки нету и понять в чем проблема не могу ( проверял на тестовой оплате ). Помогите плииз
    Python
    from bot_start import bot
    from config import settings, payments_settings
    from src.database.requests import User, Deposit
    from aiogram.types import Message, CallbackQuery
    from AsyncPayments.crystalPay import AsyncCrystalPay
    from src.misc.translator import Translator

    try:
    crystal = AsyncCrystalPay(
    login=payments_settings['crystal_login'],
    secret=payments_settings['crystal_token'],
    salt=""
    )
    except Exception as e:
    print('CrystalPay не подключен:', e)
    payments_settings['crystal_login'] = ''
    payments_settings['crystal_token'] = ''

    async def create_bill_crystal(message: Message, amount: int) -> dict:
    """Creates a CrystalPay payment invoice."""
    try:
    bill_id = await Deposit(message.from_user.id).create_deposit('CrystalPay', amount)


    invoice = await crystal.create_payment(
    amount=amount,
    description=f"Пополнение баланса (ID: {message.from_user.id})"
    )

    return {'bill_id': bill_id, 'invoice_url': invoice.url}

    except Exception as error:
    payments_settings['crystal_login'] = ''
    payments_settings['crystal_token'] = ''

    await message.answer(
    text=await Translator(message.from_user.id).get_message('paymentMethodUnavailableMessage')
    )
    await bot.send_message(
    chat_id=settings['channel_logs'],
    text=f'<b>LOG</b> | | CrystalPay | Произошла ошибка при попытке создать счёт\n\n<code>{error}</code>'
    )
    print('CrystalPay | Произошла ошибка\n', error)
    return None

    async def check_bill_crystal(query: CallbackQuery, bill_id: str) -> bool:
    """Checks status of a CrystalPay payment."""
    try:
    invoice = await crystal.get_payment_info(bill_id)
    deposit = await Deposit(query.from_user.id).get_deposit(bill_id)

    if invoice.state == "payed":
    if deposit.success:
    await query.message.delete()
    await query.answer(
    text=await Translator(query.from_user.id).get_message('youAlreadyPaidBillQuery'),
    show_alert=True
    )
    return True

    deposit.success = True
    await deposit.save()

    await User(query.from_user.id).change_balance(deposit.amount)

    await bot.send_message(
    chat_id=settings['channel_logs'],
    text=f' Новое пополнение (UID: <code>{deposit.uid}</code>)\n\n'
    f' Метод: <b>{deposit.method}</b>\n'
    f' Сумма: <b>{deposit.amount} RUB</b>\n'
    f' Время: <code>{deposit.datetime}</code>'
    )

    await query.message.delete()
    await query.answer(
    text=await Translator(query.from_user.id).get_message('billPaidSuccessfullyQuery'),
    show_alert=True
    )
    return False

    await query.answer(
    text=await Translator(query.from_user.id).get_message('billErrorQuery'),
    show_alert=True
    )
    return False

    except Exception as error:
    await query.answer(
    text=await Translator(query.from_user.id).get_message('billErrorQuery'),
    show_alert=True
    )
    print(f"CrystalPay check error: {error}")
    return False
     
    8 янв 2025 Изменено
  2. ToSa
    ToSa 8 янв 2025 гость, боже, храни кьют-рок. :beer::beer::beer: 24 040 18 дек 2021
    вы уверены, что в принципе колбек на нее добавили?
     
    1. Посмотреть предыдущие комментарии (5)
    2. K1p1k
      ToSa, у меня щас тоже самое, работала, работала и перестала
    3. ToSa
      K1p1k, без кода ничем не смогу помочь
  3. АртёмДзюба
    АртёмДзюба 8 янв 2025 Заблокирован(а) 2104 25 ноя 2020
    вебхуки и токены надо добавить в скобки
    crystal = AsyncCrystalPay(
    login=payments_settings['crystal_login'], сюда
    secret=payments_settings['crystal_token'], сюда
    salt=""
    )
    except Exception as e:
    print('CrystalPay не подключен:', e) сюда
    payments_settings['crystal_login'] = '' сюда
    payments_settings['crystal_token'] = '' сюда
     
    1. jingliisa Автор темы
      АртёмДзюба, логин и токен берутся с конфига, а salt я удалил навсякий
  4. рандомли
    рандомли 8 янв 2025 Заблокирован(а) 836 23 апр 2023
    так ты самостоятельно генерируешь bill_id, а кассе нужен их внутренний id чтобы найти платёж
     
Top
Загрузка...