如何获取自动 renewable-subscription 的到期日期

How to get expiration date of auto renewable-subscription

我搜索了很多解决方案/至少是我的问题或误解的答案。有很多关于在 Objective-C 中为 iOS 实现原生 IAP 的文档——这在特定级别之前也很有用,但与 TiStorekit (Appcelerator Titanium) 的实现相关,我目前完全被阻止了。

基本上很简单。我正在尝试向用户提供一些自动续订订阅形式的高级套餐。这些产品在 iTunesConnect 中定义,我可以请求包含有关标题和描述信息的产品。我想了解 Titanium (TiStorekit) 实现中的过程如何通过具体示例解决(文档中完全缺少这些内容)。它很好地解释了您需要什么样的功能和听众,例如,我们在购买产品后着陆,但从来没有说明产品数据在哪里以及数据结构是什么样子的。

这让我把整个话题都带到了一种黑盒开发和测试中。从应用程序的角度来看,我只想知道,当订阅(用户可能几秒钟前购买)即将到期时,我如何获取信息。 在哪里可以找到这些信息以及如何访问这些信息?

在我阅读的所有文档中,这些字段似乎都存在并且可用,但我根本无法阅读任何内容 expiration-date。从概念的角度来看,我没有收据的服务器端验证。我想将用户的收据存储在服务器上,当他登录时,我会加载收据(如果标记为 "premium" 客户)并根据苹果进行验证。如果它仍然有效,那么一切都很好,我知道它要么已续订,要么仍在有效期限内。

我现在尝试了我在所有文档和其他文章中找到的所有内容,我唯一实现的是在您恢复购买或购买某物时解析来自 Storekit 的收据。收据包含签名和 "purchase-info",但我无法从中读取任何有用的属性。

首先提出一个问题:

我可以在哪里以及如何 (!) 访问 f.e。基于 TiStorekit (Appcelerator) 实现的自动续订订阅的到期日期?

希望得到救援, 网狮

获取收据使用

Storekit.addEventListener('transactionState', function (evt) 

case Storekit.TRANSACTION_STATE_PURCHASED:

// Receive the receipt and decode it
///**********************************************
  var receiptB64String = Ti.Utils.base64encode(evt.receipt).text; 

然后将其发送到您的网络服务器,并使用 php 脚本通过 Apple 服务器验证收据。

您会收到如下 Json 响应:

Valid Json

{ "receipt":{ "original_purchase_date_pst": "2016-10-15 07:24:27 America/Los_Angeles", "unique_identifier": "2716364e7fe61118b5fbfa12eaf3a7506a5e1c32", "original_transaction_id": "1000000242683498", "expires_date": "1476826579000", "transaction_id": "1000000243499464", "quantity": "1", "product_id": "6个月", "item_id": "1164542704", "bid": "com.xxxxxxx.xxxxxxx", "unique_vendor_identifier": "xxxxxx-xxx-xxxxxxxxxx", "web_order_line_item_id": "1000000033471963", "bvrs": "1.0", "expires_date_formatted": "2016-10-18 21:36:19 Etc/GMT", "purchase_date": "2016-10-18 21:06:19 Etc/GMT", "purchase_date_ms": "1476824779000", "expires_date_formatted_pst": "2016-10-18 14:36:19 America/Los_Angeles", "purchase_date_pst": "2016-10-18 14:06:19 America/Los_Angeles", "original_purchase_date": "2016-10-15 14:24:27 Etc/GMT", "original_purchase_date_ms":“1476541467000” }, "latest_expired_receipt_info":{ "original_purchase_date_pst": "2016-10-15 07:24:27 America/Los_Angeles", "unique_identifier": "2716364e7fe61118b5fbfa12eaf3a7506a5e1c32", "original_transaction_id": "1000000242683498", "expires_date": "1476826579000", "transaction_id": "1000000243499464", "quantity": "1", "product_id": "6个月", "item_id": "1164542704", "bid": "com.xxxxxx.xxxxxxx", "unique_vendor_identifier": "xxxxxxxx-9CB8-xxxx-B1F4-xxxxxxxxxxx", "web_order_line_item_id": "1000000033471963", "bvrs": "1.0", "expires_date_formatted": "2016-10-18 21:36:19 Etc/GMT", "purchase_date": "2016-10-18 21:06:19 Etc/GMT", "purchase_date_ms": "1476824779000", "expires_date_formatted_pst": "2016-10-18 14:36:19 America/Los_Angeles", "purchase_date_pst": "2016-10-18 14:06:19 America/Los_Angeles", "original_purchase_date": "2016-10-15 14:24:27 Etc/GMT", "original_purchase_date_ms":“1476541467000” }, "status": 21006 }

状态 21006 表示此收据已过期。 将信息保存到应用程序或服务器上的数据库中。