StoreKit订阅免费试用,购买后不在收据中(tx id off 1)

问题描述 投票:0回答:1

我在我的申请中提供订阅,并在购买后根据收据验证该交易以获得其到期日期。我这样做是通过从磁盘加载收据,将其发送到Apple进行验证/解密(我知道这是不好的做法),然后在JSON响应中迭代latest_receipt_info,寻找与transactionIdentifier对象的SKPaymentTransction匹配的事务。

这适用于大多数订阅,但不适用于提供免费试用/介绍性订阅的订阅。请看下面我的例子:

  1. 我购买了transactionIdentifier1000000506350685originalTransaction.transactionIdentifier返回我的应用程序的订阅。
  2. 我从Apple收到最新的JSON收据,其最新条目是我的产品标识符和时间戳匹配,但nulltransaction_id1000000506350686也是如此。

因此我无法验证购买。

在没有免费试用/入门优惠的情况下购买订阅时没有问题。返回的收据中没有与返回到我的应用程序的事务ID匹配的其他对象。

这是在沙盒环境中,我不确定生产中的行为。

有没有人有类似的经历?我该怎么做才能解决这个问题?

ios in-app-purchase subscription storekit
1个回答
0
投票

我认为这可能是因为您之前已经在沙盒中购买了该产品,并且在您购买之前在沙盒中没有设备收据(与生产不同)。

无论哪种方式,您应该看到的是收据中最新的original_transaction_idproduct_id,以验证订阅是否有效。如果您将交易ID保存在数据库中,则交易ID可以是您的交易的关键,但不应用于验证购买。

这是一篇非常好的博客文章,介绍了您的应用内购买服务器应该做些什么来验证和保持订阅状态最新:expiration_date

我这样做是通过从磁盘加载收据,将其发送到Apple进行验证/解密(我知道这是不好的做法)。

这实际上是Apple的iOS Subscriptions are Hard

© www.soinside.com 2019 - 2024. All rights reserved.