MemePay Python SDK
Project description
MemePay SDK для Python
Официальный Python SDK для работы с платежной системой MemePay.
Установка
pip install memepay
Возможности
- Создание и управление платежами
- Получение информации о пользователе и магазине
- Поддержка синхронного и асинхронного API
- Обработка вебхуков (с интеграцией FastAPI)
- Полностью типизированный код (поддержка mypy)
Начало работы
Синхронный клиент
from memepay import MemePay
# Инициализация клиента
client = MemePay(
api_key="ваш_api_ключ",
shop_id="идентификатор_магазина"
)
# Создание платежа
payment = client.create_payment(
amount=100, # сумма в рублях
method="lolz" # метод оплаты (опционально)
)
print(f"Ссылка для оплаты: {payment.payment_url}")
print(f"ID платежа: {payment.payment_id}")
Асинхронный клиент
import asyncio
from memepay import AsyncMemePay
async def main():
# Инициализация асинхронного клиента
client = AsyncMemePay(
api_key="ваш_api_ключ",
shop_id="идентификатор_магазина"
)
try:
# Создание платежа
payment = await client.create_payment(
amount=100,
method="lolz"
)
print(f"Ссылка для оплаты: {payment.payment_url}")
print(f"ID платежа: {payment.payment_id}")
# Получение доступных методов оплаты
methods = await client.get_store_payment_methods()
print("Доступные методы оплаты:", methods)
finally:
# Не забывайте закрывать клиент
await client.close()
if __name__ == "__main__":
asyncio.run(main())
Обработка вебхуков с FastAPI
SDK предоставляет удобный способ обработки вебхуков с использованием FastAPI:
import os
from memepay import MemePay
from memepay.webhook import MemePayWebhook, WebhookPayload
# Получение API ключа, ID магазина и вебхук-секрета из переменных окружения
API_KEY = "1"
SHOP_ID = "1"
WEBHOOK_SECRET = "mpub_54e25f2ad1a8a966010b"
# Проверка наличия необходимых переменных окружения
if not API_KEY or not SHOP_ID or not WEBHOOK_SECRET:
raise ValueError(
"Необходимо задать переменные окружения: "
"MEMEPAY_API_KEY, MEMEPAY_SHOP_ID, MEMEPAY_WEBHOOK_SECRET"
)
# Инициализация клиента MemePay
memepay_client = MemePay(
api_key=API_KEY,
shop_id=SHOP_ID
)
# Создание FastAPI приложения и обработчика вебхуков в одной строке
app, memepay_webhook = MemePayWebhook.create_app(
webhook_secret=WEBHOOK_SECRET,
title="MemePay Webhook",
description="Пример использования MemePay вебхуков с FastAPI",
version="1.0.0"
)
# Определение функций-обработчиков вебхуков
async def handle_payment_created(payload: WebhookPayload):
"""
Обработчик события создания платежа
Args:
payload: Данные платежа
"""
print(f"🆕 Платеж создан: ID={payload.payment_id}, Сумма={payload.amount}")
# Дополнительная логика...
# Например, сохранение в БД, отправка уведомлений и т.д.
async def handle_payment_completed(payload: WebhookPayload):
"""
Обработчик события успешного завершения платежа
Args:
payload: Данные платежа
"""
print(f"✅ Платеж завершен: ID={payload.payment_id}, Сумма={payload.amount}")
try:
# Получение подробной информации о платеже через API
payment_info = memepay_client.get_payment_info(payload.payment_id)
print(f"Детали платежа: Метод={payment_info.method}, Время создания={payment_info.created_at}")
# Здесь может быть логика для:
# - Обновления статуса заказа
# - Доставки цифрового товара
# - Отправки уведомления пользователю
# и т.д.
except Exception as e:
print(f"Ошибка при обработке платежа: {e}")
async def handle_payment_failed(payload: WebhookPayload):
"""
Обработчик события неудачного платежа
Args:
payload: Данные платежа
"""
print(f"❌ Платеж не удался: ID={payload.payment_id}, Статус={payload.status}")
# Логика обработки неудачного платежа
# Например, обновление статуса заказа, уведомление пользователя
async def handle_webhook_error(error: Exception):
"""
Обработчик ошибок в вебхуках
Args:
error: Объект исключения
"""
print(f"🔥 Ошибка при обработке вебхука: {error}")
# Логирование ошибки, отправка уведомлений администратору и т.д.
# Регистрация обработчиков с помощью нового API
memepay_webhook.register(handle_payment_created, event_type="payment_created")
memepay_webhook.register(handle_payment_completed event_type="payment_completed")
memepay_webhook.register(handle_payment_failed, event_type="payment_failed")
memepay_webhook.register(handle_webhook_error, event_type="error")
# Запуск сервера для тестирования
if __name__ == "__main__":
# Запуск сервера через метод библиотеки
memepay_webhook.start_server_in_thread(app=app, host="127.0.0.1", port=8000)
# Держим скрипт активным пока сервер работает
try:
import time
while True:
time.sleep(1)
except KeyboardInterrupt:
print("\nСервер остановлен")
Дополнительные возможности
Получение информации о пользователе
user_info = client.get_user_info()
print(f"Баланс: {user_info.balance}")
print(f"Email: {user_info.email}")
Получение информации о платеже
payment_info = client.get_payment_info("id_платежа")
print(f"Статус: {payment_info.status}")
print(f"Сумма: {payment_info.amount}")
Требования
- Python 3.7+
- requests>=2.25.0 (для синхронного API)
- httpx>=0.23.0 (для асинхронного API)
Документация
Полная документация доступна по адресу: https://memepay.lol/docs
Лицензия
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
memepay-0.1.0.tar.gz
(13.7 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
memepay-0.1.0-py3-none-any.whl
(13.1 kB
view details)
File details
Details for the file memepay-0.1.0.tar.gz.
File metadata
- Download URL: memepay-0.1.0.tar.gz
- Upload date:
- Size: 13.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b74c81a45cc35dcdec260a6ef77d31434e3ecadf9028832d1cc190e79de6b19f
|
|
| MD5 |
78de01f8fc0d1e688972b89a6541163f
|
|
| BLAKE2b-256 |
d02d795d9a8a4cf30042f264b9c795a8a8ce17da1676c728445347340f365162
|
File details
Details for the file memepay-0.1.0-py3-none-any.whl.
File metadata
- Download URL: memepay-0.1.0-py3-none-any.whl
- Upload date:
- Size: 13.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a7dd589a647e606ef8407eac6897c5986b653eb14fa709cce0a1d7c9dea51ac
|
|
| MD5 |
79c99dff63e64eef739029ede0448ba2
|
|
| BLAKE2b-256 |
63adc7582e15aedd111d44c786a2428ae879e3ecc839825ce3007d8c4d85939b
|