所以我为我的应用设置了一个自动续订订阅,为期 1 个月,相当于沙盒中的 5 分钟左右。在我订阅的客户端应用程序中,将收据发送到我的服务器,它得到验证,然后我在我的数据库中记录了该用户有订阅的记录。
我的问题是如何检查此订阅是否已续订?我已经阅读了文档,但不知道我该怎么做。
这是我到目前为止的位置:
- 发送到我的服务器的初始收据已通过状态验证
0
,太好了。我也得到latest_receipt
,我在我的数据库中用最旧的收据替换它。 - 6 分钟后,当我尝试验证时
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
字段包含此订阅的最后一次续订的 base-64 编码收据。 该新收据的解码数据也在latest_expired_receipt_info
字段中提供。您的服务器可以使用此新收据来维护最近续订的记录。
因此,如果自从我的服务器上次检查后该子已更新,则更新的解码收据应位于latest_expired_receipt_info
. 在该对象中expires_date
,与原始收据相同expires_date
。
我勒个去?我只想检查子是否处于活动状态。谁能用简单的话解释我该怎么做?
谢谢!