商店数据获取 Webhook
store.get Webhook 用于获取当前应向特定玩家显示的 游戏枢纽 商店商品列表。 该功能特别适合根据游戏逻辑动态显示商店内容。
此 Webhook 在以下情况下触发:
- 玩家登录游戏枢纽时触发。
- 玩家点击打开商店界面时触发。
- 玩家完成商品购买后触发。


要求
如需接入阿哈 利姆的 store.get Webhook,请按照以下要求配置您的 Webhook 服务器:
- HTTPS 端点,可接收 POST Webhook 请求。
- 监听由阿哈利姆生成并 签名 的事件。
- 使用 2xx 状态码表示成功处理,使用 4xx 或 5xx 状态码表示拒绝或错误。
配置步骤
- 为
store.getWebhook 处理开发一个函数。 - 部署您的端点使其可访问。
- 进入您的Aghanim账户后,依次导航至 游戏 → Webhook → 新建 Webhook,然后在事件类型列表中选择
store.get事件。
或者,您也可以使用 Create Webhook API 方法在阿哈利姆中注册您的端点。
Request Schema
下面是一个 store.get Webhook 请求示例:
- HTTP
- cURL
POST /your/webhook/uri HTTP/1.1
Content-Type: application/json
Host: your-webhook-endpoint.com
User-Agent: Aghanim/0.1.0
X-Aghanim-Signature: 2e45ed4dede5e09506717490655d2f78e96d4261040ef48cc623a780bda38812
X-Aghanim-Signature-Timestamp: 1725548450
{
"event_type": "store.get",
"event_data": {
"player_id": "2D2R-OP3C"
},
"event_time": 1725548450,
"event_id": "whevt_eCacGbJVbvToOgzjXUgOCitkQE",
"idempotency_key": "idmpt_aXRlb...JkX2VFS",
"request_id": "d1593e9c-c291-4004-8846-6679c2e5810b",
"sandbox": false,
"trigger": "hub.login",
"transaction_id": "whtx_eCacGbJVbvT",
"context": null,
"game_id": "gm_exTAyxPsVwh"
}
curl "https://your-webhook-endpoint.com/your/webhook/uri" \
-X POST \
-H "Content-Type: application/json" \
-H "User-Agent: Aghanim/0.1.0" \
-H "X-Aghanim-Signature: 2e45ed4dede5e09506717490655d2f78e96d4261040ef48cc623a780bda38812" \
-H "X-Aghanim-Signature-Timestamp: 1725548450" \
-d '{
"event_type": "store.get",
"event_data": {
"player_id": "2D2R-OP3C"
},
"event_time": 1725548450,
"event_id": "whevt_eCacGbJVbvToOgzjXUgOCitkQE",
"idempotency_key": "idmpt_aXRlb...JkX2VFS",
"request_id": "d1593e9c-c291-4004-8846-6679c2e5810b",
"sandbox": false,
"trigger": "hub.login",
"transaction_id": "whtx_eCacGbJVbvT",
"context": null,
"game_id": "gm_exTAyxPsVwh"
}'
事件 Schema
| 键名 | 类型 | 描述 |
|---|---|---|
event_id | string | 阿哈利姆生成的唯一事件标识符。 |
game_id | string | 您的游戏在阿哈利姆中的唯一标识符。 |
event_type | string | 事件的类型, store.get 在此情境下。 |
event_time | number | 以 Unix 时间戳表示的事件发生日期。 |
event_data | EventData | 包含事件特定数据的字段,其中可能包含用于继承对象的各种键值。 |
idempotency_key | string | 即使出现重试情况,也能确保 Webhook 操作只执行一次。 |
request_id | string|null | 如果事件是通过 API 请求触发的,此字段将包含对应的请求 ID。 |
sandbox | boolean | 标识事件是否来自沙盒测试环境的指示器。 |
trigger | string|null | The trigger that caused the event to be sent. |
transaction_id | string | 阿哈利姆生成的交易标识符。在同一交易过程中触发的多个事件可能共享相同的交易 ID。 |
context | EventContext|null | 事件的相 关上下文信息。 |
EventContext Schema
| 键名 | 类型 | 描述 |
|---|---|---|
order | OrderContext|null | 与事件相关的订单信息(如果适用)。 |
player | PlayerContext|null | (可选)玩家信息。如需启用,请在webhook设置中选择“添加玩家上下文”。 |
EventData Schema
| 键名 | 类型 | 描述 |
|---|---|---|
player_id | string | 用于玩家身份验证的唯一 玩家 ID。 |
is_anonymous | boolean | 当前用户的操作是否匿名 |
Response Schema
当您的服务器成功处理请求时,应返回 2xx 系列状态码以及符合以下格式的 JSON 数据:
| 键名 | 类型 | 描述 | 是否必需 |
|---|---|---|---|
items | `[Item\ | BundleItem]` | 应向该玩家展示的所有商品列表,包括单独商品和礼包。 |
rolling_offers | RollingOffer[] | 玩家可选择的滚动优惠数组 | 否 |
Item Schema
| 键名 | 类型 | 描述 | 是否必需 |
|---|---|---|---|
sku | string | 商品的 SKU 标识符,必须确保在游戏系统和阿哈利姆上保持一致。 | 是 |
start_at | number | 商品对玩家可见并可购买的起始时间(Unix 时间戳)。 | 否 |
end_at | number | 商品对玩家不再可见或可购买的结束时间(Unix 时间戳)。 | 否 |
max_purchases | number | 限制玩家能够购买该商品的最大次数。 | 否 |
BundleItem Schema
| 键名 | 类型 | 描述 | 是否必需 |
|---|---|---|---|
sku | string | 礼包的唯一 SKU 标识符,用于动态生成的组合商品。 | 是 |
price | number | 价格(美分)。 | 是 |
name | string | 礼包在商店中显示的名称。 | 是 |
nested_items | NestedItem[] | 礼包内包含的所有单独商品组成的数组。 | 是 |
description | string | 礼包的详细描述文本。 | 否 |
image_url | string | 礼包图片的 URL。 | 否 |
image_url_featured | string | 礼包作为推荐商品展示时的图片 URL。 仅在商品被推荐时适用。 | 否 |
featured_card_background_image_url | string | 礼包卡片作为推荐商品展示时的背景图片 URL。 仅在商品被推荐时适用。 | 否 |
category_slugs | string[] | 用于确定该礼包在商店中分类和展示位置的标识符数组。 | 否 |
start_at | number | 商品对玩家可见并可购买的起始时间(Unix 时间戳)。 | 否 |
end_at | number | 商品对玩家不再可见或可购买的结束时间(Unix 时间戳)。 | 否 |
max_purchases | number | 限制玩家能够购买该商品的最大次数。 一旦达到限制,该商品将从商店中消失 | 否 |
price_template_id | string | 将用于不同国家定价的价格模板的 ID。 | 否 |
custom_badge | string | 礼包的自定义徽章文字 | 否 |
bonus_items | WebhookItemBonus[] | 礼包内包含的所有赠品构成的数组。 | 否 |
bonus_badge | string | 关于奖励物品的徽章文本 | 否 |
bonus_percent | number | 在nested_items中首次可堆叠项应用的奖励百分比 | 否 |
bonus_fixed | 数字 | 应用于嵌套项目中第一个可堆叠项目的固定奖励值。 如果设置,bonus_percent 将被忽略。 | 否 |
metadata | object | 自定义的键值对数据对象,用于存储与商品相关的额外信息。 | 否 |
view_option | ItemViewOption | 控制商品在商店中的显示方式。 允许的值:default, in_title | 否 |
card_type | StoreCardType | 用于在商店中显示的商品卡片类型:default, featured | 否 |
free_claims | FreeClaims | 将物品设置为可以免费领取而不是购买。 | 否 |
NestedItem Schema
| 键名 | 类型 | 描述 | 是否必需 |
|---|---|---|---|
sku | string | 商品的 SKU 标识符,必须确保在游戏系统和阿哈利姆上保持一致。 | 是 |
quantity | 数字 | 礼包中该商品的数量,主要用于可堆叠类型的商品(如游戏币、能量点等)。 | 否 |
is_featured | boolean | 定义商品是否在礼包列表中突出显示。 | 否 |
metadata | object | 自定义的键值对数据对象,用于存储与商品相关的额外信息。 | 否 |
WebhookItemBonus 架构
| 键名 | Type | 描述 | 是否必需 |
|---|---|---|---|
sku | string | 商品的 SKU 标识符,必须确保在游戏系统和 Aghanim 上保持一致。 | 是 |
quantity | number | 礼包中该商品的数量,主要用于可堆叠类型的商品(如游戏币、能量点等)。 | 否 |
The FreeClaims schema
| 键名 | Type | 描述 | 是否必需 |
|---|---|---|---|
已启用 | boolean | 指示物品是否可以免费领取而不是购买。 | 是 |
max_claims | 数字 | 指定期间内商品可被认领的最大次数。 | 是 |
周期 | 周期 | 用于重置max_claims的周期窗口。 如果省略,当达到最大认领次数后,限制不会重置。 | 否 |
exceeded_claims_behavior | ExceededClaimsBehavior | 定义达到最大认领次数后的行为。 允许的值:hide - 从商店中移除物品;disable_with_timer - 保持可见但禁用,并带有倒计时直至下次重置。 如果省略了 period,则不会显示倒计时,并且该项目将保持禁用。 | 否 |
期限数据 Schema
| 键名 | Type | 描述 | 是否必需 |
|---|---|---|---|
unit | PeriodType | 用于索赔限额的期限类型。 可选值:month、week、day、hour。 | 是 |
duration | number | 期间的持续时间,以unit指定的单位测量(例如,duration:2 和 unit:day 表示一个两天的期间)。 | 是 |
动态优惠架构
| 键名 | Type | 描述 | 是否必需 |
|---|---|---|---|
键名 | string | 用于确定物品是否已被购买或认领的唯一优惠键。 | 是 |
placement_key | string | 滚动优惠将在Game Hub显示的模块键。 | 是 |
name | string | 滚动优惠的标题。 | 是 |
描述 | string | 滚动优惠的描述。 | 是 |
rolling_items | RollingItem[] | 滚动优惠中包含的物品列表。 | 是 |
background_image_url | string | 背景图片的URL。 | 否 |
background_size | string | 背景图片的大小。 可选值:contain、repeat、cover。 | 否 |
expire_at | 数字 | 优惠有效期的 Unix 时间戳。 优惠区块的计时器倒计时到此刻,优惠将在达到该时刻后隐藏。 | 否 |
动态商品架构
| 键名 | Type | 描述 | 是否必需 |
|---|---|---|---|
sku | string | 礼包的唯一 SKU 标识符,用于动态生成的组合商品。 | 是 |
quantity | number | 礼包中该商品的数量,主要用于可堆叠类型的商品(如游戏币、能量点等)。 | 否 |
is_free_item | boolean | 指示该商品是否可以免费获取而不用购买。 | 否 |
成功响应示例
{
"items": [
{
"sku": "crystals"
},
{
"sku": "shield",
"start_at": 1630000000,
"end_at": 1635000000
},
{
"sku": "fly_bundle",
"price": 2000,
"name": "Fly Bundle",
"description": "Fly Bundle Description",
"image_url": "https://example.com/fly-bundle.png",
"image_url_featured": "https://example.com/fly-bundle-featured.png",
"featured_card_background_image_url": "https://example.com/fly-bundle-featured-background.png",
"nested_items": [
{
"sku": "nested_item_sku_1"
},
{
"sku": "nested_item_sku_2",
"quantity": 200
}
],
"category_slugs": [
"category_slug_1"
]
},
{
"sku": "free-fly-bundle-with-timer",
"name": "Fly Bundle",
"description": "Bundle with fly and sword",
"background_image_url": "https://example.com/background.jpg",
"category_slugs": ["first"],
"nested_items": [
{"sku": "diamond-002", "quantity": 2},
{"sku": "sword-thb"},
],
"free_claims": {
"enabled": True,
"max_claims": 1,
"period": {"unit": "day", "duration": 1},
"exceeded_claims_behavior": "disable_with_timer",
}
}
],
"rolling_offers": [
{
"key": "rolling_offer_1",
"placement_key": "place1",
"name": "Dynamic Special Offer",
"description": "Limited time offer",
"rolling_items": [
{
"sku": "coins",
"quantity": 256,
"is_free_item": false
},
{
"sku": "gold",
"quantity": 999,
"is_free_item": true
}
],
"background_image_url": "https://static-platform.aghanim.com/image.webp",
"background_size": "cover",
"expire_at": 1762964336
}
}
需要技术支持?
联系我们的集成技术团队: integration@aghanim.com