Webhooks事件类型

Transaction.PurchaseApprovalResult

当购买批准请求得到处理时发出:父母批准、父母拒绝,或请求在无人答复的情况下到期。这是对 /transaction/request-purchase 调用的答复,也是您的产品获知结果的唯一途径。

请为您的端点订阅此事件

k-ID 只会把 Transaction.PurchaseApprovalResult 投递给已订阅它的端点,其余端点会被丢弃,既不尝试投递也不报错。请在产品的 Developer Settings 页面为您的端点选择它。请参阅开始之前。

一个请求恰好产生一个 Transaction.PurchaseApprovalResult。请通过 data.id 将它与请求关联,该值就是您的产品发送给 /transaction/request-purchase 的 id。

字段

字段类型必需说明
eventTypestring是始终为 "Transaction.PurchaseApprovalResult"
dataobject是购买批准结果数据
data.idstring (UUID)是批准请求 ID,与您的产品发送给 /transaction/request-purchase 的 id 一致
data.sessionIdstring (UUID)是请求购买所针对的会话 ID
data.productIdnumber是产品 ID
data.statusstring是approved、denied 或 expired
data.resolvedAtstring (date-time)是请求达到该结果的时间,RFC 3339

示例

{
  "eventType": "Transaction.PurchaseApprovalResult",
  "data": {
    "id": "9d4e2f81-7a3b-4c56-8e90-1f2a3b4c5d6e",
    "sessionId": "b1a6482d-5242-4b4a-aa88-3fa52595a672",
    "productId": 42,
    "status": "approved",
    "resolvedAt": "2026-06-24T15:12:00Z"
  }
}

状态

status含义应做的处理
approved父母批准了该购买。完成购买。
denied父母拒绝了该购买。不要扣款。告知玩家其父母拒绝了。
expired父母在请求后 24 小时内未作答。不要扣款。可以再次向玩家提供该购买。

expired 不是错误,也不是投递失败。请求到期后,可以再次向玩家提供该购买。

在扣款前批准

结果对购买起门控作用;它并不记录一笔购买。只有在 approved 时才完成购买,并把 denied 和 expired 都当作“不要扣款”。由于请求会在 24 小时后到期,请不要无限期等待 Webhook:/transaction/request-purchase 返回的 expiresAt 就是过后不再有答复到来的时点。

投递保证为至少一次,因此同一结果可能到达多次。请按 Webhooks 概述的说明,让您的处理逻辑按 data.id 幂等。

它不会触发的情况

  • 该购买没有请求过批准。
  • 产品的 Purchase Controls 能力(需要 Transactions)已关闭,因此 /transaction/request-purchase 返回 FEATURE_DISABLED,不会创建请求。

On this page