如何在 Sandbox 的应用购买中实现和测试 iOS 上的免费试用?如何通过 Apple 收据验证流程和试用信息?

Posted

技术标签:

【中文标题】如何在 Sandbox 的应用购买中实现和测试 iOS 上的免费试用?如何通过 Apple 收据验证流程和试用信息?【英文标题】:How to implement and test a free trial on iOS in app purchase in Sandbox? How to validate the flow and trial info via Apple receipts? 【发布时间】:2014-12-11 15:55:28 【问题描述】:

我想通过 iTunes Connect 在应用购买应用程序中为我的 1 个月 AR 订阅创建一个试用期(1 周)。问题是,如何在沙盒中对其进行测试,并在 Apple 收据中获得准确的信息,表明试用期和付费订阅之间的状态差异? 谢谢!

【问题讨论】:

【参考方案1】:

首先您需要创建一个test user from your iTunes account 并将您的应用注册为in app purchase。然后,您可以使用该测试用户购买订阅。在这里,苹果提供了一些便利,例如您的 1 个月订阅相当于 5 分钟,3 个月相当于 15 分钟左右,依此类推。此外,如果您在应用程序购买中将其用作自动更新,它将更新 3 到 4 次,而我测试过的不是固定的。

【讨论】:

感谢这个时间信息。但是,您是否有任何包含此试用信息的准确代码示例?我在开发人员指南的收据字段文档中找不到它 这不是答案【参考方案2】:

对于具有免费试用的应用内产品,客户端的 StoreKit 在应用内部分发出两张 ios7 风格的收据 -

    当用户点击购买开始免费试用时。目前不向用户收费。发送到服务器进行验证的收据将具有:

      expires_date_ms - purchase_date_ms = Number of Free trial days.
    

    免费试用期结束后,如果用户尚未从“管理订阅”屏幕关闭自动续订,则会发出另一张收据,这一次会向用户收费。发出的收据将有

      expires_date_ms - purchase_date_ms = Term Length
    

如果用户在免费试用到期之前关闭了自动续订,服务器应该检测到这一点并为用户关闭订阅。

【讨论】:

【参考方案3】:

我在生产帐户中进行了试用付款并从应用商店获得了收据。此收据包含字段 “is_trial_period” 为“true”。但是试用期过后,我收到了带有真实账单的收据,并且没有试用字段。

我将逻辑写成:

如果收据在验证后具有“is_trial_period”字段且为真 - 即为试用收据 如果收据字段 "original_transaction_id" != "transaction_id" - 这是真实账单,我在自己的数据库中找到原始交易并进行更新。

但 appstore 文档没有相同的试用字段信息。沙盒没有这个字段。

【讨论】:

以上是关于如何在 Sandbox 的应用购买中实现和测试 iOS 上的免费试用?如何通过 Apple 收据验证流程和试用信息?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Unity3d中实现和网页数据的交互

如何从沙盒切换到应用内购买

在 Java 中实现和使用通用的抽象接口

请问如何在css中实现和<table align=center></table>一样的效果?

亚马逊应用内购买如何测试付款

如何在应用内购买中恢复购买?