Package: crystalpayio
О библиотеке 💙БиблиотекаCrystalPayIOпредоставит удобное использование и интеграциюCrystalPayAPIв ваши проекты.[!TIP]Документация CrystalPAY:https://docs.crystalpay.io/В данном репозитории вы найдете способы установки и использования библиотеки.
Если вы обнаружите баги или какие-либо проблемы при использовании прошу отписать втелеграм. Данный модуль будет поддерживаться и обновляться. Спасибо, хорошего настроения![!NOTE]
Чтобы получитьAUTH_LOGIN&AUTH_SECRETперейдите втелеграм ботаи создайте новую кассу.В настройках можете включить тестовые платежи.Установка 🧡Установка, используя пакетный менеджер pip$ pip install crystalpayioУстановка с GitHub(требуетсяgit)$ git clone https://github.com/Fsoky/crystalpayio
$ cd crystalpayio
$ python setup.py installИли$ pip install git+https://github.com/Fsoky/crystalpayioПримеры использования 💜ШаблонimportasynciofromcrystalpayioimportCrystalPayIOasyncdefmain()->None:asyncwithCrystalPayIO("AUTH_LOGIN","AUTH_SECRET")ascrystal:...if__name__=="__main__":asyncio.run(main())Доступные методыcheckout- Кассаpayment- Платежиinvoice- Инвойсы (чеки)payoff- Вывод средствticker- Доступные валюты и курсhistory- История платежей/выводов/общаяasyncwithCrystalPayIO("AUTH_LOGIN","AUTH_SECRET")ascrystal:# Каждый метод хранится в свойстве, например касса:checkout=awaitcrystal.checkout.me()Пример интеграции в телеграм-бота (aiogram 3.x) ❤importasynciofromaiogramimportRouter,Bot,Dispatcher,Ffromaiogram.typesimportMessage,CallbackQuery,InlineKeyboardMarkup,InlineKeyboardButtonfromaiogram.filtersimportCommandStartfromcrystalpayioimportCrystalPayIOrouter=Router()crystal=CrystalPayIO("AUTH_LOGIN","AUTH_SECRET")asyncdefcreate_invoice()->tuple:invoice=awaitcrystal.invoice.create(100,# Цена5,# Время жизни чека (в минутах)amount_currency="RUB"# Валюта)return(invoice.url,invoice.id)asyncdefinvoice_handler(id:str,message:Message)->None:whileTrue:invoice=awaitcrystal.invoice.get(id)ifinvoice.state!="notpayed":awaitmessage.answer("Счёт успешно оплачен!")awaitasyncio.sleep(15)# Задержка@router.message(CommandStart())asyncdefshow_goods(message:Message)->None:awaitmessage.answer("🎃 Тыква - 100 РУБ.",reply_markup=InlineKeyboardMarkup(inline_keyboard=[[InlineKeyboardButton(text="КУПИТЬ",callback_data="buy")]]))@router.callback_query(F.data=="buy")asyncdefbuy_handler(query:CallbackQuery)->None:invoice_task=asyncio.create_task(create_invoice())invoice_result=awaitinvoice_taskawaitquery.message.answer(f"Перейди по ссылке и оплати:{invoice_result[0]}")awaitquery.answer()asyncio.create_task(invoice_handler(invoice_result[1],query.message))asyncdefmain()->None:bot=Bot("TOKEN")dp=Dispatcher()dp.include_router(router)awaitbot.delete_webhook(True)awaitdp.start_polling(bot)if__name__=="__main__":asyncio.run(main())Пример использования Webhook'ов 🕸importasynciofromcrystalpayioimportCrystalPayIO,WebhookManager,PaymentEventfromfastapiimportFastAPI# pip install fastapi[all]importuvicorn# pip install uvicornWEBHOOK_URL="https://xxx-xxx-xxx.ngrok-free.app"# ngrok urlWEBHOOK_ENDPOINT="/my-endpoint"app=FastAPI()crystal=CrystalPayIO("AUTH_LOGIN","AUTH_SECRET")wm=WebhookManager(app)wm.register_webhook_endpoint(WEBHOOK_ENDPOINT)# Регистрируем путь к вебхуку@wm.successfull_payment()asyncdefhandle_successfull_event(event:PaymentEvent)->None:print(event)asyncdefcreate_invoice()->None:order=awaitcrystal.invoice.create(10,# Сумма (в рублях)5,# Время жизни чека (в минутах)callback_url=f"{WEBHOOK_URL}{WEBHOOK_ENDPOINT}")print(order.url)if__name__=="__main__":asyncio.run(create_invoice())# Запуск функцииuvicorn.run("test:app")