API

Webhook

Webhook adalah permintaan HTTP yang dikirimkan FoodSoul ke alamat sistem Anda ketika terjadi suatu peristiwa di akun: pesanan baru, perubahan status, ulasan, dan lainnya.

Langganan dengan alamat dan acara dibuat dengan metode:

POST Membuat langganan webhook

Alamat — URL dari langganan, metode — POST.

Format, tanda tangan, dan pengulangan

Isi permintaan webhook. Setiap permintaan adalah POST dengan Content-Type: application/json ke URL langganan. URL harus diawali dengan https. Header: X-Webhook-Event — kode event, X-Webhook-ID — event_uuid, X-Webhook-Signature — sha256= dan HMAC-SHA256 dari body permintaan asli dalam hex dengan secret cabang (webhooks_subscriptions.generate_secret). Verifikasi signature berdasarkan body asli sebelum parsing JSON: hash_equals(hash_hmac('sha256', $body, $secret), substr($signature, 7)). Tidak ada timestamp dalam signature, channel dilindungi HTTPS. Pengiriman dianggap diterima jika ada respons 2xx dalam 10 detik. Redirect tidak dilakukan. Jika tidak, pengiriman diulang: 7 percobaan, pertama langsung, lalu setelah 1, 5, 15, 60, 180, dan 360 menit. Semua percobaan untuk satu pengiriman memiliki X-Webhook-ID yang sama. Pengiriman ulang dari log (webhooks_logs.resend) menggunakan X-Webhook-ID yang sama — gunakan ID ini untuk mengabaikan pengiriman yang sudah diproses. 20 kegagalan pengiriman berturut-turut akan menonaktifkan langganan (blocked), dan pemilik serta admin sistem akun akan menerima email. webhooks_subscriptions.unblock mengaktifkan langganan kembali. Body berisi data event: data klien, ulasan, dan kartu pesanan dikirimkan secara lengkap. Saldo bonus tidak dikirimkan: saldo ini bersifat umum untuk pool jaringan, dan harus diambil melalui API.

Header

X-Webhook-Eventstringwajib

Contoh: order.created

X-Webhook-IDstringwajib

Contoh: 5f0c6b1e-6a1d-4c1e-9d6b-3a7f0e2b8c41

X-Webhook-Signaturestringwajib

Contoh: sha256=9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08

Peristiwa

  • client.registered
  • client.updated
  • client.bonuses_changed
  • order.created
  • order.status_changed
  • order.payment_status_changed
  • feedback.created
  • courier.assigned
  • item.stop_list_changed
  • branch.work_status_changed

Isi permintaan

object (WebhookPayload)
eventstringwajib

Nilai:client.registeredclient.updatedclient.bonuses_changedorder.createdorder.status_changedorder.payment_status_changedfeedback.createdcourier.assigneditem.stop_list_changedbranch.work_status_changed

Contoh: order.status_changed

event_uuidstringwajib

Contoh: 5f0c6b1e-6a1d-4c1e-9d6b-3a7f0e2b8c41

date_creationstring (DataTimeFormatSQL) wajib

Contoh: 2024-05-02 08:31:16

branch_idintegerwajib

Contoh: 8412

dataoneOfwajib
Salah satu pilihan
object (WebhookDataClientRegistered)

client.registered — nomor telepon baru atau login pertama akun di cabang ini

client_branch_profile_idintegerwajib

Contoh: 730112

namestringdapat bernilai null

Contoh: John Doe

phonestringwajib

Telepon dalam format internasional, tanpa pemformatan

Contoh: +79114579423

genderstringdapat bernilai null

Nilai:womanman

Contoh: man

date_of_birthstringdapat bernilai null

Tanggal lahir dalam format Y-m-d

Contoh: 1982-01-03

Contoh isi

{
  "event": "order.status_changed",
  "event_uuid": "5f0c6b1e-6a1d-4c1e-9d6b-3a7f0e2b8c41",
  "date_creation": "2024-05-02 08:31:16",
  "branch_id": 8412,
  "data": {
    "client_branch_profile_id": 730112,
    "name": "John Doe",
    "phone": "+79114579423",
    "gender": "man",
    "date_of_birth": "1982-01-03"
  }
}

Respon dari sistem Anda

2XX

Diterima

default

Не принято, доставка повторяется