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 Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

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

memepay-0.1.4-py3-none-any.whl (15.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: memepay-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 15.2 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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 ac987b3ade20be915602c3178a49187d0bcda53c748a7276bf99f6ff12d558d5
MD5 92b662e8c3402652b3e6b4bf2f7a47bc
BLAKE2b-256 3d76d2e05dea80747d81c402c2266262b5248aab5765ef47adea7a4c25ba6cae

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