iOS应用程序中的自动续订订阅级别

图片


嗨,这是来自Apphud的 Renat。 在本文中,我们将告诉您自动续订的级别是什么,如何正确配置它们,以及在什么情况下可以在未使用的付费期内退款给用户。


订阅级别是多少?


这是订阅类的名称,具体取决于订阅类提供的服务级别。 订阅第一类意味着最高级别的服务,订阅第二层意味着更低的级别,依此类推。 实际上,很少在哪个应用程序中可以找到两个级别的订阅,更不用说三个或更多级别的订阅了。



纽约时报报纸应用中的两个订阅级别。


如何设置订阅级别?


要配置您的订阅级别,请转到App Store Connect ,选择您的应用程序,然后转到“ 功能”选项卡。 在“应用内购买”部分中,将订阅上移或下移一级。 为此,请按住拖放图标选择所需的订阅,然后将订阅移至所需的级别。



将订阅拖放到更高级别。


订阅编号1应该提供最高水平的服务,例如,订阅所有类别的杂志。 订阅的持续时间与其级别之间没有依赖关系。 因此,最高的订阅可以是年度,而订阅的级别低于一个月。


变更订阅


注册后,用户可以在App Store应用程序中更改订阅。 它可以增加(升级),降低(降级)一个级别或在一个级别内更改订阅(跨级别)。


订阅级别升级(升级)


如果用户的当前订阅处于活动状态,则他将立即切换到新的资费,并且已付费期的未使用部分将返回到卡中。



通知,部分资金将在升级订阅时退还。


在本文的结尾,我们将研究如何捕捉订阅级别的增加并计算回报金额。


订阅降级(降级)


通过降低级别,用户可以在当前付费期结束时切换到新级别。 资金不退还,新订阅的费用在激活后扣除。


同一级别(跨级别)的订阅更改


这是一种常见的情况,它分为两种类型:一个持续时间不同的订阅更改。 当更改期限不同的订阅时,将发生与降级相同的事情:该订阅将在当前付费期结束时应用。


如果持续时间匹配,则当前订阅将被取消,新订阅将立即开始。 这笔钱将从新订阅中扣除,而旧订阅的未使用部分将退还给用户。


如何找到有关在服务器上更改订阅的信息?


您可以验证App Store检查收听 Apple 服务器通知


在检查每个新事务时,您需要查看product_id是否已更改。 更改product_id表示用户已在App Store设置中更改了订阅。


另外,您可以在auto_renew_product_id中查看auto_renew_product_id的值。 在新的订阅生效之前,它将帮助您了解对product_id的更改。


如果您配置了服务器通知 ,请侦听产品更改时调用的DID_CHANGE_RENEWAL_PREF通知。 您可以将自己限制在此通知范围内,并从请求参数中获取新的product_id ,也可以重新检查App Store收据。 在后一种情况下,Apple服务器通知将仅作为计划外检查的触发器。


如何计算升级的退货额?


要了解是否进行了升级,您需要检查is_upgraded字段的值。 值为true表示下一个事务已在新订阅中。


请注意,即使更改同一级别中具有相同持续时间的订阅, is_upgraded也将为true 。 也就是说, is_upgraded = true并不意味着级别增加,而是事实是订阅的更改是通过退款进行的。


is_upgraded字段外, cancellation_date字段还将显示在此事务中,该字段指示取消时间。 它等于或几乎与下一个交易的开始日期重合。


事实证明, cancellation_date字段不仅会在返回订阅时出现,而且还会在升级时出现。


请注意, 升级沙盒订阅时,缺少cancellation_date字段 。 因此,在沙盒中进行测试时,您需要使用下一个交易的Purchase_date而不是cancellation_date在Apple文档中了解有关取消日期的更多信息。


要计算应退还给用户的金额,您需要将未使用的期间除以上次订阅的整个期间,然后乘以其费用:


 # upgrade_date is `cancellation_date` in prodiction or `purchase_date` of new transaction in sandbox # to_f converts date to float timestamp value prorate_amount = price * (upgrade_date.to_f - cancellation_date.to_f) / (expires_date.to_f - purchase_date.to_f) 

在Apphud中如何实施?


Apphud会自动跟踪订阅的更改并计算未使用零件的退货。



与Apphud中的部分资金返还在同一级别的订阅更改示例。


iOS开发人员无需亲自处理这些情况。 您只需要集成SDK,其余的将由Apphud完成。


结论


事实证明,仅更新product_id的值product_id不够的:您还需要考虑升级的退款。 使用订阅需要处理许多临界情况。 我们提供Apphud-一种可以大大简化订阅工作的服务。 您可以免费开始使用它。 注册- 在此链接

Source: https://habr.com/ru/post/zh-CN475758/


All Articles