Empty In-App Purchase receipt

Hi,


We are validating In-App purchases using our server to communicate with App Store as descibed on Validating Receipts With the App Store.


To do so, we do request https://buy.itunes.apple.com/verifyReceiptusing our password and base64 encoded receipt-data but, for some purchases, the response from Apple is missing information. For example:


{
    "status": 0,
    "environment": "Production",
    "receipt": {
        "receipt_type": "Production",
        "adam_id": <obfuscated>,
        "app_item_id": <obfuscated>,
        "bundle_id": "<obfuscated>",
        "application_version": "218",
        "download_id": 112005675632821,
        "version_external_identifier": 811573888,
        "receipt_creation_date": "2015-02-14 10:26:06 Etc/GMT",
        "receipt_creation_date_ms": "1423909566000",
        "receipt_creation_date_pst": "2015-02-14 02:26:06 America/Los_Angeles",
        "request_date": "2017-08-22 19:18:03 Etc/GMT",
        "request_date_ms": "1503429483962",
        "request_date_pst": "2017-08-22 12:18:03 America/Los_Angeles",
        "original_purchase_date": "2015-02-08 12:35:36 Etc/GMT",
        "original_purchase_date_ms": "1423398936000",
        "original_purchase_date_pst": "2015-02-08 04:35:36 America/Los_Angeles",
        "original_application_version": "206",
        "in_app": []
    }
}



Note the in_app array attribute has no element inside it and there's no latest_receipt_info attribute in the response.

Also, you can see the status attribute value is 0 meaning the receipt is valid.


All of our in-app purchase products are auto-renewable subscriptions and this error happens regardless of it but only for some base64 encoded receipt-data.



Can you help me?

Replies

We're seeing this too!


https://forums.developer.apple.com/thread/85740

For anyone who can replicate this issue firsthand, this is a bug report issue. It's important that you provide instructions on how a user can install the app, make the in_app purchase and find that the resulting appStoreReceipt has an empty in_app array. If instead, you are getting reports from users that this is occurring, this would also be a bug report issue, but the instructions for submitting such report is different.


If you can replicate this issue yourself by making the in app purchase yourself, please submit a bug report as follows.

The issue which you’ve described below is a bug report issue to be reviewed by the Apps Ops Engineering QA team.

To submit a bug report for investigation by Apps Ops Engineering, please use the Apple Developer Bug Report web page - http://bugreport.apple.com.

After logging in, select the iTunesConnect Product.


Fill out the bug report form. In the description section - please include

1. the application ID

2. if applicable, the iTunes Store that the purchase was attempted - US, Canada, Mexico, China, Russia, etc.

3. The in-app purchase identifiers that are failing to be purchased

4. The steps to find the in-app purchase items. If the application is is other than English, please include screenshots showing now to navigate the app to find the in-app purchase items.

5. Indicate that the issue is occuring in the production app.


If this issue is only occurring with some customers, but you are unable to replicate this issue yourself, it still is a bug report, but the reporting procedure is more complex. You will need to include the following information.

6. the iTunes user account who is reporting the problem.

7. the date and time of the purchase

8. the base64 encoded receipt for the user captured following the successful transaction notification including the shared secret so that the appStoreReceipt can be validated manually.

For this latter case, all of the above items are required to investigate the issue.


rich kubota - rkubota@apple.com

developer technical support CoreOS/Hardware/MFI

Will do, thanks rich

We have to go through a release cycle to add the hooks to get the said receipt (1-2 weeks) but we'll def be filing reports.


I'm astonished that other app devs are not seeing this and reporting this more. As I undertsand it, there's no way for us (or any app developer) to "cause" this issue.

Why do you think this is anything other than a valid receipt for a user who purchased your app on February 8, 2015, installed in in the device of February 14, never purchased an IAP and then did a restoreCompletedTransactions (or some other interaction with the app or the app store to cause them to send the 2015 receipt to Apple for verification) on August 22, 2017?

A similar issue was just posted relating specifically to ask-to-buy purchases. The report was that after the parent approves the purchase the original device gets a call to updatedTransactions but the receipt is not updated (no new paent-approved IAP and a left-over consumable IAP). Is it possible that your empty arrays are also associated with an ask-to-buy purchase being incorrectly completed?