Документация
Webhook партнера
Установить webhook:
POST /webhook
Пример:
import requests
BASE_URL = "https://api.averonpay.app"
TOKEN = "pk_partner_key"
response = requests.post(
f"{BASE_URL}/webhook",
headers={"Authorization": f"Bearer {TOKEN}"},
json={"url": "https://partner-site.example/hook"},
timeout=20,
)
print(response.json())
Получить текущую настройку:
GET /webhook
Пример:
import requests
BASE_URL = "https://api.averonpay.app"
TOKEN = "pk_partner_key"
response = requests.get(
f"{BASE_URL}/webhook",
headers={"Authorization": f"Bearer {TOKEN}"},
timeout=20,
)
print(response.json())
Webhook отправляется при изменении статуса заказа.
Payload:
{
"event": "order.status",
"order_id": 1,
"ref": "order-1001",
"product_id": "spotify_premium_full_auto",
"item_id": "spotify_premium_full_auto_1",
"status": "pairing",
"pair_url": "https://...",
"error": "",
"reason": "",
"result": null,
"refunded": false,
"price": 2.2
}
Если заказ отменен или не выполнен, reason содержит причину, когда она доступна.
Каждый webhook содержит header:
X-Signature: sha256=...
Подпись - это HMAC-SHA256 от raw body с использованием webhook secret, который выдается при настройке webhook через POST /webhook.
Пример обработчика webhook на Python с Flask:
import hashlib
import hmac
from flask import Flask, abort, request
app = Flask(__name__)
WEBHOOK_SECRET = "secret_from_post_webhook"
@app.post("/averon-webhook")
def averon_webhook():
raw_body = request.get_data()
received = request.headers.get("X-Signature", "")
expected = "sha256=" + hmac.new(
WEBHOOK_SECRET.encode(),
raw_body,
hashlib.sha256,
).hexdigest()
if not hmac.compare_digest(received, expected):
abort(401)
event = request.get_json()
order_id = event["order_id"]
status = event["status"]
print(f"Заказ #{order_id}: {status}")
if status == "pairing":
print("Откройте ссылку:", event["pair_url"])
elif status in {"failed", "cancelled"}:
print("Причина:", event.get("reason"))
return {"ok": True}
if __name__ == "__main__":
app.run(port=8000)
Публичный URL этого обработчика, например https://partner-site.example/averon-webhook, передайте в POST /webhook.