API Reference
Webhooks

Webhooks

Webhooks cho phép hệ thống của bạn nhận thông báo realtime khi có sự kiện trong XCaphe — thay vì phải polling liên tục.

Webhooks đang trong giai đoạn beta. Liên hệ support@xcaphe.vn để kích hoạt cho tài khoản của bạn.


Cấu hình webhook

  1. Vào Cài đặt → Webhooks → + Thêm endpoint
  2. Điền URL endpoint của bạn (phải là HTTPS)
  3. Chọn các sự kiện muốn nhận
  4. Lưu → XCaphe gửi POST test request để xác nhận

Cấu trúc payload

Mọi webhook event đều có cấu trúc chung:

{
  "event": "order.completed",
  "timestamp": "2025-03-01T08:30:00+07:00",
  "orgId": "uuid",
  "branchId": "uuid",
  "data": {
    // Dữ liệu cụ thể của event
  }
}

Danh sách sự kiện

Đơn hàng

EventMô tả
order.createdĐơn hàng mới được tạo
order.confirmedĐơn được xác nhận
order.preparingĐơn chuyển sang đang pha chế
order.readyĐơn hoàn thành pha chế, chờ khách
order.completedĐơn hoàn thành, kho đã trừ
order.cancelledĐơn bị huỷ

Thanh toán

EventMô tả
payment.paidThanh toán thành công
payment.refundedĐã hoàn tiền

Kho

EventMô tả
inventory.low_stockNguyên liệu xuống dưới ngưỡng cảnh báo

Xác thực webhook

Mỗi request từ XCaphe có header:

X-XCaphe-Signature: sha256=<hmac>

Verify bằng HMAC-SHA256 với webhook secret (lấy trong dashboard):

import crypto from "crypto";
 
function verifyWebhook(payload: string, signature: string, secret: string): boolean {
  const expected = "sha256=" + crypto
    .createHmac("sha256", secret)
    .update(payload)
    .digest("hex");
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected)
  );
}

Retry policy

Nếu endpoint trả về status code khác 2xx, XCaphe sẽ retry:

  • Sau 5 phút (lần 1)
  • Sau 30 phút (lần 2)
  • Sau 2 giờ (lần 3)

Sau 3 lần thất bại, event được đánh dấu "Failed" và không retry nữa. Bạn có thể trigger lại thủ công trong dashboard.