所以我为我的应用设置了一个可自动更新的订阅,期限为1个月,相当于沙盒中的5分钟左右。在我订阅的客户端应用程序中,将收据发送到我的服务器,它得到验证,我在我的数据库中记录了该用户订阅的记录。
我的问题是如何检查此订阅是否已续订?我已经阅读了文档,无法弄清楚我应该怎么做。
这是我到目前为止的地方:
0
进行验证,非常棒。我也得到latest_receipt
,我用我最早的收据替换了我的数据库。latest_receipt
后6分钟后,我收到状态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
字段包含一个 此订阅的上次续订的base-64编码收据。 此新收据的解码数据也在latest_expired_receipt_info
字段。您的服务器可以使用这个新的 收据以保持最近更新的记录。
因此,如果自我的服务器上次检查后该子订单已续订,则续订的解码收据应为 latest_expired_receipt_info
。在该对象中,expires_date
与原始收据的expires_date
相同。
到底是什么?我只想检查子是否有效。任何人都可以用简单的词语解释我该怎么做?
谢谢!
答案 0 :(得分:30)
我的经历。我们假设,我们总是将初始收据发送到Apple的服务器。
在任何情况下,您都会获得至少包含两个字段的JSON:status
(无评论)和receipt
(有关您已发送的收据的信息)。
除此之外:
1)如果订阅仍处于活动状态,您还将获得latest_receipt
(base64编码的字符串)和latest_receipt_info
(有关该收据的信息)。
2)如果订阅已过期,您还会获得latest_expired_receipt_info
(有关上次续订收据的信息)。是的,您只获得有关它的信息,没有base64编码的字符串。
是的,AFAIK,在任何地方都没有记录。希望有所帮助。