Apple iOS 应用内购买服务器到服务器通知的“取消”通知案例?

Posted

技术标签:

【中文标题】Apple iOS 应用内购买服务器到服务器通知的“取消”通知案例?【英文标题】:Apple iOS Inapp purchase Server to Server Notifications' 'Cancel' notification cases? 【发布时间】:2019-10-14 18:39:51 【问题描述】:

我们一直在沙盒环境中反复测试 In App purchase Server to Server 通知。 Apple 的文档 here 声明 Cancel 类型通知:

表示订阅已被 Apple 客户支持或在用户升级订阅时被 App Store 取消。 cancel_date 键包含取消或升级订阅的日期和时间。

因此,当我们从订阅组执行产品升级时,我们应该收到Cancel 通知,但我们却收到了INTERACTIVE_RENEWAL?这是因为我们在沙盒环境中进行测试。我们是否在生产中获得了CANCEL,如果是,我们是否还应该期待另一个INTERACTIVE_RENEWAL 在生产中。

【问题讨论】:

【参考方案1】:

如果订阅已由 Apple 支持部门退还,您只会收到 CANCEL 通知。您应该期待 INTERACTIVE_RENEWAL 升级事件。

【讨论】:

没错,这就是我所观察到的。但是 Apple 的文档明确提到,对于升级,CANCEL 也应该出现。你有同样的支持证词吗?另外,我只在 Sandbox 中进行了测试,不确定生产中是否会有不同的行为。 WWDC 2019 在他们的一个演示文稿中提到,如果升级,您应该期待两个通知 CANCELINTERACTIVE_RENEWAL【参考方案2】:

这是因为我们在沙盒环境中进行测试。我们是否在生产中获得了 CANCEL,如果是,我们是否还应该期待另一个 INTERACTIVE_RENEWAL 在生产中。

正确。此行为是由于 Sandbox env 造成的。 在生产中,您会同时收到通知。

来自 Apple 文档: CANCEL - 表示当用户升级订阅时,Apple 客户支持或 App Store 取消了订阅。 cancel_date 键包含取消或升级订阅的日期和时间。

https://developer.apple.com/documentation/storekit/in-app_purchase/enabling_server-to-server_notifications

【讨论】:

【参考方案3】:

如果您今天查看 CANCEL (20210404) 的文档,您会看到 CANCEL 通知不再提及升级时发送的部分。他们更改了文档(我想也更改了行为),但没有明确提及(例如更改日志),并且不包括文档页面的修改时间。因此,作为开发人员,我们很难以一种简单的方式检测到变化。

【讨论】:

以上是关于Apple iOS 应用内购买服务器到服务器通知的“取消”通知案例?的主要内容,如果未能解决你的问题,请参考以下文章

ios:应用内购买内容在下载 95% 后停止从 Apple 服务器下载

iOS应用内支付(IAP)服务端端校验详解

iOS中应用内购买的服务器端验证最佳实践

无法接收应用内购买退款服务器到服务器通知

iOS:如何将 Apple 托管的内容上传到 itunesconnect 中的应用内购买

应用内购买内容 iOS 的应用程序上传器错误