如何检测并validation自动续订订阅的续订?

所以我已经为我的应用程序设置了自动续订订阅,期限为1个月,这相当于沙箱中的5分钟左右。 在我订阅的客户端应用程序中,将收据发送到我的服务器,得到validation,并且在我的数据库中logging了该用户已订阅的logging。

我的问题是如何检查这个订阅是否被更新? 我已经阅读了文档,不知道该怎么办。

这是我到目前为止:

  1. 发送到我的服务器的初始收据validation状态为0 ,很好。 我也得到latest_receipt ,我在我的数据库中取代最旧的收据。
  2. 6分钟后,当我尝试validationlatest_receipt ,我得到状态21006 (过期的收据),这:
  { receipt: { original_purchase_date_pst: '2013-08-06 11:58:04 America/Los_Angeles', unique_identifier: '------------', original_transaction_id: '----------', expires_date: '1376129825000', transaction_id: '------------', quantity: '1', product_id: 'subscription', item_id: '--------', bid: 'com.--------', unique_vendor_identifier: '---------', web_order_line_item_id: '---------', bvrs: '2.0', expires_date_formatted: '2013-08-10 10:17:05 Etc/GMT', purchase_date: '2013-08-10 10:12:05 Etc/GMT', purchase_date_ms: '1376129525000', expires_date_formatted_pst: '2013-08-10 03:17:05 America/Los_Angeles', purchase_date_pst: '2013-08-10 03:12:05 America/Los_Angeles', original_purchase_date: '2013-08-06 18:58:04 Etc/GMT', original_purchase_date_ms: '1375815484000' }, latest_expired_receipt_info: { original_purchase_date_pst: '2013-08-06 11:58:04 America/Los_Angeles', unique_identifier: '-------', original_transaction_id: '-', expires_date: '1376129825000', transaction_id: '-', quantity: '1', product_id: 'subscription', item_id: '-', bid: 'com.-', unique_vendor_identifier: '--', web_order_line_item_id: '-', bvrs: '2.0', expires_date_formatted: '2013-08-10 10:17:05 Etc/GMT', purchase_date: '2013-08-10 10:12:05 Etc/GMT', purchase_date_ms: '1376129525000', expires_date_formatted_pst: '2013-08-10 03:17:05 America/Los_Angeles', purchase_date_pst: '2013-08-10 03:12:05 America/Los_Angeles', original_purchase_date: '2013-08-06 18:58:04 Etc/GMT', original_purchase_date_ms: '1375815484000' }, status: 21006 } 

数组中的第二个元素是latest_receipt_info ,但现在是latest_EXPIRED_receipt_info 。 以下是文档所说的内容:

除了receipt_data字段外,响应还可能包含两个新字段。 如果用户的订阅处于活动状态,并且在收到服务器发送给App Store latest_receipt后进行了更新latest_receipt字段将包含该订阅的上次更新的base-64编码收据这个新收据的解码数据也在latest_expired_receipt_info字段中提供 。 您的服务器可以使用这个新的收据来保存最近更新的logging。

所以如果自从我的服务器上次检查之后,这个sub已经被更新了,更新的解码收据应该在latest_expired_receipt_info 。 在该对象中, expires_date与原始收据的expires_date

我勒个去? 我只是想检查,如果子是活跃的。 任何人都可以用简单的话来解释我该怎么做?

谢谢!

我的经验。 我们假设,我们总是将最初的收据发送到苹果的服务器。

无论如何,您至less会得到两个字段: status (没有评论)和receipt (有关您发送的receipt信息)。

除此之外:

1)如果订阅仍处于活动状态 ,则还需要获取latest_receipt (base64编码的string)和latest_receipt_info (有关该收据的信息)。

2)如果订阅已经过期 ,您还将获得latest_expired_receipt_info (有关上次更新收据的信息)。 是的,你只能得到关于它的信息,没有base64编码的string。

是的,AFAIK,这是没有logging在任何地方。 希望有所帮助。