Empty in_app Array

I have searched and read through all the posts I could find about this topic but I'm still confused.


Background Info

In our production environment, we are seeing about 1 in 10 of our transactions come back with an empty in_app array. Here are two examples:


{
  "environment":"Production",
  "status":0,
  "receipt": {
  "app_item_id":**********,
  "receipt_type":"Production",
  "request_date_pst":"2015-08-14 15:05:28 America/Los_Angeles",
  "original_purchase_date_ms":"1438196789000",
  "request_date":"2015-08-14 22:05:28 Etc/GMT",
  "original_purchase_date":"2015-07-29 19:06:29 Etc/GMT",
  "adam_id":**********,
  "original_purchase_date_pst":"2015-07-29 12:06:29 America/Los_Angeles",
  "in_app":[],
  "download_id":**********,
  "application_version":"13",
  "version_external_identifier":**********,
  "bundle_id":"***************",
  "original_application_version":"5",
  "request_date_ms":"1439589928624"
  }
}


{
  "environment":"Production",
  "status":0,
  "receipt": {
  "app_item_id":**********,
  "receipt_type":"Production",
  "request_date_pst":"2015-08-14 14:31:48 America/Los_Angeles",
  "original_purchase_date_ms":"1437199073000",
  "request_date":"2015-08-14 21:31:48 Etc/GMT",
  "original_purchase_date":"2015-07-18 05:57:53 Etc/GMT",
  "adam_id":**********,
  "original_purchase_date_pst":"2015-07-17 22:57:53 America/Los_Angeles",
  "in_app":[],
  "download_id":**********,
  "application_version":"13",
  "version_external_identifier":**********,
  "bundle_id":"**********",
  "original_application_version":"5",
  "request_date_ms":"1439587908528"
  }
}


According to some users here, if "in_app" is empty, "that means the user's receipt indicates they did not purchase the IAP." I thought it might be some hacking attempts until I received an email w/ a receipt showing they purchased the consumable 4 times and yet they show up as failures because in_app is empty.

According to this, Rich says it may be "fake" data as well. The bundle_id matches our app so it is definitely a purchase for our game. Rich also mentions the docswhere it discusses refreshing the receipt.


Questions

  1. Is it possible for a user to buy a consumable four times in a row and have the "application receipt not be ready yet"?
  2. Is it a matter of latency that can cause the receipt to not be ready yet, or is it some other factor? It seems odd that my device can talk to Apple's servers, request a purchase, get a success response with a receipt, yet that receipt isn't "ready". Why wouldn't Apple wait to respond until the receipt is ready? Am I misunderstanding how this works? I hope so 🙂
  3. In the Receipt Fields section of the docs, I see nothing mentioning an "adam_id". Is it possible our empty in_app receipts are from an older iOS version?


Cheers,

Colter

When a user purchases a consumable there will be a call to updatedTransactions. At that time the receipt will exist and it will contain the IAP field. The receipt will continue to contain the IAP field until it is refreshed by your code or by a significant event involving the app (delete and reinstall, restore backup, etc.).


Perhaps your code is refreshing the receipt.

same here. do you solve this? when user purchase the IAP in mac, in_app is empty, and SKReceiptRefreshRequest is not working. need help.

Empty in_app Array
 
 
Q