Skip to main content

MemePay Python SDK

Project description

MemePay SDK для Python

Официальный Python SDK для работы с платежной системой MemePay.

PyPI version Python versions License

Установка

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)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

memepay-0.1.0-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

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

Hashes for memepay-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b74c81a45cc35dcdec260a6ef77d31434e3ecadf9028832d1cc190e79de6b19f
MD5 78de01f8fc0d1e688972b89a6541163f
BLAKE2b-256 d02d795d9a8a4cf30042f264b9c795a8a8ce17da1676c728445347340f365162

See more details on using hashes here.

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

Hashes for memepay-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7a7dd589a647e606ef8407eac6897c5986b653eb14fa709cce0a1d7c9dea51ac
MD5 79c99dff63e64eef739029ede0448ba2
BLAKE2b-256 63adc7582e15aedd111d44c786a2428ae879e3ecc839825ce3007d8c4d85939b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page