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}")
# Конвертация валют
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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.