了解身份验证、错误处理、Webhook 与常见流程,构建可靠的 Giftpack 集成。
Giftpack API 可让你的后端创建并运行奖励、激励、企业礼品和受赠人自主选择等工作流。你的系统负责管理业务触发条件和客户数据;Giftpack 则负责目录供应情况、受赠体验、履约以及配送进度更新。
生产环境的基础 URL 为:
https://developer.giftpack.ai
如需完整的请求和响应 schema,请参阅 API Reference。本指南可帮助你选择正确的资源系列,并了解资源创建后的状态变化。
| 目标 | 主要资源 | 生命周期事件 |
|---|---|---|
| Smart Gifting、定时奖励或自动化表彰 | Campaigns 和 Giftees | giftee.* |
| 直接从 Gift Mall 或 Merchandise Catalog 创建订单 | Marketplace Orders 和 Marketplace Order Receivers | marketplace_order_receiver.* |
| 维护会员的奖励余额 | Point Recipients 和 Point Histories | 积分兑换后,跟踪由此产生的 marketplace order |
Smart Gifting 以 campaign 作为项目容器,并以 giftee 表示每位受赠人的生命周期:
Campaign -> Giftee -> Redemption -> Fulfillment -> Delivery
直接目录订单以 marketplace order 作为订单容器,并以 marketplace order receiver 表示每位受赠人的生命周期:
Marketplace Order -> Receiver -> Claim or Selection -> Fulfillment -> Delivery
请勿将 giftee 和 marketplace_order_receiver 视为可互换的资源。即使两者的履约状态看起来相似,其事件名称仍代表不同的订单系列。
创建和更新请求会返回资源的当前状态。受赠人操作、履约、发货和送达则会异步继续进行。
要构建可靠的集成:
id 作为去重键。在 Giftpack 创建 API key 后,可通过 Webhook 事件目录验证访问权限:
curl https://developer.giftpack.ai/v1/webhookeventtypes \
--header 'Accept: application/json' \
--header 'X-API-KEY: YOUR_API_KEY'
响应会列出 API 当前支持的 Webhook 事件类型。此端点才是事件目录的权威来源,请勿依赖硬编码在客户端中的列表。

这些定义描述了 Giftpack API 集成中使用的核心领域对象。 在构建工作流之前,理解这些对象之间的关系非常关键。 Giftpack 主要运行在三层模型上:
互动层 (Engagement Layer)商业层 (Commerce Layer)供应与运营层 (Supply & Operations Layer)该层建模发送方与接收方之间的关系生命周期。 它是事件驱动(event-driven)且常常是异步的。
可能接收礼品或奖励的真实个体(员工、客户或合作伙伴)。在 API 语义中,Recipient 是 Giftpack 工作区内的持久身份。Recipient 可独立于 Campaign 存在,也可在不同时间参与多个 Campaign。
用于定向与批量分配的逻辑集合。分组是组织结构概念,不代表交易。
Campaign 表示一次独立的互动意图。
其定义内容包括:
Campaign 不是订单。 Campaign 是生命周期容器,redemption 与 fulfillment 事件在其中发生。
当 Recipient 被附加到 Campaign 时,会成为 Giftee。 Giftee 代表接收人在该 Campaign 中的参与状态。 这个区分非常重要:
Recipient = 身份Giftee = 活动绑定状态定义活动的展示层,包括:
模板影响沟通方式,不影响 fulfillment 逻辑。
Redemption 表示接收人执行领取礼品的动作。 可通过以下方式发生:
Redemption 将状态从 “invited” 转为 “claimed”。
允许 Giftee 领取礼品的唯一 URL。
使用 Campaign Template 发送 redemption 链接的邮件。
该层处理交易与 fulfillment 相关操作。 它可以独立于 Campaign 工作流运行。
由发送方直接选择的固定精选商品。 通常在下单后会立即 fulfilled。
面向一个或多个接收人的直接购买交易。 可跳过 Campaign 式 redemption,直接进入 fulfillment。 Marketplace Order ≠ Campaign。
在 Marketplace Order 中被指定为 fulfillment 目标的接收人。
通过 Giftpack 库存与仓储系统管理的可定制商品。 可能需要:
Marketplace 或 Swag 目录中的可售容器对象。
商品的具体可购买配置,例如:
交易始终发生在 Product Variant 层级。
该层支撑 fulfillment 与 vendor 管理。 对大多数集成来说通常被抽象,但对理解状态流转仍然重要。
负责以下内容的运营层:
向 Giftpack 生态提供商品的 vendor。
由 Procurement Office 监督的 Provider,用于目录质量、onboarding 与运营管控。
在 API 操作中引用 Provider 的唯一标识符。
以下结构展示了这些实体之间的关系:
Recipient
└─ may belong to Recipient Group
└─ becomes Giftee when attached to Campaign
Campaign (Engagement Container)
├─ defines Redemption rules
├─ manages Giftee states
└─ may generate Fulfillment Orders
Commerce Layer
├─ Marketplace Order (direct transaction)
└─ Swag Order (inventory-based transaction)
Redemption
├─ Link-based
├─ Email-based
└─ Transitions state before fulfillment
Giftpack 核心 /v1 操作使用限定于工作区的 API key,并通过 X-API-KEY header 发送。API key 只能由可信的服务器端应用程序使用。
API key 可在开发者设置中管理。工作区和当前用户必须拥有 Giftpack Open API 功能的访问权限,以及开发者设置所需的权限。
如果无法打开“开发者”页面,请先让工作区管理员确认工作区方案和你的角色,再开始构建集成。
绝不要将 API key 放在浏览器 JavaScript、移动应用程序、日志、屏幕截图、客服工单或源代码版本控制中。
测试环境和生产环境应使用不同的凭证。如果 key 可能已经泄露,请立即撤销。
curl https://developer.giftpack.ai/v1/webhookeventtypes \
--header 'Accept: application/json' \
--header 'X-API-KEY: YOUR_API_KEY'
API key 用于标识工作区。资源授权会在服务器端强制执行,因此即使获得其他工作区的 ID,也不代表能够访问该资源。
https://developer.giftpack.ai。API Reference 中的部分 connector 操作会使用 bearer token 或提供商专用的身份验证方式。请按照各项操作所列的 security scheme 执行,不要假设 Giftpack API key 能够调用 connector 端点。
X-API-KEY。公开约定并未承诺所有操作共用统一的速率限制或重试策略。如果各端点提供了相关 header 或 API Reference 说明,请以这些信息为准;规划突发高流量请求前,请先联系 Giftpack。
Giftpack 操作使用标准 HTTP 状态码。API Reference 所记录的错误响应使用 application/problem+json。
{
"type": "about:blank",
"title": "Bad Request",
"status": 400,
"detail": "Property email is required but is missing.",
"instance": "https://developer.giftpack.ai/errors/example",
"errors": [
{
"location": "body.email",
"message": "The email field is required.",
"value": null
}
]
}
type:标识问题类型的 URI,可能为 about:blank。title:稳定、易于理解的问题摘要。status:此响应对应的 HTTP 状态。detail:本次具体失败的说明。instance:如有提供,用于标识本次问题实例的 URI。errors:可选的字段级错误详情,包含 location、message 和 value。并非每个错误都保证包含所有字段。解析器应能容忍可选字段缺失,以及未来新增的未知字段。
| 状态系列 | 含义 | 建议处理方式 |
|---|---|---|
2xx | HTTP 操作成功 | 保存返回的 ID;后续生命周期变化使用 Webhook 跟踪 |
400 | 请求无效或验证失败 | 修正请求后再重试 |
401 | 缺少身份验证信息或身份验证无效 | 检查服务器端 API key 和环境 |
403 | 已通过身份验证,但没有权限 | 检查工作区归属、方案访问权限和用户权限 |
404 | 找不到资源或路由 | 确认端点和资源 ID |
409 | 请求与当前状态冲突 | 重新读取资源,再判断该操作是否仍然有效 |
5xx | Giftpack 或上游服务无法完成请求 | 保留当前状态,且仅在操作可安全执行时重试 |
各项操作所记录的响应,以 API Reference 为权威来源。
GET 请求通常可以使用设有上限的指数退避策略重试。会改变状态的请求则需要更加谨慎:
传输超时只表示客户端未收到响应,不能证明服务器没有完成该请求。
上报问题时,请提供端点、method、UTC 时间戳、HTTP 状态、相关资源 ID,以及已遮蔽敏感信息的问题响应。绝不要附上 API key 或未经遮蔽的受赠人数据。
Webhook 会报告 API 请求返回后发生的受赠人和履约状态转换。请将 Webhook 作为生命周期的主要信号,并使用 GET 操作核对状态。
请获取最新目录,不要硬编码旧版列表:
curl https://developer.giftpack.ai/v1/webhookeventtypes \
--header 'Accept: application/json' \
--header 'X-API-KEY: YOUR_API_KEY'
当前目录包含两个资源系列。
giftee
Smart Gifting 订单的受赠人生命周期事件,包括通过集成启动的 campaign、定时项目和自动化奖励工作流。
giftee.createdgiftee.launchedgiftee.preparinggiftee.shippedgiftee.deliveredgiftee.failedgiftee.returnedgiftee.reviewedgiftee.cancelgiftee.resumegiftee.deletemarketplace_order_receiver
直接通过 Gift Mall 或 Merchandise Catalog 创建、且不属于 Smart Gifting campaign 工作流的订单,其受赠人生命周期事件。
marketplace_order_receiver.createdmarketplace_order_receiver.launchedmarketplace_order_receiver.shippedmarketplace_order_receiver.deliveredmarketplace_order_receiver.failedmarketplace_order_receiver.returnedmarketplace_order_receiver.reviewedmarketplace_order_receiver.delete每次投递的内容都是 JSON object。data 是结构化的资源快照,不是经过转义的 JSON string。
{
"id": "123e4567-e89b-12d3-a456-426655440000",
"type": "giftee.shipped",
"data": {
"id": "23e4567-e89b-12d3-a456-426655440000",
"type": "giftee",
"email": "recipient@example.com",
"status": 12,
"delivery_status": 2,
"budget": 100,
"campaign": {
"id": "323e4567-e89b-12d3-a456-426655440000"
},
"recipient": {
"id": "423e4567-e89b-12d3-a456-426655440000"
},
"delivery_tracking_code": "TRACKING-CODE"
},
"created_at": "2026-09-01 15:23:33"
}
id 是持久保留的事件实例 ID,应作为去重键。type 用于标识资源系列和状态转换。data 捕获事件发生时的资源状态。字段会因资源系列和生命周期阶段而异。created_at 是事件发生时间。投递顺序可能与事件发生顺序不同,因此排列状态转换时请使用此值。Giftpack 会将原始 request body 的 HMAC-SHA256 digest 以小写十六进制格式放在 X-Giftpack-Signature 中发送。
const crypto = require('crypto');
function verifyGiftpackWebhook(rawBody, signature, secret) {
if (!signature) return false;
const expected = crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
const actualBuffer = Buffer.from(signature, 'utf8');
const expectedBuffer = Buffer.from(expected, 'utf8');
return (
actualBuffer.length === expectedBuffer.length &&
crypto.timingSafeEqual(actualBuffer, expectedBuffer)
);
}
请在解析或处理 payload 前验证签名。Webhook secret 应存储在服务器端的密钥存储中。
POST 发送 JSON body。2xx 响应都表示投递成功。id。验证并可靠接收事件后,请尽快返回 2xx。将耗时工作移至 queue 执行。
Webhook event 和 request 日志使用以下数值状态:
-1:失败0:处理中1:成功事件详情响应包含结构化的 webhook_event_data、尝试次数,以及每次 request record,供故障排查使用。
X-Giftpack-Signature。id 去重。created_at,并允许事件不按顺序到达。2xx。请根据受赠人获得奖励的方式选择对应的资源系列。每个必填字段和响应模型仍以 API Reference 为权威来源。
适用于通过集成、定时项目或自动化流程创建 campaign 型受赠体验的场景。
POST /v1/campaigns 创建或选择 campaign。POST /v1/giftees 添加每位受赠人。POST /v1/giftees/{gifteeId}/redemptionlink 生成受赠人链接。giftee.* Webhook 事件跟踪受赠人生命周期。后续操作请使用返回的 giftee ID。请勿自行拼接兑换 URL。
建议先订阅 giftee.created、giftee.launched、giftee.preparing、giftee.shipped、giftee.delivered、giftee.failed 和 giftee.returned。如果集成需要取消、恢复、删除和评价等状态转换,再添加对应事件。
如果订单直接来自 Gift Mall 或 Merchandise Catalog,而非 Smart Gifting campaign,请使用 marketplace order。
curl https://developer.giftpack.ai/v1/marketplaceorders \
--request POST \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: YOUR_API_KEY' \
--data '{
"marketplace_order_name": "September employee rewards",
"marketplace_order_start_date": "2026-09-01",
"marketplace_order_end_date": "2026-09-30",
"marketplace_order_type": "Normal",
"submit": false,
"receivers": [
{
"member_id": "9a1232aa-238f-421c-82e7-45693d1b25b4",
"country": "US",
"gift_message": "Thank you for your contribution.",
"email_notification": true,
"sms_notification": false,
"marketplace_feature": false,
"donation_feature": false,
"products": [
{
"marketplace_product_id": "961be65a-88d8-4040-8808-843ccf5da624",
"marketplace_product_variant_id": "961be65a-a96a-412d-b22a-325f07d85647",
"product_quantity": 1
}
]
}
]
}'
如果你的应用程序需要先检查或更新订单,请以草稿形式创建。准备完成后,使用 POST /v1/marketplaceorders/{marketplaceOrderId}/submit 提交订单。
使用 marketplace_order_receiver.* 事件跟踪每位受赠人。由于 receiver 属于 marketplace order,而非 campaign,因此这些事件与 giftee.* 分开处理。
当会员需要持有奖励余额并在日后兑换时,请使用 points。
POST /v1/pointrecipients/{memberId}/enablepointfeature 启用 points。PATCH /v1/pointrecipients/{memberId}/points 更新余额。更新余额时,credits 和 points 都是必填项:
curl https://developer.giftpack.ai/v1/pointrecipients/MEMBER_ID/points \
--request PATCH \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: YOUR_API_KEY' \
--data '{
"credits": 1,
"points": 100,
"expired_at": "2027-09-01",
"notes": "Annual recognition allocation"
}'
即使你的业务逻辑主要以 points 表示,也不能省略 credits。请求超时后,再次更新余额前,请先检查返回的 point recipient 和 point history。