Хочу добавить платежку CrystalPay в свой проект, юзаю AsyncPayments т.к легче, но есть трабл инвойс создается на нужную сумму все ок, но когда оплачиваешь и нажимаешь на кнопку "Я оплатил" ниче, тупо ничего не происходит. Я уже и делал подробное логгирование ошибки связаной с проверки оплаты инвойса, ошибки нету и понять в чем проблема не могу ( проверял на тестовой оплате ). Помогите плииз 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 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
ToSa, Сделал, теперь ошибка: Created payment - Crystal ID: 715305597_AIamYGFXQJJGBO, Internal ID: D2053667 Error checking payment: too many values to unpack (expected 2)
jingliisa, в коде выше недостаточно информации, чтобы исправить твою ошибку. https://stackoverflow.com/a/67458286 здесь показывается из-за чего такая ошибка может быть
вебхуки и токены надо добавить в скобки 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'] = '' сюда