Auto Renew Remote Validation

Hi All,

I've a big problem with auto renew purchase validation...



  • I've just one in app purchase auto renew product.
  • I'm testing the in app purchase using sandbox multiples apple's account,
  • When i perform a buy action the validator send to the remote validator but! it contains all the subscritions of the test's users with the same product id and I'm really not comprending how to manage it!!!
  • The app is expecting a return status as expired or valid but if i have severals subscriptions of the same products how I can manage it?!
  • I've tried a lot of times....



Here my appleReceipt decoded


{ "status": 0, "environment": "Sandbox", "receipt": { "receipt_type": "ProductionSandbox", "adam_id": 0, "app_item_id": 0, "bundle_id": "com.xxxx.xxx", "application_version": "0.1.5", "download_id": 0, "version_external_identifier": 0, "receipt_creation_date": "2016-10-06 05:32:42 Etc/GMT", "receipt_creation_date_ms": "1475731962000", "receipt_creation_date_pst": "2016-10-05 22:32:42 America/Los_Angeles", "request_date": "2016-10-06 20:26:55 Etc/GMT", "request_date_ms": "1475785615692", "request_date_pst": "2016-10-06 13:26:55 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": "premium", "transaction_id": "1000000240462090", "original_transaction_id": "1000000240462090", "purchase_date": "2016-10-05 20:12:14 Etc/GMT", "purchase_date_ms": "1475698334000", "purchase_date_pst": "2016-10-05 13:12:14 America/Los_Angeles", "original_purchase_date": "2016-10-05 20:12:15 Etc/GMT", "original_purchase_date_ms": "1475698335000", "original_purchase_date_pst": "2016-10-05 13:12:15 America/Los_Angeles", "expires_date": "2016-10-05 21:12:14 Etc/GMT", "expires_date_ms": "1475701934000", "expires_date_pst": "2016-10-05 14:12:14 America/Los_Angeles", "web_order_line_item_id": "1000000033379337", "is_trial_period": "false" }, { "quantity": "1", "product_id": "premium", "transaction_id": "1000000240472083", "original_transaction_id": "1000000240462090", "purchase_date": "2016-10-05 21:12:14 Etc/GMT", "purchase_date_ms": "1475701934000", "purchase_date_pst": "2016-10-05 14:12:14 America/Los_Angeles", "original_purchase_date": "2016-10-05 21:11:17 Etc/GMT", "original_purchase_date_ms": "1475701877000", "original_purchase_date_pst": "2016-10-05 14:11:17 America/Los_Angeles", "expires_date": "2016-10-05 22:12:14 Etc/GMT", "expires_date_ms": "1475705534000", "expires_date_pst": "2016-10-05 15:12:14 America/Los_Angeles", "web_order_line_item_id": "1000000033379338", "is_trial_period": "false" }, { "quantity": "1", "product_id": "premium", "transaction_id": "1000000240479964", "original_transaction_id": "1000000240462090", "purchase_date": "2016-10-05 22:12:14 Etc/GMT", "purchase_date_ms": "1475705534000", "purchase_date_pst": "2016-10-05 15:12:14 America/Los_Angeles", "original_purchase_date": "2016-10-05 22:11:25 Etc/GMT", "original_purchase_date_ms": "1475705485000", "original_purchase_date_pst": "2016-10-05 15:11:25 America/Los_Angeles", "expires_date": "2016-10-05 23:12:14 Etc/GMT", "expires_date_ms": "1475709134000", "expires_date_pst": "2016-10-05 16:12:14 America/Los_Angeles", "web_order_line_item_id": "1000000033379648", "is_trial_period": "false" }, { "quantity": "1", "product_id": "premium", "transaction_id": "1000000240487077", "original_transaction_id": "1000000240462090", "purchase_date": "2016-10-05 23:12:14 Etc/GMT", "purchase_date_ms": "1475709134000", "purchase_date_pst": "2016-10-05 16:12:14 America/Los_Angeles", "original_purchase_date": "2016-10-05 23:11:17 Etc/GMT", "original_purchase_date_ms": "1475709077000", "original_purchase_date_pst": "2016-10-05 16:11:17 America/Los_Angeles", "expires_date": "2016-10-06 00:12:14 Etc/GMT", "expires_date_ms": "1475712734000", "expires_date_pst": "2016-10-05 17:12:14 America/Los_Angeles", "web_order_line_item_id": "1000000033380023", "is_trial_period": "false" }, { "quantity": "1", "product_id": "premium", "transaction_id": "1000000240490409", "original_transaction_id": "1000000240462090", "purchase_date": "2016-10-06 00:12:14 Etc/GMT", "purchase_date_ms": "1475712734000", "purchase_date_pst": "2016-10-05 17:12:14 America/Los_Angeles", "original_purchase_date": "2016-10-06 00:11:23 Etc/GMT", "original_purchase_date_ms": "1475712683000", "original_purchase_date_pst": "2016-10-05 17:11:23 America/Los_Angeles", "expires_date": "2016-10-06 01:12:14 Etc/GMT", "expires_date_ms": "1475716334000", "expires_date_pst": "2016-10-05 18:12:14 America/Los_Angeles", "web_order_line_item_id": "1000000033380337", "is_trial_period": "false" }, { "quantity": "1", "product_id": "premium", "transaction_id": "1000000240493532", "original_transaction_id": "1000000240462090", "purchase_date": "2016-10-06 01:12:14 Etc/GMT", "purchase_date_ms": "1475716334000", "purchase_date_pst": "2016-10-05 18:12:14 America/Los_Angeles", "original_purchase_date": "2016-10-06 01:11:19 Etc/GMT", "original_purchase_date_ms": "1475716279000", "original_purchase_date_pst": "2016-10-05 18:11:19 America/Los_Angeles", "expires_date": "2016-10-06 02:12:14 Etc/GMT", "expires_date_ms": "1475719934000", "expires_date_pst": "2016-10-05 19:12:14 America/Los_Angeles", "web_order_line_item_id": "1000000033380563", "is_trial_period": "false" }, { "quantity": "1", "product_id": "premium", "transaction_id": "1000000240530486", "original_transaction_id": "1000000240462090", "purchase_date": "2016-10-06 05:31:56 Etc/GMT", "purchase_date_ms": "1475731916000", "purchase_date_pst": "2016-10-05 22:31:56 America/Los_Angeles", "original_purchase_date": "2016-10-06 05:31:56 Etc/GMT", "original_purchase_date_ms": "1475731916000", "original_purchase_date_pst": "2016-10-05 22:31:56 America/Los_Angeles", "expires_date": "2016-10-06 06:31:56 Etc/GMT", "expires_date_ms": "1475735516000", "expires_date_pst": "2016-10-05 23:31:56 America/Los_Angeles", "web_order_line_item_id": "1000000033380837", "is_trial_period": "false" } ] }, "latest_receipt_info": [ { "quantity": "1", "product_id": "premium", "transaction_id": "1000000240462090", "original_transaction_id": "1000000240462090", "purchase_date": "2016-10-05 20:12:14 Etc/GMT", "purchase_date_ms": "1475698334000", "purchase_date_pst": "2016-10-05 13:12:14 America/Los_Angeles", "original_purchase_date": "2016-10-05 20:12:15 Etc/GMT", "original_purchase_date_ms": "1475698335000", "original_purchase_date_pst": "2016-10-05 13:12:15 America/Los_Angeles", "expires_date": "2016-10-05 21:12:14 Etc/GMT", "expires_date_ms": "1475701934000", "expires_date_pst": "2016-10-05 14:12:14 America/Los_Angeles", "web_order_line_item_id": "1000000033379337", "is_trial_period": "false" }, { "quantity": "1", "product_id": "premium", "transaction_id": "1000000240472083", "original_transaction_id": "1000000240462090", "purchase_date": "2016-10-05 21:12:14 Etc/GMT", "purchase_date_ms": "1475701934000", "purchase_date_pst": "2016-10-05 14:12:14 America/Los_Angeles", "original_purchase_date": "2016-10-05 21:11:17 Etc/GMT", "original_purchase_date_ms": "1475701877000", "original_purchase_date_pst": "2016-10-05 14:11:17 America/Los_Angeles", "expires_date": "2016-10-05 22:12:14 Etc/GMT", "expires_date_ms": "1475705534000", "expires_date_pst": "2016-10-05 15:12:14 America/Los_Angeles", "web_order_line_item_id": "1000000033379338", "is_trial_period": "false" }, { "quantity": "1", "product_id": "premium", "transaction_id": "1000000240479964", "original_transaction_id": "1000000240462090", "purchase_date": "2016-10-05 22:12:14 Etc/GMT", "purchase_date_ms": "1475705534000", "purchase_date_pst": "2016-10-05 15:12:14 America/Los_Angeles", "original_purchase_date": "2016-10-05 22:11:25 Etc/GMT", "original_purchase_date_ms": "1475705485000", "original_purchase_date_pst": "2016-10-05 15:11:25 America/Los_Angeles", "expires_date": "2016-10-05 23:12:14 Etc/GMT", "expires_date_ms": "1475709134000", "expires_date_pst": "2016-10-05 16:12:14 America/Los_Angeles", "web_order_line_item_id": "1000000033379648", "is_trial_period": "false" }, { "quantity": "1", "product_id": "premium", "transaction_id": "1000000240487077", "original_transaction_id": "1000000240462090", "purchase_date": "2016-10-05 23:12:14 Etc/GMT", "purchase_date_ms": "1475709134000", "purchase_date_pst": "2016-10-05 16:12:14 America/Los_Angeles", "original_purchase_date": "2016-10-05 23:11:17 Etc/GMT", "original_purchase_date_ms": "1475709077000", "original_purchase_date_pst": "2016-10-05 16:11:17 America/Los_Angeles", "expires_date": "2016-10-06 00:12:14 Etc/GMT", "expires_date_ms": "1475712734000", "expires_date_pst": "2016-10-05 17:12:14 America/Los_Angeles", "web_order_line_item_id": "1000000033380023", "is_trial_period": "false" }, { "quantity": "1", "product_id": "premium", "transaction_id": "1000000240490409", "original_transaction_id": "1000000240462090", "purchase_date": "2016-10-06 00:12:14 Etc/GMT", "purchase_date_ms": "1475712734000", "purchase_date_pst": "2016-10-05 17:12:14 America/Los_Angeles", "original_purchase_date": "2016-10-06 00:11:23 Etc/GMT", "original_purchase_date_ms": "1475712683000", "original_purchase_date_pst": "2016-10-05 17:11:23 America/Los_Angeles", "expires_date": "2016-10-06 01:12:14 Etc/GMT", "expires_date_ms": "1475716334000", "expires_date_pst": "2016-10-05 18:12:14 America/Los_Angeles", "web_order_line_item_id": "1000000033380337", "is_trial_period": "false" }, { "quantity": "1", "product_id": "premium", "transaction_id": "1000000240493532", "original_transaction_id": "1000000240462090", "purchase_date": "2016-10-06 01:12:14 Etc/GMT", "purchase_date_ms": "1475716334000", "purchase_date_pst": "2016-10-05 18:12:14 America/Los_Angeles", "original_purchase_date": "2016-10-06 01:11:19 Etc/GMT", "original_purchase_date_ms": "1475716279000", "original_purchase_date_pst": "2016-10-05 18:11:19 America/Los_Angeles", "expires_date": "2016-10-06 02:12:14 Etc/GMT", "expires_date_ms": "1475719934000", "expires_date_pst": "2016-10-05 19:12:14 America/Los_Angeles", "web_order_line_item_id": "1000000033380563", "is_trial_period": "false" }, { "quantity": "1", "product_id": "premium", "transaction_id": "1000000240530486", "original_transaction_id": "1000000240462090", "purchase_date": "2016-10-06 05:31:56 Etc/GMT", "purchase_date_ms": "1475731916000", "purchase_date_pst": "2016-10-05 22:31:56 America/Los_Angeles", "original_purchase_date": "2016-10-06 05:31:56 Etc/GMT", "original_purchase_date_ms": "1475731916000", "original_purchase_date_pst": "2016-10-05 22:31:56 America/Los_Angeles", "expires_date": "2016-10-06 06:31:56 Etc/GMT", "expires_date_ms": "1475735516000", "expires_date_pst": "2016-10-05 23:31:56 America/Los_Angeles", "web_order_line_item_id": "1000000033380837", "is_trial_period": "false" }, { "quantity": "1", "product_id": "premium", "transaction_id": "1000000240546832", "original_transaction_id": "1000000240462090", "purchase_date": "2016-10-06 06:32:31 Etc/GMT", "purchase_date_ms": "1475735551000", "purchase_date_pst": "2016-10-05 23:32:31 America/Los_Angeles", "original_purchase_date": "2016-10-06 06:32:32 Etc/GMT", "original_purchase_date_ms": "1475735552000", "original_purchase_date_pst": "2016-10-05 23:32:32 America/Los_Angeles", "expires_date": "2016-10-06 07:32:31 Etc/GMT", "expires_date_ms": "1475739151000", "expires_date_pst": "2016-10-06 00:32:31 America/Los_Angeles", "web_order_line_item_id": "1000000033382124", "is_trial_period": "false" }, { "quantity": "1", "product_id": "premium", "transaction_id": "1000000240562363", "original_transaction_id": "1000000240462090", "purchase_date": "2016-10-06 07:32:31 Etc/GMT", "purchase_date_ms": "1475739151000", "purchase_date_pst": "2016-10-06 00:32:31 America/Los_Angeles", "original_purchase_date": "2016-10-06 07:31:57 Etc/GMT", "original_purchase_date_ms": "1475739117000", "original_purchase_date_pst": "2016-10-06 00:31:57 America/Los_Angeles", "expires_date": "2016-10-06 08:32:31 Etc/GMT", "expires_date_ms": "1475742751000", "expires_date_pst": "2016-10-06 01:32:31 America/Los_Angeles", "web_order_line_item_id": "1000000033382384", "is_trial_period": "false" }, { "quantity": "1", "product_id": "premium", "transaction_id": "1000000240583267", "original_transaction_id": "1000000240462090", "purchase_date": "2016-10-06 08:32:31 Etc/GMT", "purchase_date_ms": "1475742751000", "purchase_date_pst": "2016-10-06 01:32:31 America/Los_Angeles", "original_purchase_date": "2016-10-06 08:31:49 Etc/GMT", "original_purchase_date_ms": "1475742709000", "original_purchase_date_pst": "2016-10-06 01:31:49 America/Los_Angeles", "expires_date": "2016-10-06 09:32:31 Etc/GMT", "expires_date_ms": "1475746351000", "expires_date_pst": "2016-10-06 02:32:31 America/Los_Angeles", "web_order_line_item_id": "1000000033382677", "is_trial_period": "false" }, { "quantity": "1", "product_id": "premium", "transaction_id": "1000000240605137", "original_transaction_id": "1000000240462090", "purchase_date": "2016-10-06 09:32:50 Etc/GMT", "purchase_date_ms": "1475746370000", "purchase_date_pst": "2016-10-06 02:32:50 America/Los_Angeles", "original_purchase_date": "2016-10-06 09:32:51 Etc/GMT", "original_purchase_date_ms": "1475746371000", "original_purchase_date_pst": "2016-10-06 02:32:51 America/Los_Angeles", "expires_date": "2016-10-06 10:32:50 Etc/GMT", "expires_date_ms": "1475749970000", "expires_date_pst": "2016-10-06 03:32:50 America/Los_Angeles", "web_order_line_item_id": "1000000033383070", "is_trial_period": "false" }, { "quantity": "1", "product_id": "premium", "transaction_id": "1000000240619226", "original_transaction_id": "1000000240462090", "purchase_date": "2016-10-06 10:33:11 Etc/GMT", "purchase_date_ms": "1475749991000", "purchase_date_pst": "2016-10-06 03:33:11 America/Los_Angeles", "original_purchase_date": "2016-10-06 10:33:12 Etc/GMT", "original_purchase_date_ms": "1475749992000", "original_purchase_date_pst": "2016-10-06 03:33:12 America/Los_Angeles", "expires_date": "2016-10-06 11:33:11 Etc/GMT", "expires_date_ms": "1475753591000", "expires_date_pst": "2016-10-06 04:33:11 America/Los_Angeles", "web_order_line_item_id": "1000000033383642", "is_trial_period": "false" } ], "latest_receipt": "XXX", "service": "apple" }

You need to parse through each IAP and record the expires_date. Then determine if any of those expires_date allows the user to do what they want. For example, if any expires_date is in the future then the user's subscription is active. Another example - is the user entitled to download the April 2016 issue of your magazine. ......You can't use status==0. That does not mean the subscription is current, it only means the receipt is valid.

Hi,

1. You need to parse through each IAP and record the expires_date. Then determine if any of those expires_date allows the user to do what they want.

You mean locally on the device or server side? Does you think is better to manage the expiration locally and only the recepit "formal" validation with a remote server?


2. If I receive to the server a receipt with 4 subscription (ok i parse each iap) but just one of thoose is valid how i can manage it from the server response if i receive only one for all?

Many thanks!!

>locally on the device or server side

I think that on-the-device is better because you can check the signature against the identifierForVendor.


>only one for all

The one receipt contains an array of IAP purchases. Each item in that array is a different IAP receipt.

Auto Renew Remote Validation
 
 
Q