了解实时通知
实时通知 (RTN) 是服务器到服务器的推送通知,可实时提供关于应用内购买的全面数据。可以利用这些信息来监控与客户应用内可购买商品相关的购买状态变更。
实时通知概述
亚马逊使用收据将客户的应用内商品购买状态通知到您。收据包含当前订单状态和您定义的应用内商品详细信息。
如果没有RTN,则按照拉取模式获取最新收据状态。在拉取模式下,必须定期调用收据验证服务 (RVS) 查询亚马逊服务,以获取更新。但是,RTN使用的是推送模式,由亚马逊提供实时服务器推送通知。亚马逊的RTN服务器会向您的后端服务器发送通知,其中包含与客户购买相关的信息,您收到之后可通过RVS对其进行验证。
除了收据验证服务 (RVS),还可以使用实时通知 (RTN)。下图展示了RVS进程与RTN进程如何交互。

下文描述了图中所示过程。
步骤1–5: 这是常规RVS流程。
- 用户发起应用内购买。
- 应用将购买收据转发给应用服务器。
- 应用服务器向RVS服务器发送收据验证请求。
- RVS服务器确认收据是否有效。
- 向用户交付内容。
有关更多详细信息,请参阅收据验证服务概述。
步骤6: RTN向应用服务器发送有关客户应用内购买的通知消息。
步骤7: 应用服务器向RVS服务器发送收据验证请求,并获取与收据相关的所有信息。
步骤8: RVS服务器确认收据的有效性,然后返回与收据相关的信息。
无需完成RVS流程(步骤1–5)即可开始执行RTN流程(步骤6–8)。两个流程可以并行运行。
先决条件
使用实时通知前,请确保您的环境已准备好接收RTN响应。由于RTN会向您推送消息,因此亚马逊需要将这些消息发送到可公开访问的安全目的地。您的后端服务器必须满足以下要求:
- 公开接收RTN响应的HTTPS终端节点
- 处理亚马逊发送的HTTPS POST请求
- 返回
200响应码以确认收到每条消息 - 使用来自可信证书提供商的有效SSL证书
服务器满足这些要求后,在开发者控制台中注册其终端节点并完成令牌确认流程。有关具体步骤,请参阅使用实时通知。
RTN的动态应用测试
在发布应用之前,使用动态应用测试 (LAT) 来确认终端节点能够正确接收和处理实时通知。借助LAT,您可以在受控的测试环境中运行真实应用内购买交易,同时避免影响真实客户。
当您通过LAT进行应用内购买时,亚马逊服务器会返回具有betaProductTransaction=true属性的RTN有效负载。使用此属性来区分测试通知与生产环境通知,能让服务器恰当地处理每条通知。
实时通知消息详情
实时通知会通过JSON消息递送至您的HTTPS终端节点。每条通知都包含以下JSON有效负载。可以参阅Amazon Simple Notification Service (SNS) 开发者指南,了解更多信息。
实时通知的Message属性包含了带有下列字段的转义JSON。
| 字段 | 数据类型 | 描述 | 响应示例 |
|---|---|---|---|
receiptId
|
字符串 | 购买的唯一标识符。字符串的最大长度为200个字符,可以包含字母数字值和标点符号 | kyplB1fdRX1m6/GNAVW0l6jv9Nl1V/GemSopKBHM84w=
|
relatedReceipts
|
映射 | 与已发送通知相关的其他收据 | cancelledReceiptId(SUBSCRIPTION_MODIFIED_IMMEDIATE通知中先前取消的收据的唯一标识符)
|
appUserId
|
字符串 | 代表亚马逊应用商店应用中不同亚马逊客户的标识符。字符串的最大长度为128个字符,可以包含字母数字值和标点符号 | wE1EG1gsEZI9q9UnI5YoZ2OxeoVKPdR5bvPMqyKQq5Y=:1:11
|
notificationType
|
字符串 | 通知类型 | 有关详情和示例,请参阅下一节中的受支持的通知表格。 |
appPackageName
|
字符串 | 标识应用的应用程序包名称 | com.myapp.sample.android
|
timestamp
|
长整数 | Epoch时间 | 1402008634018 |
betaProductTransaction
|
布尔值 | 表示交易是否针对动态应用测试产品 | true/false
|
支持的通知类型
RTN消息包含了每一类应用内购买(订阅、权利和消费品)的相关信息。
亚马逊可能会随时间推移而逐渐添加或更改通知类型。添加新的通知类型后会收到通知。亚马逊通常建议忽略任何不适用的通知类型。
下表描述了当前可用的通知类型。
| 通知类型 | 描述 |
|---|---|
CONSUMABLE_CANCELLED |
消费品商品已取消(自愿或非自愿)。 |
CONSUMABLE_PURCHASED |
已购买消费品商品。 |
ENTITLEMENT_CANCELLED |
权利商品已取消(自愿或非自愿)。 |
ENTITLEMENT_PURCHASED |
已购买权利商品。 |
SUBSCRIPTION_AUTO_RENEWAL_OFF |
已关闭订阅的自动续订功能。 |
SUBSCRIPTION_AUTO_RENEWAL_ON |
订阅的自动续订功能已打开。 |
SUBSCRIPTION_CANCELLED |
订阅已取消(自愿或非自愿)。 |
SUBSCRIPTION_CONVERTED_FREE_TRIAL_TO_PAID |
有效免费试用订阅已转换为付费订阅。 |
SUBSCRIPTION_EXPIRED |
订阅已过期。 |
SUBSCRIPTION_IN_GRACE_PERIOD |
订阅已进入宽限期(如果启用)。 |
SUBSCRIPTION_OUT_OF_GRACE_PERIOD |
用户修复了曾在宽限期内出现的订阅付款问题/故障。 |
SUBSCRIPTION_MODIFIED_DEFERRED |
订阅计划已使用“延迟”按比例分配模式进行了修改。已计划在下一个续订日期更改订阅计划。当前计划在续订日期之前仍然有效。 |
SUBSCRIPTION_MODIFIED_IMMEDIATE |
订阅计划已使用“立即”按比例分配模式进行了修改。现有计划已取消,并按比例退款,新计划立即激活。通知包含已取消收据ID。 |
SUBSCRIPTION_PURCHASED |
已购买订阅。 |
SUBSCRIPTION_RENEWED |
有效订阅已续订。 |
SUBSCRIPTION_SCHEDULED_TO_END |
由于已关闭自动续订功能,订阅会在预定时间结束。向客户发送通知的时间为月度订阅预定结束时间之前10天,半年/年度订阅预定结束时间之前30天。 |
实时通知常见问题解答
以下是有关实时通知的常见问题解答 (FAQ)。
- 问1:实时通知消息的格式是什么?
- 实时通知会以JSON消息的形式递送至您指定的HTTPS终端节点。有关更多详细信息,请参阅实时通知消息详情。
- 问2:通知是否会严格按照发布顺序递送?
-
Amazon SNS服务会尝试按照发布顺序递送发布者的消息。但是,网络问题可能会导致HTTPS终端节点出现乱序消息。建议您查看有效负载中的时间戳属性,检查是否存在乱序消息。
- 问3:可能支持的递送机制都有哪些?
-
亚马逊仅支持将通知递送到HTTPS终端节点。有关终端节点注册和确认的详细信息,请参阅使用实时通知。
- 问4:通知流量的来源范围是什么?
-
流量来源于AWS提供的亚马逊IP地址列表。一旦IP地址空间发生变化,AWS就会提供用于通知订阅者的机制。当前IP地址范围列表请见AWS IP地址范围文档。
- 问5:如何使用测试交易来测试我的HTTPS终端节点?
-
可以使用动态应用测试 (LAT) 来测试HTTPS终端节点。请参阅上文中“RTN的动态应用测试”,了解详细信息。
- 问6:我是否需要为所有通知消息调用RVS API?
-
是的,建议调用收据验证服务 (RVS) API以获取关于收据的最新信息。
- 问7:与通知消息相关的SLA是什么?
-
实时通知服务不提供官方延迟SLA。但是,大多数通知应该会在事件发生后几秒钟内发布。
- 问8:我可以创建亚马逊IP地址允许列表吗?
-
可以,但此步骤不是必须步骤。可以批准亚马逊IP地址,这样亚马逊就能与您的服务器通信。请定期检查此列表是否有所变化。
Last updated: 2026年10月8日

