2014-12-15 10 views
5

Durante la verifica di una ricevuta di abbonamento rinnovabile, sto tentando di ottenere la data di scadenza dell'ultima ricevuta.abbonamento rinnovabile iOS scadenza scad. Campo

Secondo la documentazione di Apple sui campi ricevuta campo "expires_date" dovrebbe contenere un numero che rappresenta il numero di millisecondi a partire dal 1 gennaio 1970, 00:00:00 GMT. (https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html#//apple_ref/doc/uid/TP40010573-CH106-SW1)

Quando prelevo il campo tuttavia sto ricevendo una stringa con una data formattata dal campo "expires_date". C'è un altro campo chiamato "expires_date_ms" che sembra fornire i dati corretti. Apple afferma "Le chiavi non documentate di seguito sono riservate per l'utilizzo da parte di Apple e devono essere ignorate dalla tua app."

qui è un esempio della mia ricevuta:

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

quale campo devo usare per ottenere la data scaduta con le migliori pratiche?

+1

Ho appena archiviato un bug report con Apple su questo. Cosa hai finito per usare in produzione? – Moritz

risposta

1

come l'avete trovato, la documentazione per "expires_date" a questo link ...

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

... afferma chiavi non documentate di seguito sono riservati per l'utilizzo da parte di Apple e devono essere ignorati dalla tua app. Tuttavia ora si dice che "expires_date" è un ASN.1 Valore campo IA5STRING, interpretato come una data 3333 RFC.

Sembra che a partire da oggi (2015/12/04), un anno dopo la tua domanda, Apple deve ancora chiarire e rendere ufficiale la "expires_date_ms" sul campo che ha chiaramente i millisecondi che rappresentano la " expires_date ".

Come puoi trovare anche, una ricevuta contiene un _ms versione e _pst versione di date. Il _pst è chiaramente per il fuso orario "PST" o 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=="} 

Tuttavia, fino a quando i ios releasenotes cambia la sua formulazione o un elenco di campi, è tuttavia ignominiosa, non raccomanda di utilizzare i _ms e _pst campi.

Problemi correlati