如何检测并validation自动续订订阅的续订?
所以我已经为我的应用程序设置了自动续订订阅,期限为1个月,这相当于沙箱中的5分钟左右。 在我订阅的客户端应用程序中,将收据发送到我的服务器,得到validation,并且在我的数据库中logging了该用户已订阅的logging。
我的问题是如何检查这个订阅是否被更新? 我已经阅读了文档,不知道该怎么办。
这是我到目前为止:
- 发送到我的服务器的初始收据validation状态为
0
,很好。 我也得到latest_receipt
,我在我的数据库中取代最旧的收据。 - 6分钟后,当我尝试validation
latest_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在任何地方。 希望有所帮助。