Ana içeriğe atla

Webhook’lar

Hesabinizda olaylar gerceklestiginde gercek zamanli HTTP POST bildirimleri almak icin bir webhook URL’si yapilandirin.

Desteklenen olaylar

OlayAciklama
order.filledEnerji siparisi tamamlandi
order.failedEnerji siparisi basarisiz oldu
deposit.confirmedYatirma bakiyeye eklendi
invoice.paidFatura odemesi alindi
invoice.delegatedFatura enerjisi devredildi
smart_mode.transferAkilli Mod transferi islendi
withdrawal.completedCekim gonderildi

Webhook yuku

{
  "event": "order.filled",
  "data": {
    "order_id": 1234,
    "address": "TAddress...",
    "energy_amount": 65000,
    "price_trx": "2.75"
  },
  "timestamp": "2026-03-04T12:00:00Z"
}

Gereksinimler

  • URL HTTPS kullanmalidir
  • 10 saniye icinde 2xx durum koduyla yanit vermeli
  • Basarisiz teslimler, ustel geri cekilme ile 3 kez yeniden denenir

Webhook imzalarini dogrulama

Her webhook istegi, HMAC-SHA256 imzasi iceren bir X-Webhook-Signature basligi icerir. Istegin TronRental’den geldigini dogrulamak icin bunu kullanin. Imza, webhook siriniz kullanilarak ham istek govdesi uzerinden hesaplanir (webhook’unuzu yapilandirdiginizda dondurulur).
import hmac
import hashlib

def verify_webhook(payload: bytes, signature: str, secret: str) -> bool:
    expected = hmac.new(
        secret.encode(),
        payload,
        hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, signature)

# In your webhook handler:
# payload = request.body  (raw bytes)
# signature = request.headers["X-Webhook-Signature"]
# secret = "whsec_abc123..."  (from configure response)
# if not verify_webhook(payload, signature, secret):
#     return Response(status_code=401)
Webhook verilerini islemeden once imzayi her zaman dogrulayin. Zamanlama saldirilarina karsi sabit zamanli karsilastirma (hmac.compare_digest / crypto.timingSafeEqual) kullanin.
Webhook URL’leri localhost, 127.0.0.1 veya diger ozel adreslere isaret edemez.