Keeta actively pushes various notifications to service provider applications via webhook, including:
- Order
- Store Status
- Menu Synchronization Result
Please choose one of the following methods:
- Log in to your developer account on Keeta's official website
- Navigate to Application Management
- Configure your webhook URL in the designated section
Configure via Keeta API:
// Demo
curl -X POST 'https://open.mykeeta.com/api/open/base/callback/url/set' \
-H 'Content-Type: application/json' \
--data-raw '{
"appId": 2061048026,
"timestamp": "1723001797",
"sig": "e12ae63e917752bca3fd5d0eceec42337f2338f4d9303ac30e3eb4856900b07c",
"eventId": 1001,
"url": "https://<vendor'\''s url>",
"isTest": 1
}'
Field Key | Type | Description |
---|---|---|
sig | String | A string calculated according to specific rules (see Authorization Guide for details). Developers must use this signature to verify whether the request originates from Keeta, thereby guaranteeing message security and accuracy. |
eventId | Integer | Code representing the message type. Please refer to the event code enumeration later in this document. |
appId | long | Application ID, unique identifier assigned by the system when the application is created. |
messageId | String | Unique identifier for the message. |
shopId | Long | Keeta store ID |
message | String | Message content regarding orders, stores, or products. For specific definitions, refer to the API reference chapter. |
timestamp | Long | Message push timestamp in seconds (Unix epoch time). |
Message example:
// Demo
{
"sig": "6d2581a5e71cdddc6f8770d0e84b2aa02ec72158190b39d97df2e5d5c314b7a0",
"eventId": 1002,
"appId": 3762772727,
"messageId": "1930106161957212198",
"shopId": 145541,
"message": "{\"opTime\":1749008143025,\"orderViewId\":553440887574627,\"shopId\":145541,\"status\":30}",
"timestamp": 1749008143
}
Webhook requests use the HTTPS protocol, employ the POST method, have a Content-Type of "application/json", and use UTF-8 encoding.
Webhooks must support Keeta's heartbeat detection. During heartbeat detection, Keeta sends an empty packet. Developers must handle empty packet requests and return a success response.
After processing, the response should be in JSON format. The specific format can be found in the following description:
// Webhook repsonse
{
"code": 0,
"message": "success"
"data": {}
}
Field Key | Type | Requirement | Description |
---|---|---|---|
code | Integer | Mandatory | A code value of 0 indicates successful acceptance. Any non-zero code value indicates processing failure. |
message | String | Optional | Supplementary explanation of the code value. |
data | Object | Optional | Additional error details for failure scenarios. |
Pushed messages contain signatures. Developers must verify message signatures.
All APIs provided by developers must support idempotency. In the event of a request failure or network timeout, the Keeta platform will automatically retry, typically up to 3 times with 1-minute intervals, to ensure that multiple identical requests have the same effect as a single request.
How to determine if a message is a retry: Developers can filter based on order data. For example, when Keeta retries a paid order notification, developers should check whether the order ID has already been processed. If the message has been processed, it should be ignored.
For configuration details, refer to the 'Edit Application' in Developer Portal.
eventId | Event Description | |
---|---|---|
1001 | Order Placement Notification | |
1002 | Order Acceptance Notification | |
1003 | Order Completion Notification | |
1004 | Order Cancellation Notification | |
1005 | Refund Initiation Notification | |
1006 | Delivery Status Update Notification | |
1007 | Partial Refund Initiation Notification | |
1101 | Store Business Hours Change Notification | |
1102 | Store Status Change Notification | |
1201 | Batch Product Image Binding Result Notification |