SSpotify Partner API
Документация

Python: готовые сценарии

Установите библиотеку requests:

pip install requests

Небольшой клиент, который можно скопировать в проект:

import requests


class AveronAPI:
    def __init__(self, token, base_url="https://api.averonpay.app"):
        self.base_url = base_url.rstrip("/")
        self.session = requests.Session()
        self.session.headers.update({
            "Authorization": f"Bearer {token}",
            "Content-Type": "application/json",
        })

    def request(self, method, path, **kwargs):
        response = self.session.request(
            method,
            f"{self.base_url}{path}",
            timeout=kwargs.pop("timeout", 30),
            **kwargs,
        )
        response.raise_for_status()
        return response.json()

    def create_order(self, product_id, item_id, fields, ref=None):
        return self.request("POST", "/orders", json={
            "product_id": product_id,
            "item_id": item_id,
            "ref": ref,
            "fields": fields,
        })

    def get_order(self, order_id):
        return self.request("GET", f"/orders/{order_id}")

    def list_orders(self, **filters):
        return self.request("GET", "/orders", params=filters)

    def order_action(self, order_id, action, **fields):
        return self.request(
            "POST",
            f"/orders/{order_id}/actions/{action}",
            json=fields,
        )

    def cancel_order(self, order_id):
        return self.request("POST", f"/orders/{order_id}/cancel")


api = AveronAPI("pk_partner_key")
print(api.request("GET", "/me"))

Создание Full Auto заказа:

order = api.create_order(
    product_id="spotify_premium_full_auto",
    item_id="spotify_premium_full_auto_1",
    ref="my-order-1001",
    fields={
        "spotify_premium_full_auto_email": "user@example.com",
        "spotify_premium_full_auto_password": "password",
    },
)

print("Номер заказа:", order["order_id"])
print("Статус:", order["status"])

Ожидание завершения заказа через polling:

import time


def wait_until_finished(api, order_id, timeout_seconds=900):
    deadline = time.monotonic() + timeout_seconds

    while time.monotonic() < deadline:
        order = api.get_order(order_id)
        print("Текущий статус:", order["status"])

        if order["status"] in {"done", "failed", "cancelled"}:
            return order

        time.sleep(5)

    raise TimeoutError("Заказ не завершился за отведенное время")


result = wait_until_finished(api, order["order_id"])
print(result)

Получение заказа по своему ref:

orders = api.list_orders(ref="my-order-1001")
print(orders)

Отмена открытого заказа:

cancelled = api.cancel_order(order["order_id"])
print(cancelled)