Objective c 自动续订IAP:最新的_收据字段

Objective c 自动续订IAP:最新的_收据字段,objective-c,ios,cocoa-touch,in-app-purchase,Objective C,Ios,Cocoa Touch,In App Purchase,当用户购买订阅时,我将已完成交易的收据存储在服务器上,并将其与一个键一起,以标识该收据所属的用户。当应用程序需要检查订阅是否仍处于活动状态时,它会查询服务器,服务器使用Apple验证收据,并将信息返回到我的应用程序,无论订阅是否过期 现在的问题是: 当响应返回一个最新的\u收据/\u信息字段时,服务器应获取该收据并替换旧收据以备将来验证。如果订阅期存在间隔(例如,用户订阅了1个月,然后取消,然后再次订阅),或者用户更改了订阅类型(例如,从1个月更改为3个月),会发生什么情况 原始收据是否仍然有效

当用户购买订阅时,我将已完成交易的收据存储在服务器上,并将其与一个键一起,以标识该收据所属的用户。当应用程序需要检查订阅是否仍处于活动状态时,它会查询服务器,服务器使用Apple验证收据,并将信息返回到我的应用程序,无论订阅是否过期

现在的问题是:

当响应返回一个
最新的\u收据
/
\u信息
字段时,服务器应获取该收据并替换旧收据以备将来验证。如果订阅期存在间隔(例如,用户订阅了1个月,然后取消,然后再次订阅),或者用户更改了订阅类型(例如,从1个月更改为3个月),会发生什么情况

原始收据是否仍然有效并返回
最新收据
/
\u信息
字段,或者我是否需要存储新交易的新收据


我现在真的对自动续签的事情感到困惑,所以我甚至不确定我的验证过程是否正确。

我不确定你是否有可能验证收据,也许它会按照你的方式工作,但我们做了一些细微的不同,这样就不会面临你的问题

我们将所有收据存储在设备端(请注意,自动续订也会产生新收据)。无论何时需要验证,我们都会将最新的设备存储收据发送到服务器,并通过调用iTunes进行验证。之后,服务器向设备响应有关用户权限的信息


我认为这是苹果公司推荐的方式(或者至少我是这样理解的)。

只是想澄清一下:如果你收到了续费收据,或者用户恢复了订阅,你就用最新的
transactionDate
进行交易,并且只将其发送到服务器进行验证?不,我们只存储最新的,删除旧的(据我记忆所及,我明天将查看我的旧代码)伙计们,我在iap方面有着可怕的经历。我从手机上收到的收据和从苹果公司回来的
最新收据在沙盒中是不同的。为什么?我有更糟糕的问题。现在我正在比较手机发送的字符串和我从苹果公司得到的
最新收据。。它们是不同的。而且更重要的是,手机总是发送相同的字符串,苹果的
最新收据总是不同的。我真的很困惑这个过程是如何工作的:(