Webhook’lar
Hesabinizda olaylar gerceklestiginde gercek zamanli HTTP POST bildirimleri almak icin bir webhook URL’si yapilandirin.
Desteklenen olaylar
| Olay | Aciklama |
|---|
order.filled | Enerji siparisi tamamlandi |
order.failed | Enerji siparisi basarisiz oldu |
deposit.confirmed | Yatirma bakiyeye eklendi |
invoice.paid | Fatura odemesi alindi |
invoice.delegated | Fatura enerjisi devredildi |
smart_mode.transfer | Akilli Mod transferi islendi |
withdrawal.completed | Cekim 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.