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}")

# Конвертация валют
conversion = client.convert(
    amount=100,
    from_currency="USD",
    to_currency="RUB"
)
print(f"100 USD = {conversion.amount} RUB")

Асинхронный клиент

import asyncio
from memepay import AsyncMemePay

async def main():
    # Инициализация асинхронного клиента
    client = AsyncMemePay(
        api_key="ваш_апи_ключ",
        shop_id="идентификатор_магазина"
    )
    
    try:
        # Создание платежа
        payment = await client.create_payment(
            amount=100,
            method="lolz"
        )
        
        print(f"Ссылка для оплаты: {payment.payment_url}")
        print(f"ID платежа: {payment.payment_id}")
        
        # Конвертация валют
        conversion = await client.convert(
            amount=100,
            from_currency="USD",
            to_currency="RUB"
        )
        print(f"100 USD = {conversion.amount} RUB")
        
        # Получение доступных методов оплаты для магазина
        store_methods = await client.get_store_payment_methods()
        print("Доступные методы оплаты для магазина:", store_methods)
        
        # Получение всех методов оплаты
        payment_methods = await client.get_payment_methods()
        print(f"Количество стандартных методов: {len(payment_methods.default)}")
        print(f"Количество партнерских методов: {len(payment_methods.partner)}")
        
        # Получение информации о конкретном методе
        sbp = payment_methods.get("sbp")
        if sbp:
            print(f"СБП: мин. {sbp.min}₽, макс. {sbp.max}₽, комиссия {sbp.commission}%")
        
        # Получение курсов валют
        rates = await client.get_rates()
        print(f"Курс USD к RUB: {rates.rates.get('RUB')}")
        
        # Получение информации о пользователе
        user = await client.get_user_info()
        print(f"Баланс: {user.balance} руб.")
    
    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}")

Получение курсов валют

rates = client.get_rates()
print(f"Базовая валюта: {rates.currency}")
print(f"Курс USD к RUB: {rates.rates['RUB']}")
print(f"Последнее обновление: {rates.last_updated}")

Перевод средств другому пользователю

transfer = client.transfer(amount=100, username="получатель")
print(f"Перевод выполнен: {transfer.recipient}")
print(f"Сумма: {transfer.amount}")
print(f"Комиссия: {transfer.commission}")
print(f"Новый баланс: {transfer.new_balance}")

Получение доступных методов оплаты

methods = client.get_payment_methods()
print("Стандартные методы оплаты:")
for method_id, info in methods.default.items():
    print(f" - {method_id}: мин. {info.min}₽, макс. {info.max}₽, комиссия {info.commission}%")
    
print("Партнерские методы оплаты:")
for method_id, info in methods.partner.items():
    print(f" - {method_id}: мин. {info.min}₽, макс. {info.max}₽, комиссия {info.commission}%")

# Получение информации о конкретном методе оплаты через .get()
sbp_method = methods.get("sbp")
if sbp_method:
    print(f"СБП: мин. {sbp_method.min}₽, макс. {sbp_method.max}₽, комиссия {sbp_method.commission}%")

# Проверка доступности метода
if methods.get("lolz"):
    print("Метод Lolz доступен")

Требования

  • 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.5.tar.gz (16.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.5-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

Details for the file memepay-0.1.5.tar.gz.

File metadata

  • Download URL: memepay-0.1.5.tar.gz
  • Upload date:
  • Size: 16.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.5.tar.gz
Algorithm Hash digest
SHA256 188b42d9b436e398841c4f673ddcb47fc8c5cfccddc29a4028cdafbc52e9c0f3
MD5 aa6c9f4bc651413bfbee1dadff87092d
BLAKE2b-256 4f60a42f78cc91e35544347794c9f869dead94fe49695e1d51b6549cf2fa8680

See more details on using hashes here.

File details

Details for the file memepay-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: memepay-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 15.3 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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 1cb50822968960fe90067357f54916d33d1c333ef854aebc10d12aeb63b46829
MD5 7f491405c9ac3a6cf899e5be37d74c59
BLAKE2b-256 3466481613b7aa797a8bbccbcccbf5216fc1d2c67edd9f480bd01f36cdd0272f

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