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
- Is it possible for a user to buy a consumable four times in a row and have the "application receipt not be ready yet"?
- 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 🙂
- 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