Ios 如何检测和验证自动续费订阅的续费?
因此,我为我的应用程序设置了一个自动续费订阅,期限为1个月,在沙箱中大约等于5分钟。在我订阅的客户端应用程序中,将收据发送到我的服务器,它得到验证,我在数据库中记录该用户已订阅 我的问题是如何检查此订阅是否已续订?我看了文件,不知道该怎么办 到目前为止,我的情况如下:Ios 如何检测和验证自动续费订阅的续费?,ios,app-store,in-app-purchase,app-store-connect,storekit,Ios,App Store,In App Purchase,App Store Connect,Storekit,因此,我为我的应用程序设置了一个自动续费订阅,期限为1个月,在沙箱中大约等于5分钟。在我订阅的客户端应用程序中,将收据发送到我的服务器,它得到验证,我在数据库中记录该用户已订阅 我的问题是如何检查此订阅是否已续订?我看了文件,不知道该怎么办 到目前为止,我的情况如下: 发送到我的服务器的初始收据通过状态验证0,很好。我还得到了最新的收据,我在数据库中将其替换为最旧的收据 6分钟后,当我尝试验证最新收据时,我得到状态21006(过期收据),并且: 数组中的第二个元素过去是latest\u rece
0
,很好。我还得到了最新的收据
,我在数据库中将其替换为最旧的收据最新收据时,我得到状态21006
(过期收据),并且:
latest\u receipt\u info
,但现在是latest\u EXPIRED\u receipt\u info
。以下是文件中的内容:
除了接收数据字段外,响应还可能包括
两个新领域如果用户的订阅处于活动状态且
通过收到您的发票后发生的交易续签
服务器发送到应用商店,最新收据字段包括
此订阅上次续订的base-64编码收据。
此新收据的解码数据也在
最新\u过期\u收据\u信息
字段。您的服务器可以使用这个新的
保存最近一次续订记录的收据
因此,如果sub自上次检查我的服务器后已续签,则续签的解码收据应在最新\u过期\u收据\u信息中
。在该对象中,expires\u date
与原始收据的expires\u date
相同
怎么回事?我只想检查潜艇是否处于活动状态。谁能简单地解释一下我是怎么做到的
谢谢大家! 我的经验。让我们假设,我们总是向苹果的服务器发送初始收据 在任何情况下,您都将获得至少包含两个字段的JSON:
status
(无注释)和receipt
(关于您发送的收据的信息)
除此之外:
1) 如果订阅仍处于活动状态,您将另外获得最新收据
(base64编码字符串)和最新收据信息
(有关该收据的信息)
2) 如果订阅已过期,您还将获得最新的\u过期的\u收据\u信息
(有关上次续订收据的信息)。是的,您只获得有关它的信息,没有base64编码字符串
是的,好吧,这在任何地方都没有记录。希望这能有所帮助。还有一个直接的问题-为什么沙盒不能自动续订?或者我自己怎么更新?现在收据在5分钟后过期,仅此而已。我需要以某种方式测试我的代码。在沙盒中,您正在使用测试帐户。您不能使用测试帐户登录iTunes并禁用订阅的自动续订。为了让您测试这种情况,当您的自动续费订阅过期且处于非活动状态时,Apple仅在沙箱中进行5次续费(即,您有初始事务,之后进行5次续费->总订阅队列长度是您订阅长度的6倍)。这将在8小时后刷新。或者你可以使用其他测试帐户。基本上,我只需要验证初始收据。这回答了我的问题。@Alexandrpaly我有一个问题,当他取消并再次激活订阅时,主收据会发生什么?是否会产生新的收据,或者会发生什么?难以置信的是,苹果如何将一个简单的订阅服务转变为面向开发者的火箭科学!!
{ 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 }