如何在 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 收据验证流程和试用信息?的主要内容,如果未能解决你的问题,请参考以下文章