Webhook
Webhook adalah notifikasi bertanda tangan opsional ke penerima HTTPS Anda. Kueri status tetap tersedia; webhook tidak wajib untuk memakai API.
Akun API saya
Aktifkan penerima di akun API. HTTPS publik/443 wajib; pengalihan, parameter kueri, dan kredensial URL tidak didukung. Perubahan URL, status aktif, atau rahasia tanda tangan membatalkan acara lama tertunda. Operasi historis tidak dikirim ulang.
Hanya operasi API baru yang didukung diamati, bukan setiap respons HTTP atau pesanan situs. Notifikasi berisi ID aman dan status, bukan kunci API/kata sandi proxy. timestamp adalah pengamatan UTC lokal; worker per menit dapat menimbulkan jeda.
Jenis acara
| Tipe | Status |
|---|---|
webhook.test | test |
order.accepted | accepted |
order.delivered | delivered |
order.action_required | action_required |
order.canceled | canceled |
renewal.completed | completed |
extra_login.operation.completed | completed |
extra_login.operation.rejected | rejected |
extra_login.operation.action_required | action_required |
proxy_ip.operation.completed | completed |
proxy_ip.operation.rejected | rejected |
proxy_ip.operation.action_required | action_required |
proxy_ip.authorization.revoked | revoked |
residential_list.operation.completed | completed |
residential_list.operation.rejected | rejected |
residential_list.operation.action_required | action_required |
auto_renewal.configuration.completed | completed |
{
"id": "evt_0123456789abcdef0123456789abcdef",
"type": "order.delivered",
"timestamp": "2026-10-26T12:00:00+00:00",
"api_version": "1",
"data": {
"account_id": 12345,
"order_id": 12345,
"number": "1000012345",
"product": "proxy",
"state": "delivered",
"quantity": 1,
"mode": null,
"gb": null,
"reason_code": null,
"provider_live_check": false
}
}Verifikasi tanda tangan
Verifikasi webhook-id, webhook-timestamp, dan webhook-signature dengan rahasia webhook terpisah. Hapus whsec_, dekode Base64, tandatangani framing body mentah di bawah memakai HMAC-SHA256, lalu bandingkan dalam waktu konstan. Terapkan toleransi 300 detik.
signed_content = webhook_id + "." + webhook_timestamp + "." + raw_body
webhook_signature = "v1," + Base64(HMAC_SHA256(decoded_secret, signed_content))Pengiriman & percobaan ulang
Proses tiap ID acara secara idempoten. Notifikasi dapat berulang dan tidak berurutan. Balas 2xx setelah diterima. Maksimal 7 upaya dengan jeda 1 menit, 5 menit, 30 menit, 2 jam, 6 jam, dan 24 jam. Hanya notifikasi diulang, bukan operasi bisnis.
HTTP 2xx mengonfirmasi pengiriman. 408/429/5xx dan gangguan jaringan sementara dapat diulang; 4xx lain dan pengalihan gagal permanen. Percobaan ulang mempertahankan ID dan isi dengan waktu tanda tangan baru.