2014-12-15 4 views
5

При проверке получения возобновляемой подписки я пытаюсь получить дату истечения срока действия последней квитанции.iOS возобновляемая подписка expires_date поле

Согласно документации яблока на квитанции полей поле «expires_date» должно содержать число, которое является числом миллисекунд, прошедшим с 1 января 1970, 00:00:00 GMT. (https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html#//apple_ref/doc/uid/TP40010573-CH106-SW1)

Когда я выборка в поле, однако, я получаю строку с форматированной датой из поля «expires_date». Существует другое поле под названием «expires_date_ms», которое, как представляется, обеспечивает правильные данные. Apple заявляет, что «Ключи, не описанные ниже, зарезервированы для использования Apple и должны быть проигнорированы вашим приложением».

вот пример моего поступления:

{"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" 
}] 

Какого поле я должен использовать, чтобы получить истекший срок годности с наилучшей практикой?

+1

Я только что опубликовал отчет об ошибке с Apple об этом. Что вы в конечном итоге использовали в производстве? – Moritz

ответ

1

Как вы нашли, документация для «expires_date» по этой ссылке ...

https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html#//apple_ref/doc/uid/TP40010573-CH106-SW1

... заявляет ключи не документированы ниже, зарезервированы для использования в Apple, и должны быть проигнорированы по вашему приложению. Однако сейчас он говорит, что «expires_date» является ASN.1 Значение поля IA5STRING, интерпретируемое как RFC 3339 date.

Оказывается, что по состоянию на сегодняшний день (2015-12-04), через год после того, как ваш вопрос, Apple еще предстоит уточнить и сделать официальным «expires_date_ms» поле, которое явно имеет миллисекунды, представляющую " expires_date ".

Как вы также найдете, квитанция содержит _ms версии и _pst версии даты. _pst явно соответствует часовому поясу «PST» или America/Los_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=="} 

Тем не менее, пока КСН ReleaseNotes не меняет формулировку или список полей, это, однако бесславно, не рекомендуется использовать _ms и _pst поля.