Skip to main content

Python SDK for H1Stars Payment Gateway

Project description

H1Stars Payment Gateway Python SDK

Официальный асинхронный Python SDK для интеграции с платежным шлюзом H1Stars.

Полностью асинхронный - максимальная производительность 🚀 Простая интеграция - всего 5 минут до первого платежа 🔒 Безопасный - проверка webhook подписей, защищенные соединения 📱 Современный - Python 3.8+, aiohttp, type hints

🚀 Быстрая установка

pip install h1stars-payment-sdk

# Для примеров с FastAPI
pip install h1stars-payment-sdk[examples]

📖 Использование

Инициализация клиента

import asyncio
from h1stars_sdk import H1StarsClient

# Используйте async context manager для автоматического управления сессией
async with H1StarsClient(api_key="your_api_key_here") as client:
    # Ваш код здесь
    pass

Создание платежа

async def create_payment_example():
    async with H1StarsClient(api_key="your_api_key_here") as client:
        try:
            payment = await client.create_payment(
                amount=100.50,
                description="Покупка звезд в игре",
                user_id="user123",
                callback_url="https://yoursite.com/webhook",
                return_url="https://yoursite.com/success"
            )

            print(f"Payment ID: {payment['payment_id']}")
            print(f"Payment URL: {payment['payment_url']}")

            # Отправьте пользователя на payment_url для оплаты

        except Exception as e:
            print(f"Ошибка создания платежа: {e}")

# Запуск
asyncio.run(create_payment_example())

Параллельные платежи

async def multiple_payments():
    async with H1StarsClient(api_key="your_api_key_here") as client:
        # Создаем несколько платежей параллельно
        tasks = [
            client.create_payment(
                amount=100.0 + i * 10,
                description=f"Платеж #{i+1}",
                user_id=f"user_{i+1}"
            )
            for i in range(5)
        ]

        payments = await asyncio.gather(*tasks)
        print(f"Создано {len(payments)} платежей за раз!")

Проверка статуса платежа

async def check_payment_status():
    async with H1StarsClient(api_key="your_api_key_here") as client:
        try:
            payment_status = await client.get_payment("pay_1234567890")
            print(f"Статус: {payment_status['status']}")

            if payment_status['status'] == 'completed':
                print("Платеж успешно оплачен!")

        except Exception as e:
            print(f"Ошибка получения статуса: {e}")

FastAPI Webhook Handler

from fastapi import FastAPI, Request, HTTPException
from h1stars_sdk import H1StarsClient
import json

app = FastAPI()

@app.post("/webhook")
async def handle_webhook(request: Request):
    # Получаем данные webhook
    payload = await request.body()
    payload_str = payload.decode('utf-8')
    signature = request.headers.get('X-Signature')

    # Проверяем подпись
    if H1StarsClient.verify_webhook_signature(payload_str, signature, "your_webhook_secret"):
        webhook_data = json.loads(payload_str)

        if webhook_data['event'] == 'payment.completed':
            payment_id = webhook_data['payment_id']
            print(f"Платеж {payment_id} успешно оплачен!")

            # Ваша асинхронная логика обработки
            await process_successful_payment(webhook_data)

        return {"status": "ok"}
    else:
        raise HTTPException(status_code=400, detail="Invalid signature")

async def process_successful_payment(webhook_data):
    # Ваша логика обработки платежа
    pass

Работа с партнерским API

async def partner_api_example():
    async with H1StarsClient(api_key="your_api_key_here") as client:
        # Параллельное получение данных
        balance_task = client.get_partner_balance()
        transactions_task = client.get_partner_transactions(limit=10)

        balance, transactions = await asyncio.gather(
            balance_task,
            transactions_task
        )

        print(f"Доступно для вывода: {balance['available_for_withdrawal']} RUB")
        print(f"Транзакций: {len(transactions.get('transactions', []))}")

        # Создание заявки на вывод
        if balance['available_for_withdrawal'] >= 1000:
            withdrawal = await client.create_withdrawal(
                amount=1000.00,
                payment_method="card",
                card_number="4111111111111111",
                cardholder_name="IVAN PETROV"
            )
            print(f"Заявка на вывод создана: {withdrawal.get('status')}")

🔧 Обработка ошибок

from h1stars_sdk import (
    H1StarsAuthError,
    H1StarsValidationError,
    H1StarsNotFoundError,
    H1StarsRateLimitError,
    H1StarsServerError
)

try:
    payment = client.create_payment(
        amount=100.50,
        description="Test payment",
        user_id="user123"
    )
except H1StarsAuthError:
    print("Неверный API ключ")
except H1StarsValidationError:
    print("Некорректные параметры запроса")
except H1StarsRateLimitError:
    print("Превышен лимит запросов")
except H1StarsServerError:
    print("Ошибка сервера")

📋 Статусы платежей

  • pending - Ожидает оплаты
  • completed - Успешно оплачен
  • expired - Истек срок оплаты (15 минут)
  • inactive - Деактивирован

🔐 Безопасность

  • Всегда проверяйте подписи webhook уведомлений
  • Используйте HTTPS для всех callback URL
  • Не передавайте API ключи в клиентском коде
  • Храните webhook секреты в безопасном месте

📞 Поддержка

📄 Лицензия

MIT License

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

h1stars_payment_sdk-1.0.0.tar.gz (14.1 kB view details)

Uploaded Source

Built Distribution

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

h1stars_payment_sdk-1.0.0-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file h1stars_payment_sdk-1.0.0.tar.gz.

File metadata

  • Download URL: h1stars_payment_sdk-1.0.0.tar.gz
  • Upload date:
  • Size: 14.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for h1stars_payment_sdk-1.0.0.tar.gz
Algorithm Hash digest
SHA256 5659e2f6765d52c4d2fce556dbad40d3d9bc1859e6159864ab281c871d08aabd
MD5 0417e7439781ee5c6703e222ffd7880d
BLAKE2b-256 cd897e219c1d0727222c223916e5cd1a5ae8690042164b6834b155725b194af9

See more details on using hashes here.

File details

Details for the file h1stars_payment_sdk-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for h1stars_payment_sdk-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 937c8fa49ca1d7532e1d090ecccad8d6b8dc1a10c216bcfe4e3890915e69f4bb
MD5 c6fcdf889aab6fd0f8a86ed9e12be159
BLAKE2b-256 f4038a713117d168644bd7cdd71a9a73ff98c6754876ce1cd226623523ed85e5

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