iOS可续订到期日期字段

问题描述 投票:10回答:1

在验证可续订收据时,我试图获取最新收据的到期日期。

根据苹果关于收据字段的文档,"expires_date "字段应该包含一个数字,这个数字是自1970年1月1日格林尼治标准时间00:00:00以来的毫秒数。https:/developer.apple.comlibraryiosreleasenotesGeneralValidateAppStoreReceiptChaptersReceiptFields.html#/apple_refdocuidTP40010573-CH106-SW1。)

然而,当我从 "expires_date "字段中获取该字段时,我收到的是一个带有格式化日期的字符串。有另一个字段叫做 "expires_date_ms",似乎提供了正确的数据。苹果公司声明:"下面没有记录的键是苹果公司保留使用的,必须被你的应用程序忽略。"

这是我的收据的一个例子。

{"quantity":"1", 
 "product_id":"com.testapp.test",
 "transaction_id":"1000000135676121", 
 "original_transaction_id":"1000000135134855", 
 "purchase_date":"2014-12-15 06:53:54 Etc/GMT",  
 "purchase_date_ms":"1418626434059", 
 "purchase_date_pst":"2014-12-14 22:53:54 America/Los_Angeles",  
 "original_purchase_date":"2014-12-15 06:51:12 Etc/GMT",  
 "original_purchase_date_ms":"1418626272000",  
 "original_purchase_date_pst":"2014-12-14 22:51:12 America/Los_Angeles",  
 "expires_date":"2014-12-15 06:56:10 Etc/GMT",  
 "expires_date_ms":"1418626570000",  
 "expires_date_pst":"2014-12-14 22:56:10 America/Los_Angeles",  
 "web_order_line_item_id":"1000000028947356",  
 "is_trial_period":"false"
}]

我应该用哪个字段来获取过期日期与最佳实践?

in-app-purchase subscription auto-renewing
1个回答
6
投票

正如你所发现的,文档中的"过期日期"在这个链接...

https:/developer.apple.comlibraryiosreleasenotesGeneralValidateAppStoreReceiptChaptersReceiptFields.html#/apple_refdocuidTP40010573-CH106-SW1。

...国家 下面没有记录的键是保留给苹果使用的,你的应用程序必须忽略。 然而,现在它确实说"过期日期"是一个 ASN.1 字段值 IA5STRING,解释为 RFC 3339 日期。.

看来,截至今天(2015-12-04),在你的问题提出一年后,苹果公司还没有澄清,并将官方的"。过期日期_ms"字段,该字段显然有 毫秒 代表"过期日期".

你还会发现,一张收据上有一个。MS 版本和 _pst 枣的版本。 该 _pst 显然是 "PST "或AmericaLos_Angeles时区。

receipt":{"receipt_type":"ProductionSandbox", "adam_id":0, "app_item_id":0, "bundle_id":"com.my.cool.app", "application_version":"1.0.3", "download_id":0, "version_external_identifier":0, "receipt_creation_date":"2015-12-04 03:48:00 Etc/GMT", "receipt_creation_date_ms":"1449200880000", "receipt_creation_date_pst":"2015-12-03 19:48:00 America/Los_Angeles", "request_date":"2015-12-04 03:53:45 Etc/GMT", "request_date_ms":"1449201225187", "request_date_pst":"2015-12-03 19:53:45 America/Los_Angeles", "original_purchase_date":"2013-08-01 07:00:00 Etc/GMT", "original_purchase_date_ms":"1375340400000", "original_purchase_date_pst":"2013-08-01 00:00:00 America/Los_Angeles", "original_application_version":"1.0",
"in_app":[
{"quantity":"1", "product_id":"com.my.cool.app.inapppurchase1", "transaction_id":"1000000000000589", "original_transaction_id":"1000000000000589", "purchase_date":"2015-12-03 08:09:32 Etc/GMT", "purchase_date_ms":"1449130172000", "purchase_date_pst":"2015-12-03 00:09:32 America/Los_Angeles", "original_purchase_date":"2015-12-03 08:09:34 Etc/GMT", "original_purchase_date_ms":"1449130174000", "original_purchase_date_pst":"2015-12-03 00:09:34 America/Los_Angeles", "expires_date":"2015-12-03 08:14:32 Etc/GMT", "expires_date_ms":"1449130472000", "expires_date_pst":"2015-12-03 00:14:32 America/Los_Angeles", "web_order_line_item_id":"1000000031087708", "is_trial_period":"false"},
"latest_receipt_info":[
{"quantity":"1", "product_id":"com.my.cool.app.inapppurchase1", "transaction_id":"1000000000000589", "original_transaction_id":"1000000000000589", "purchase_date":"2015-12-03 08:09:32 Etc/GMT", "purchase_date_ms":"1449130172000", "purchase_date_pst":"2015-12-03 00:09:32 America/Los_Angeles", "original_purchase_date":"2015-12-03 08:09:34 Etc/GMT", "original_purchase_date_ms":"1449130174000", "original_purchase_date_pst":"2015-12-03 00:09:34 America/Los_Angeles", "expires_date":"2015-12-03 08:14:32 Etc/GMT", "expires_date_ms":"1449130472000", "expires_date_pst":"2015-12-03 00:14:32 America/Los_Angeles", "web_order_line_item_id":"1000000031087708", "is_trial_period":"false"},
"latest_receipt":"MIItbAYJKoZIhvcNAQcCoIItXTCCLV...truncated...nA=="}

不过,在ios releasenotes改变其措辞或字段列表之前,无论多么无耻,都不建议使用 "PST "或 "AmericaLos_Angeles "时区。MS_pst 领域:

© www.soinside.com 2019 - 2024. All rights reserved.