添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

实时通知概述

亚马逊会使用收据告知开发者应用程序内商品的用户购买状态。收据中包含开发者提交应用时定义的IAP相关信息及订单状态。目前,要获取最新收据状态,您需要定期遵循 拉取模式 ,通过调用 收据验证服务 (RVS) 查询亚马逊服务。

亚马逊可以使用实时通知提供实时 服务器 推送通知 。亚马逊的RTN服务器会向您的后端服务器发送通知,其中包含与客户购买相关的信息,您收到之后可通过RVS对其进行验证。

可以将实时通知与现有RVS基础架构结合使用。下图展示了RVS流程与RTN流程的交互方式。有关这些流程的详情,请参阅以下分解步骤。

步骤1-5 : 这些步骤遵循 收据验证服务概述 中提及的请求流程。

步骤6 : 亚马逊实时通知(RTN)向您的应用服务器(开发者的后端服务器)发送关于客户应用内购买的通知消息。

步骤7 : 应用服务器向RVS服务器发送验证收据的请求,并获取与收据相关的所有信息。

步骤8 : RVS服务器确认收据的有效性,然后返回与收据相关的信息。

无需等待RVS流程(步骤1-5)完成,即可触发实时通知流程(步骤6-8)。两个流程可以同时触发。

使用实时通知前,需要确保将环境设置为可接收RTN响应。请确保您的安全后端服务器符合以下要求:

  • 后端服务器需要具备HTTPS终端节点才能接收RTN响应。
  • 后端服务器必须能够处理亚马逊发送的HTTPS POST请求。
  • 后端服务器必须使用来自受信任证书提供方的有效SSL证书。
  • RTN的动态应用测试

    请参阅以下步骤来设置RTN的动态应用测试 (LAT)。

  • 动态应用测试 中执行IAP购买。
  • 亚马逊服务器会返回RTN有效负载,其中包含属性 betaProductTransaction=true
  • 实时通知消息详情

    实时通知会通过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_PURCHASED 已购买订阅。 SUBSCRIPTION_AUTO_RENEWAL_OFF 已关闭订阅的自动续订功能。 SUBSCRIPTION_CANCELLED 订阅已取消(自愿或非自愿)。 SUBSCRIPTION_EXPIRED 订阅已过期。 SUBSCRIPTION_SCHEDULED_TO_END 由于已关闭自动续订功能,将在预定时间结束订阅。通知会在客户的月度订阅预定结束时间之前10天发送,会在客户半年/年度订阅预定结束时间之前30天发送。 SUBSCRIPTION_AUTO_RENEWAL_ON 订阅的自动续订功能已打开。 SUBSCRIPTION_RENEWED 有效订阅已续订。 SUBSCRIPTION_CONVERTED_FREE_TRIAL_TO_PAID 有效免费试用订阅已转换为付费订阅。 SUBSCRIPTION_IN_GRACE_PERIOD 订阅已进入宽限期(如果启用)。 SUBSCRIPTION_OUT_OF_GRACE_PERIOD 用户修复了曾在宽限期内出现的订阅付款问题/故障。
    问题1:实时通知消息的格式是什么?
    实时通知会以JSON消息的形式递送至您指定的HTTPS终端节点。有关详细信息,请参阅上文“实时通知消息详情”。
    问题2:通知是否会严格按照发布顺序递送?

    Amazon SNS服务会尝试按照发布顺序递送发布者的消息。但是,网络问题可能会导致HTTPS终端节点出现乱序消息。建议您查看有效负载中的时间戳属性,检查是否存在乱序消息。

    问题3:哪些递送机制可能会受到支持?

    目前,我们仅支持将通知递送到HTTPS终端节点。请参阅 Amazon SNS文档 ,了解设置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地址 ,这样亚马逊就能与您的服务器通信。请定期检查此列表是否有所变化。