Skip to main content

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

Metadata

Release files for memepay 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for memepay 0.1.5
File Size Uploaded Provenance Actions
memepay-0.1.5.tar.gz 16.7 kB Without provenance Details for memepay-0.1.5.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for memepay 0.1.5
File Interpreter ABI Platform Actions
memepay-0.1.5-py3-none-any.whl Python 3 none any Details for memepay-0.1.5-py3-none-any.whl

Total release size: 32.0 kB

Release files / memepay-0.1.5.tar.gz

Download URL memepay-0.1.5.tar.gz
Size 16.7 kB
Tags Source
SHA-256 checksum
How to use checksums
188b42d9b436e398841c4f673ddcb47fc8c5cfccddc29a4028cdafbc52e9c0f3
BLAKE2b-256 checksum
How to use checksums
4f60a42f78cc91e35544347794c9f869dead94fe49695e1d51b6549cf2fa8680
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.0

Release files / memepay-0.1.5-py3-none-any.whl

Download URL memepay-0.1.5-py3-none-any.whl
Size 15.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1cb50822968960fe90067357f54916d33d1c333ef854aebc10d12aeb63b46829
BLAKE2b-256 checksum
How to use checksums
3466481613b7aa797a8bbccbcccbf5216fc1d2c67edd9f480bd01f36cdd0272f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.0

Security for memepay 0.1.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page