跳到主要内容

Transaction.PurchaseApprovalResult

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

请为您的端点订阅此事件

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

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

字段

字段类型必需说明
eventTypestring始终为 "Transaction.PurchaseApprovalResult"
dataobject购买批准结果数据
data.idstring (UUID)批准请求 ID,与您的产品发送给 /transaction/request-purchaseid 一致
data.sessionIdstring (UUID)请求购买所针对的会话 ID
data.productIdnumber产品 ID
data.statusstringapproveddeniedexpired
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 时才完成购买,并把 deniedexpired 都当作“不要扣款”。由于请求会在 24 小时后到期,请不要无限期等待 Webhook:/transaction/request-purchase 返回的 expiresAt 就是过后不再有答复到来的时点。

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

它不会触发的情况

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