Skip to content
DevelopersWebhooks

Webhook

SimplifyTrip sử dụng webhook để thông báo cho ứng dụng của bạn bất cứ khi nào có sự kiện xảy ra với đơn hàng của bạn.

Bạn có thể xem và quản lý các sự kiện đã được gửi đến bạn thông qua webhook của mình trong Thống kê Webhooks.

💡

Để thay đổi webhook endpoint, vui lòng truy cập quản lý Api Keys, mỗi endpoint sẽ được gắn với một Api key cụ thể.

Cài đặt

Bạn cần cung cấp Endpoint trong hệ thống của mình để nhận webhook từ chúng tôi. Thông báo webhook sẽ được gửi qua phương thức POST tới URL webhook mà bạn đã đặt. Thiết lập URL webhook của bạn trong phần quản lý Api Key. Endpoint webhook sẽ được cài đặt trong một Api Key riêng biệt. Bạn cũng có thể dùng chung một endpoint cho nhiều Api Key khác nhau. Bạn có thể sử dụng một công cụ như ngrok để cung cấp Endpoint để nhận webhook trong quá trình thử nghiệm.

Event Handling

Việc xử lý chính xác các sự kiện webhook là rất quan trọng để đảm bảo logic kinh doanh của hệ thống của bạn hoạt động như mong đợi

Xác nhận sự kiện ngay lập tức

Nếu api webhook của bạn thực hiện logic phức tạp hoặc thực hiện network calls, thì có thể api đó sẽ hết thời gian chờ trước khi SimplifyTrip xác nhận đã gửi data thành công. Lý tưởng nhất là mã xử lý webhook của bạn (xác nhận việc nhận sự kiện bằng cách trả về mã trạng thái 2xx) tách biệt với bất kỳ logic nào khác mà bạn thực hiện cho sự kiện đó.

Xử lý sự kiện trùng lặp

Endpoint Webhook đôi khi có thể nhận được cùng một sự kiện nhiều lần. Chúng tôi khuyên bạn nên đề phòng các biên nhận sự kiện trùng lặp bằng cách làm cho quá trình xử lý sự kiện của bạn trở nên idempotent. Một cách để thực hiện việc này là ghi lại các sự kiện bạn đã xử lý và sau đó không xử lý các sự kiện đã được ghi lại. Chúng tôi cung cấp webhook-id dưới dạng mã định danh duy nhất trong tham số tiêu đề của mỗi webhook để giúp bạn triển khai tính idempotent. Tìm hiểu về sự idempotent.

Thứ tự sự kiện

SimplifyTrip không đảm bảo việc phân phối các sự kiện theo thứ tự chúng được tạo. Endpoint của bạn không nên mong đợi việc phân phối các sự kiện này theo thứ tự này và nên xử lý việc này một cách phù hợp. Bạn cũng có thể sử dụng API để tìm nạp mọi đối tượng bị thiếu.

Retry (Gửi lại)

SimplifyTrip sẽ tự động gửi lại webhook vào endpoint của bạn nếu không xảy ra lỗi 4xx, vì lỗi 4xx là lỗi bên trong hệ thống của bạn, chúng tôi không gửi lại vì điều này là vô nghĩa. Trong trường hợp này bạn hãy fixbug bên trong hệ thống của mình, sau đó tiến hành gửi lại webhook thủ công trong trang dành cho partner Thống kê Webhooks.

Số lần gửi lại tự động tối đa là 5 lần, khoảng cách giữa các lần thử lại lần lượt là 5 phút, 10 phút, 20 phút, 40 phút và cuối cùng là 80 phút.

Security

Giữ an toàn cho Endpoint của bạn là điều quan trọng để bảo vệ thông tin của khách hàng. SimplifyTrip cung cấp một số cách để bạn xác minh các sự kiện đến từ SimplifyTrip một cách an toàn.

  • Nhận sự kiện với máy chủ HTTPS

    Nếu bạn sử dụng URL HTTPS cho Endpoint webhook của mình, SimplifyTrip sẽ xác thực rằng kết nối đến máy chủ của bạn là an toàn trước khi gửi dữ liệu webhook của bạn. Để tính năng này hoạt động, máy chủ của bạn phải được định cấu hình chính xác để hỗ trợ HTTPS bằng chứng chỉ máy chủ hợp lệ.

  • Xác minh các sự kiện được gửi từ SimplifyTrip

    SimplifyTrip sign các sự kiện webhook mà nó gửi đến Endpoint của bạn. Chúng tôi làm như vậy bằng cách cách tạo mã signature của mỗi sự kiện và gửi kèm chúng tới endpoint của bạn bằng cách gắn signature vào header của request với tên là X-Simplify-Trip-Signature. Điều này cho phép bạn xác minh rằng các sự kiện được gửi bởi SimplifyTrip chứ không phải bởi bên thứ ba. Tham khảo Kiểm tra dữ liệu với signature để biết chi tiết.

Dữ liệu Webhook

Dữ liệu đơn hàng eSim

Event data khi đơn hàng mua eSim của bạn đã hoàn thành. Bao gồm môt mã signature và một object chứa thông tin đơn hàng và danh sách eSim bạn đã đặt hàng.

Request Headers
X-Simplify-Trip-Signature - requiredstring

Signature là một chuỗi ký tự dùng để kiểm tra tính toàn vẹn dữ liệu trong việc truyền dữ liệu giữa hệ thống của bạn và SimplifyTrip. Tham khảo Kiểm tra dữ liệu với signature.

Request Body
id - requiredstring

Mã định danh cho webhook này

type - requiredstring

Loại sự kiện của webhook PURCHASE_ORDER_SUCCESS | PURCHASE_ORDER_FAIL

sentDate - requireddatetime

Thời gian sự kiện webhook được gửi đi

mode - requiredstring

Chế độ thử nghiệm hoặc thực tế TEST_MODE | LIVE_MODE

data - requiredobject

Chứa thông tin đơn hàng của bạn, bao gồm danh sách eSim đã mua, các mã định danh…

BodyData
Headers

_31
{
_31
"id": "6741ae7de65369e169a70758",
_31
"sentDate": "2024-11-23T10:29:17.887Z",
_31
"mode": "TEST_MODE",
_31
"type": "PURCHASE_ORDER_SUCCESS",
_31
"data": {
_31
"orderId": "7258736707",
_31
"trackId": "fd66829c-f768-43a7-b147-9e92d44c4e81",
_31
"items": [
_31
{
_31
"subOrderId": "6741ae68e65369e169a70757",
_31
"subTrackId": "c6858ae7-0f40-4f44-be1a-ac656851ba92",
_31
"sku": "E23XY06GB08DFX",
_31
"quantity": 1,
_31
"type": "eSIM",
_31
"eSims": [
_31
{
_31
"qrCodeContent": "LPA:1$SECSMSMINIAPP.EASTCOMPEACE.COM$502F97EF09144E0C9D62FD781E259916",
_31
"qrCodeImg": "https://simplify-trip.s3.ap-southeast-1.amazonaws.com/a11dd3c438f38f5383fa17c8ea2de3ef.png",
_31
"iccid": "89812003916820393515",
_31
"planAPN": "plus.4g",
_31
"smdpAddress": "SECSMSMINIAPP.EASTCOMPEACE.COM",
_31
"pin": "1234",
_31
"puk": "15095300",
_31
"activationCode": "502F97EF09144E0C9D62FD781E256383"
_31
}
_31
]
_31
}
_31
]
_31
}
_31
}