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.1.tar.gz (13.8 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.1-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: h1stars_payment_sdk-1.0.1.tar.gz
  • Upload date:
  • Size: 13.8 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.1.tar.gz
Algorithm Hash digest
SHA256 2e03b61a2aab901692f6b84cb277871b3f12d97731b1fc75d7acda78748bd9ab
MD5 2173106c187a0ef7ef86400183f16164
BLAKE2b-256 fe5a81ead1b8805fac3ee5fb387cfd1aab7fc8c07c30937078f7bf63aa05721a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for h1stars_payment_sdk-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8d8b1de32552a10a3e43f8ed98ce74064cacf106cd88d239accfbef5d7addfcb
MD5 c3ccb3346424b798cb366e787040ffd7
BLAKE2b-256 820881e873da038bd99dca31794d0b8352abd89eee49fcba1330e30a4ea56be0

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