在沙盒模式下显示未“清仓出售”的 App 购买产品

Posted

技术标签:

【中文标题】在沙盒模式下显示未“清仓出售”的 App 购买产品【英文标题】:In App Purchase Products that are not "Cleared For Sale" showing up in Sandbox mode 【发布时间】:2014-11-12 22:45:31 【问题描述】:

我有一些未在 iTunes Connect 中出售的应用内购买。

我的目标是能够在应用启动后在需要时启用和禁用它们。

但是,当我在沙盒模式下进行测试时,所有这些产品都会显示出来。我曾假设 SKProductsResponse 会在其 invalidProductIdentifiers 方法中返回任何无效产品。

这是沙盒模式和生产模式之间的区别吗?即使这些产品未获准销售,它们是否总是会出现?

【问题讨论】:

这里有同样的问题:我的产品没有被清除出售,但它们被Apple的服务器作为有效产品返回,至少在调试模式下运行应用程序时。由于无法调试已发布的应用程序,我无法确定已发布的应用程序是否得到完全相同的答案,但它的行为强烈表明确实如此。当尝试使用已发布的应用购买此类产品时,购买对话框中会显示提及“环境:沙盒”。 我没有找到删除它们的有效方法。它们不会出现在已发布的构建中。 【参考方案1】:

是的,有区别。我刚刚发布了我的应用程序的一个版本,它检查 11 个不同的 IAP,其中只有 4 个被批准。其中,只有 1 个是“清盘出售”。因此,在产品中,只有 1 个出现。对于处于“已批准”状态的其他人,当我将它们更改为“可销售”时,它们会显示在我的生产应用程序中(一旦更改从 Apple 的服务器传播,这需要几个小时)。

但是,在沙盒中,我的应用正在查找的所有产品标识符都会显示,因为它是在 AppStore 中找到的。正如你所说,它们是空白的。 SKProduct 没有可用于检查此“已出售”标志的属性。

事实上,我找到了你的帖子,因为我希望找到其他处于这种情况的人——因为我的新版本刚刚因为这些“空白项”而被拒绝。你会认为应用商店的评论者会知道沙盒的行为与生产不同。 :/

【讨论】:

【参考方案2】:

沙盒和生产环境之间的一些额外差异值得注意:

#1。 “开发商下架”IAP 被确认为有效产品

我在 Apple App Store 中拥有一款应用已有一段时间了,最​​近决定停止销售一项应用内购买 (IAP)。完成此操作后,在iTunesConnect(AppStoreConnect)上该应用的IAP设置中,该产品的状态显示为“Developer Removed From Sale”:

即便如此,当使用沙盒环境时,SKProductsRequestDelegate.productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) 方法在response.products 列表中将这个“Developer Removed From Sale”IAP 产品作为有效产品返回,即使生产环境返回这个response.invalidProductIdentifiers 列表中的 IAP 产品 ID。

更令人困惑的是,沙盒环境仍然允许我从我的应用程序中购买此产品,即使它被标记为“开发商已从销售中移除”。 ?

我就此联系了 Apple 开发人员技术支持 (DTS),并要求我向 Apple 打开一份错误报告,以便将这种行为传达给他们,因为这似乎不是所需的功能。

#2。 “开发者下架”IAP 收据验证 + SKProductsRequest

由于上述 IAP 已从销售中删除,我认为我还应该从 SKProductsRequest initWithProductIdentifiers() 调用中删除 IAP 产品 ID。

不幸的是,当我的一位用户尝试恢复他们的购买时,因为 IAP 产品 ID 未包含在 SKProductsRequest 初始化中,我无法在收据中验证购买(看起来好像收据数据来自Apple 不包括此类产品)。

因此,即使您从销售中移除 IAP,您仍然需要在 SKProductsRequest 中包含该 IAP 产品 ID,以便用户能够恢复以前购买的 IAP。

(我觉得我的经历与这个问题有关,在这里回复而不是打开另一个问题,对于搜索此信息的人来说会更有效。)

【讨论】:

以上是关于在沙盒模式下显示未“清仓出售”的 App 购买产品的主要内容,如果未能解决你的问题,请参考以下文章

PayPal REST API (PHP SDK) 成功交易未在沙盒模式下显示,在实时模式下显示

应用内购买在 Apple Store 中不起作用,但在沙盒中起作用

iOS In App Purchase仅在App评论中崩溃 - 在沙盒测试中找到作品

PayPal 在沙盒模式下不适用于 WooCommerce [关闭]

iOS - 应用内购买 - 无效的产品标识符

如何使用 java 和 paypal api 在沙盒模式下进行大规模支付?