j3k0 / cordova-plugin-purchase

In-App Purchase for Cordova on iOS, Android and Windows
https://purchase.cordova.fovea.cc
1.29k stars 529 forks source link

[iOS] Product is not owned even though it was purchased #1012

Closed HarelM closed 4 years ago

HarelM commented 4 years ago

system info

OSX latest
Cordova 9.0.0
Device: iPad 7 iOS 13.3.1
Plugin Version: 10.0.1

Expected behavior

A subscription that was purchased, canceled but still valid (not expired) should trigger the owned event.

Observed behavior

The event is not fired.

Steps to reproduce

Use the following code: https://github.com/IsraelHikingMap/Site/blob/master/IsraelHiking.Web/sources/application/services/purchase.service.ts

This code runs when the app starts. The owned callback is never fired. When the user click on order the app store knows when the subscription ends and allows the user to purchase the next subscription's period (Next year in our case).

As a side note - the user which helps up with the tests also used the same user to test our sandbox app and the subscription expired there, I'm not sure if it is relevant but might explain this issue...? The user removed the app installed by test flight and reinstalled it from the app store before reporting this issue.

Please, please, please help me...

j3k0 commented 4 years ago

Answering with questions:

HarelM commented 4 years ago
  1. I'm currently waiting for a version with more logs to be reviewed and uploaded to the store, hopefully I'll have more logs in the next few days. but from the logs that exist in the current version I've seen that the expired and owned events are never called.
  2. I'm not sure what you mean by "where the purchase process ends", can you explain?
  3. Yes, application initialize service is called from main which is inside the device ready event callback.
j3k0 commented 4 years ago

2 See https://github.com/j3k0/cordova-plugin-purchase/blob/master/doc/api.md#life-cycle

The product will go through different states before reaching owned (requested, initiated, approved, verified, finished, owned). Something can go wrong at any step (and knowing which is helpful)

HarelM commented 4 years ago

Thanks for the info. Can you look at the above purchase service code and let me know if there are more logs I need to add? Maybe an error handler?

j3k0 commented 4 years ago

Actually, if you want to go "full debug" you can override the plugins' logger with your own.

You can set this to your own as soon as the deviceready event is triggered (and before doing anything else with the plugin):

store.log = {
    error: function(o) { ... },
    warn: function(o) { ... },
    info: function(o) { ... },
    debug: function(o) { ... }
};
HarelM commented 4 years ago

What ever will help you help me with my issue :-) What type is o? I'll be happy to add this to my report issue log files. Are these logs stored somewhere? Can I retrieve them without overriding these methods? I'm looking for something like this: https://github.com/mauron85/cordova-plugin-background-geolocation#getlogentrieslimit-fromid-minlevel-success-fail So when a user decides to report an issue I can extract all the recent logs that were stored and attach them to the report issue. Of course, I can do it with the above functions override, I was just wondering if there's a built in mechanism for that.

j3k0 commented 4 years ago

o is a string or object.

Here's a reference implementation:

function log(o) {
    if (typeof o !== 'string')
        o = JSON.stringify(o);
    console.log("[store.js] " + o);
}
j3k0 commented 4 years ago

There's no built in method. Plugin uses console.log() internally.

Maybe if cordova/ionic plugin provides this functionality to console.log they you get it as a side benefit for the purchase plugin.

HarelM commented 4 years ago

OK, thanks! I've just committed all the logging you suggested and I could think of (You can see it in the link above for the purchase service). I'll post here once I have collected the logs after apple will approve my app in the app store (unfortunately it takes a few days... :-() Let me know if there's other stuff I can check meanwhile.

HarelM commented 4 years ago

@j3k0 The following is the log from the user: Recent service code is here, there's not much there though... Let me know if you need anything else.

2020-03-31 11:49:12 |  INFO | Starting IHM Application Initialization
2020-03-31 11:49:12 | DEBUG | Original brightness is: 0.583552
2020-03-31 11:49:12 | DEBUG | [Store] state: offline_map -> registered
2020-03-31 11:49:12 | DEBUG | [Store] ios -> product offline_map registered
2020-03-31 11:49:12 | DEBUG | [Store] store.trigger -> triggering action refreshed
2020-03-31 11:49:13 |  INFO | [Store] ios -> storekit ready
2020-03-31 11:49:13 | DEBUG | [Store] ios -> products loaded
2020-03-31 11:49:13 | DEBUG | [Store] Updated: offline_map
{
    "id": "offline_map",
    "alias": "offline map",
    "type": "paid subscription",
    "group": "20603909",
    "state": "registered",
    "title": "מפות לא מקוונות - מנוי לשנה",
    "description": "מנוי שנתי לעדכוני מפות הטיולים והאופניים",
    "priceMicros": 99900000,
    "price": "₪99.90",
    "currency": "ILS",
    "countryCode": "IL",
    "loaded": false,
    "canPurchase": false,
    "owned": false,
    "introPrice": null,
    "introPriceMicros": null,
    "introPricePeriod": null,
    "introPricePeriodUnit": null,
    "introPricePaymentMode": null,
    "ineligibleForIntroPrice": null,
    "discounts": [],
    "downloading": false,
    "downloaded": false,
    "additionalData": null,
    "transaction": null,
    "billingPeriod": 1,
    "billingPeriodUnit": "Year"
}
2020-03-31 11:49:13 | DEBUG | [Store] ios -> product offline_map is valid (offline map)
2020-03-31 11:49:13 | DEBUG | [Store] update()
2020-03-31 11:49:13 | DEBUG | [Store] state: il.org.osm.israelhiking -> 
2020-03-31 11:49:13 | DEBUG | [Store] state: il.org.osm.israelhiking -> registered
2020-03-31 11:49:13 | DEBUG | [Store] Updated: il.org.osm.israelhiking
{
    "id": "il.org.osm.israelhiking",
    "alias": "application",
    "type": "application",
    "group": "",
    "state": "approved",
    "title": "Application Bundle",
    "description": null,
    "priceMicros": null,
    "price": null,
    "currency": null,
    "countryCode": null,
    "loaded": true,
    "canPurchase": false,
    "owned": false,
    "introPrice": null,
    "introPriceMicros": null,
    "introPricePeriod": null,
    "introPriceNumberOfPeriods": null,
    "introPricePeriodUnit": null,
    "introPriceSubscriptionPeriod": null,
    "introPricePaymentMode": null,
    "ineligibleForIntroPrice": null,
    "discounts": [],
    "downloading": false,
    "downloaded": false,
    "additionalData": null,
    "transaction": {
        "type": "ios-appstore",
        "appStoreReceipt": "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"
    },
    "version": "9.0.81",
    "valid": true
}
2020-03-31 11:49:14 | DEBUG | [Store] Updated: il.org.osm.israelhiking
{
    "id": "il.org.osm.israelhiking",
    "alias": "application",
    "type": "application",
    "group": "",
    "state": "registered",
    "title": null,
    "description": null,
    "priceMicros": null,
    "price": null,
    "currency": null,
    "countryCode": null,
    "loaded": false,
    "canPurchase": false,
    "owned": false,
    "introPrice": null,
    "introPriceMicros": null,
    "introPricePeriod": null,
    "introPriceNumberOfPeriods": null,
    "introPricePeriodUnit": null,
    "introPriceSubscriptionPeriod": null,
    "introPricePaymentMode": null,
    "ineligibleForIntroPrice": null,
    "discounts": [],
    "downloading": false,
    "downloaded": false,
    "additionalData": null,
    "transaction": {
        "type": "ios-appstore",
        "appStoreReceipt": "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"
    },
    "version": "9.0.81"
}
2020-03-31 11:49:14 | DEBUG | [Store] state: il.org.osm.israelhiking -> approved
2020-03-31 11:49:14 | DEBUG | [Store] Updated: il.org.osm.israelhiking
{
    "id": "il.org.osm.israelhiking",
    "alias": "application",
    "type": "application",
    "group": "",
    "state": "approved",
    "title": null,
    "description": null,
    "priceMicros": null,
    "price": null,
    "currency": null,
    "countryCode": null,
    "loaded": true,
    "canPurchase": false,
    "owned": false,
    "introPrice": null,
    "introPriceMicros": null,
    "introPricePeriod": null,
    "introPriceNumberOfPeriods": null,
    "introPricePeriodUnit": null,
    "introPriceSubscriptionPeriod": null,
    "introPricePaymentMode": null,
    "ineligibleForIntroPrice": null,
    "discounts": [],
    "downloading": false,
    "downloaded": false,
    "additionalData": null,
    "transaction": {
        "type": "ios-appstore",
        "appStoreReceipt": "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"
    },
    "version": "9.0.81",
    "valid": true
}
2020-03-31 11:49:16 | DEBUG | [Store] runValidation()
2020-03-31 11:49:16 | DEBUG | [Store] ajax -> send request to https://validator.fovea.cc/v1/validate?appName=il.org.osm.israelhiking&apiKey=1245b587-4bbc-4fbd-a3f1-d51169a53063
2020-03-31 11:49:18 | DEBUG | [Store] validator success, response: {"ok":true,"data":{"id":"il.org.osm.israelhiking","ineligible_for_intro_price":[],"latest_receipt":true,"transaction":{"receipt_type":"Production","adam_id":1451300509,"app_item_id":1451300509,"bundle_id":"il.org.osm.israelhiking","application_version":"9.0.81","download_id":27074018791144,"version_external_identifier":835316258,"receipt_creation_date":"2020-03-31 08:48:59 Etc/GMT","receipt_creation_date_ms":"1585644539000","receipt_creation_date_pst":"2020-03-31 01:48:59 America/Los_Angeles","request_date":"2020-03-31 08:49:18 Etc/GMT","request_date_ms":"1585644558379","request_date_pst":"2020-03-31 01:49:18 America/Los_Angeles","original_purchase_date":"2020-03-14 14:15:54 Etc/GMT","original_purchase_date_ms":"1584195354000","original_purchase_date_pst":"2020-03-14 07:15:54 America/Los_Angeles","original_application_version":"8.6.30","in_app":[{"quantity":"1","product_id":"offline_map","transaction_id":"70000754061098","original_transaction_id":"70000754061098","purchase_date":"2020-03-22 19:06:37 Etc/GMT","purchase_date_ms":"1584903997000","purchase_date_pst":"2020-03-22 12:06:37 America/Los_Angeles","original_purchase_date":"2020-03-22 19:06:39 Etc/GMT","original_purchase_date_ms":"1584903999000","original_purchase_date_pst":"2020-03-22 12:06:39 America/Los_Angeles","expires_date":"2021-03-22 19:06:37 Etc/GMT","expires_date_ms":"1616439997000","expires_date_pst":"2021-03-22 12:06:37 America/Los_Angeles","web_order_line_item_id":"70000272518009","is_trial_period":"false","is_in_intro_offer_period":"false","subscription_group_identifier":"20603909"}]},"collection":[{"id":"offline_map","isTrialPeriod":false,"isIntroPeriod":false,"renewalIntent":"Lapse","purchaseDate":1584903999000,"expiryDate":1616439997000,"lastRenewalDate":1584903997000,"isExpired":false}]}}
2020-03-31 11:49:18 | DEBUG | [Store] verify -> {"success":true,"data":{"id":"il.org.osm.israelhiking","ineligible_for_intro_price":[],"latest_receipt":true,"transaction":{"receipt_type":"Production","adam_id":1451300509,"app_item_id":1451300509,"bundle_id":"il.org.osm.israelhiking","application_version":"9.0.81","download_id":27074018791144,"version_external_identifier":835316258,"receipt_creation_date":"2020-03-31 08:48:59 Etc/GMT","receipt_creation_date_ms":"1585644539000","receipt_creation_date_pst":"2020-03-31 01:48:59 America/Los_Angeles","request_date":"2020-03-31 08:49:18 Etc/GMT","request_date_ms":"1585644558379","request_date_pst":"2020-03-31 01:49:18 America/Los_Angeles","original_purchase_date":"2020-03-14 14:15:54 Etc/GMT","original_purchase_date_ms":"1584195354000","original_purchase_date_pst":"2020-03-14 07:15:54 America/Los_Angeles","original_application_version":"8.6.30","in_app":[{"quantity":"1","product_id":"offline_map","transaction_id":"70000754061098","original_transaction_id":"70000754061098","purchase_date":"2020-03-22 19:06:37 Etc/GMT","purchase_date_ms":"1584903997000","purchase_date_pst":"2020-03-22 12:06:37 America/Los_Angeles","original_purchase_date":"2020-03-22 19:06:39 Etc/GMT","original_purchase_date_ms":"1584903999000","original_purchase_date_pst":"2020-03-22 12:06:39 America/Los_Angeles","expires_date":"2021-03-22 19:06:37 Etc/GMT","expires_date_ms":"1616439997000","expires_date_pst":"2021-03-22 12:06:37 America/Los_Angeles","web_order_line_item_id":"70000272518009","is_trial_period":"false","is_in_intro_offer_period":"false","subscription_group_identifier":"20603909"}]},"collection":[{"id":"offline_map","isTrialPeriod":false,"isIntroPeriod":false,"renewalIntent":"Lapse","purchaseDate":1584903999000,"expiryDate":1616439997000,"lastRenewalDate":1584903997000,"isExpired":false}]}}
2020-03-31 11:49:18 | DEBUG | [Store] transaction fields for il.org.osm.israelhiking
2020-03-31 11:49:18 | DEBUG | [Store] Updated: il.org.osm.israelhiking
{
    "id": "il.org.osm.israelhiking",
    "alias": "application",
    "type": "application",
    "group": "",
    "state": "approved",
    "title": "Application Bundle",
    "description": null,
    "priceMicros": null,
    "price": null,
    "currency": null,
    "countryCode": null,
    "loaded": true,
    "canPurchase": false,
    "owned": false,
    "introPrice": null,
    "introPriceMicros": null,
    "introPricePeriod": null,
    "introPriceNumberOfPeriods": null,
    "introPricePeriodUnit": null,
    "introPriceSubscriptionPeriod": null,
    "introPricePaymentMode": null,
    "ineligibleForIntroPrice": null,
    "discounts": [],
    "downloading": false,
    "downloaded": false,
    "additionalData": {},
    "transaction": {
        "type": "ios-appstore",
        "appStoreReceipt": "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",
        "receipt_type": "Production",
        "adam_id": 1451300509,
        "app_item_id": 1451300509,
        "bundle_id": "il.org.osm.israelhiking",
        "application_version": "9.0.81",
        "download_id": 27074018791144,
        "version_external_identifier": 835316258,
        "receipt_creation_date": "2020-03-31 08:48:59 Etc/GMT",
        "receipt_creation_date_ms": "1585644539000",
        "receipt_creation_date_pst": "2020-03-31 01:48:59 America/Los_Angeles",
        "request_date": "2020-03-31 08:49:18 Etc/GMT",
        "request_date_ms": "1585644558379",
        "request_date_pst": "2020-03-31 01:49:18 America/Los_Angeles",
        "original_purchase_date": "2020-03-14 14:15:54 Etc/GMT",
        "original_purchase_date_ms": "1584195354000",
        "original_purchase_date_pst": "2020-03-14 07:15:54 America/Los_Angeles",
        "original_application_version": "8.6.30",
        "in_app": [
            {
                "quantity": "1",
                "product_id": "offline_map",
                "transaction_id": "70000754061098",
                "original_transaction_id": "70000754061098",
                "purchase_date": "2020-03-22 19:06:37 Etc/GMT",
                "purchase_date_ms": "1584903997000",
                "purchase_date_pst": "2020-03-22 12:06:37 America/Los_Angeles",
                "original_purchase_date": "2020-03-22 19:06:39 Etc/GMT",
                "original_purchase_date_ms": "1584903999000",
                "original_purchase_date_pst": "2020-03-22 12:06:39 America/Los_Angeles",
                "expires_date": "2021-03-22 19:06:37 Etc/GMT",
                "expires_date_ms": "1616439997000",
                "expires_date_pst": "2021-03-22 12:06:37 America/Los_Angeles",
                "web_order_line_item_id": "70000272518009",
                "is_trial_period": "false",
                "is_in_intro_offer_period": "false",
                "subscription_group_identifier": "20603909"
            }
        ]
    },
    "version": "9.0.81",
    "valid": true
}
2020-03-31 11:49:18 | DEBUG | [Store] verify -> success: {"id":"il.org.osm.israelhiking","ineligible_for_intro_price":[],"latest_receipt":true,"transaction":{"receipt_type":"Production","adam_id":1451300509,"app_item_id":1451300509,"bundle_id":"il.org.osm.israelhiking","application_version":"9.0.81","download_id":27074018791144,"version_external_identifier":835316258,"receipt_creation_date":"2020-03-31 08:48:59 Etc/GMT","receipt_creation_date_ms":"1585644539000","receipt_creation_date_pst":"2020-03-31 01:48:59 America/Los_Angeles","request_date":"2020-03-31 08:49:18 Etc/GMT","request_date_ms":"1585644558379","request_date_pst":"2020-03-31 01:49:18 America/Los_Angeles","original_purchase_date":"2020-03-14 14:15:54 Etc/GMT","original_purchase_date_ms":"1584195354000","original_purchase_date_pst":"2020-03-14 07:15:54 America/Los_Angeles","original_application_version":"8.6.30","in_app":[{"quantity":"1","product_id":"offline_map","transaction_id":"70000754061098","original_transaction_id":"70000754061098","purchase_date":"2020-03-22 19:06:37 Etc/GMT","purchase_date_ms":"1584903997000","purchase_date_pst":"2020-03-22 12:06:37 America/Los_Angeles","original_purchase_date":"2020-03-22 19:06:39 Etc/GMT","original_purchase_date_ms":"1584903999000","original_purchase_date_pst":"2020-03-22 12:06:39 America/Los_Angeles","expires_date":"2021-03-22 19:06:37 Etc/GMT","expires_date_ms":"1616439997000","expires_date_pst":"2021-03-22 12:06:37 America/Los_Angeles","web_order_line_item_id":"70000272518009","is_trial_period":"false","is_in_intro_offer_period":"false","subscription_group_identifier":"20603909"}]},"collection":[{"id":"offline_map","isTrialPeriod":false,"isIntroPeriod":false,"renewalIntent":"Lapse","purchaseDate":1584903999000,"expiryDate":1616439997000,"lastRenewalDate":1584903997000,"isExpired":false}]}
2020-03-31 11:49:18 | DEBUG | [Store] transaction fields for offline_map
2020-03-31 11:49:18 | DEBUG | [Store] Updated: il.org.osm.israelhiking
{
    "id": "il.org.osm.israelhiking",
    "alias": "application",
    "type": "application",
    "group": "",
    "state": "approved",
    "title": "Application Bundle",
    "description": null,
    "priceMicros": null,
    "price": null,
    "currency": null,
    "countryCode": null,
    "loaded": true,
    "canPurchase": false,
    "owned": false,
    "introPrice": null,
    "introPriceMicros": null,
    "introPricePeriod": null,
    "introPriceNumberOfPeriods": null,
    "introPricePeriodUnit": null,
    "introPriceSubscriptionPeriod": null,
    "introPricePaymentMode": null,
    "ineligibleForIntroPrice": null,
    "discounts": [],
    "downloading": false,
    "downloaded": false,
    "additionalData": {},
    "transaction": {
        "type": "ios-appstore",
        "appStoreReceipt": "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",
        "receipt_type": "Production",
        "adam_id": 1451300509,
        "app_item_id": 1451300509,
        "bundle_id": "il.org.osm.israelhiking",
        "application_version": "9.0.81",
        "download_id": 27074018791144,
        "version_external_identifier": 835316258,
        "receipt_creation_date": "2020-03-31 08:48:59 Etc/GMT",
        "receipt_creation_date_ms": "1585644539000",
        "receipt_creation_date_pst": "2020-03-31 01:48:59 America/Los_Angeles",
        "request_date": "2020-03-31 08:49:18 Etc/GMT",
        "request_date_ms": "1585644558379",
        "request_date_pst": "2020-03-31 01:49:18 America/Los_Angeles",
        "original_purchase_date": "2020-03-14 14:15:54 Etc/GMT",
        "original_purchase_date_ms": "1584195354000",
        "original_purchase_date_pst": "2020-03-14 07:15:54 America/Los_Angeles",
        "original_application_version": "8.6.30",
        "in_app": [
            {
                "quantity": "1",
                "product_id": "offline_map",
                "transaction_id": "70000754061098",
                "original_transaction_id": "70000754061098",
                "purchase_date": "2020-03-22 19:06:37 Etc/GMT",
                "purchase_date_ms": "1584903997000",
                "purchase_date_pst": "2020-03-22 12:06:37 America/Los_Angeles",
                "original_purchase_date": "2020-03-22 19:06:39 Etc/GMT",
                "original_purchase_date_ms": "1584903999000",
                "original_purchase_date_pst": "2020-03-22 12:06:39 America/Los_Angeles",
                "expires_date": "2021-03-22 19:06:37 Etc/GMT",
                "expires_date_ms": "1616439997000",
                "expires_date_pst": "2021-03-22 12:06:37 America/Los_Angeles",
                "web_order_line_item_id": "70000272518009",
                "is_trial_period": "false",
                "is_in_intro_offer_period": "false",
                "subscription_group_identifier": "20603909",
                "type": "ios-appstore"
            }
        ]
    },
    "version": "9.0.81",
    "valid": true
}
HarelM commented 4 years ago

I have changed the code a bit to verify all products including the "virtual" one. Attached are two logs - one from a device that purchased and one from a device that didn't. purchased.txt non-purchase.txt In both cases I see that I get to the owned state of the virtual product. It can be seen that there are traces inside the virtual product that the main product ("offline_map") is not expired but it never gets to the owned state unfortunately... :-( Any help will be appreciated.

j3k0 commented 4 years ago

What is weird is that logs are supposed to include a LOT of Updated: offline_map: at least when registered, then when loaded, then when updated because the validator's response collection includes a reference to it.

    "collection": [
      {
        "id": "offline_map",
        "isTrialPeriod": false,
        "isIntroPeriod": false,
        "renewalIntent": "Lapse",
        "purchaseDate": 1584903999000,
        "expiryDate": 1616439997000,
        "lastRenewalDate": 1584903997000,
        "isExpired": false
      }
    ]

non-purchase.txt includes them but not the other: just a single log line appear with an update for this product... Is it possible your logging solution is dropping some lines?

HarelM commented 4 years ago

Everything is possible, but both logs are using the same mechanism (although on different devices) so I don't think this is the case here... The following is the logging service code which uses indexDB to store the logs: https://github.com/IsraelHikingMap/Site/blob/master/IsraelHiking.Web/sources/application/services/logging.service.ts Keep in mind that this device was using the same account for a sandbox test and regular app usage so it might affect these event, I don't know... Let me know if you want me to try out a version with more logs or something else...

HarelM commented 4 years ago

Also, the process of uploading a version to the store takes a lot of time, when updating the app in testflight it can almost be immediate. Are you familiar with a way to cancel a sandbox subscription? I know that it automatically stops renewing after 6 periods, but I'm not sure it is equivalent to cancel. I'm asking mainly because currently I need to upload a version, wait for the app store review and notify the user, which takes about 2-3 days so my testing cycle is poor. I'd like to be able to reproduce this issue on my device using sandbox mode and make more tests in less time. Let me know if you have any insight on that matter too... Thanks again for all the help!

j3k0 commented 4 years ago

Might be a stupid suggestion, why dont't you just plug your device and run from XCode?

For your remote user, you can register the users' device in developer.apple.com and send your user a debug IPA that it can install with itunes or xcode (drag n' drop the IPA to the device). Google will show you how.

HarelM commented 4 years ago

I'll look into it, thanks for the suggestion! Will it work regularly with the app store purchase mechanism or will it use a sandbox user this way? Because I can't reproduce this issue with my sandbox user, it seems that it only happened (to a single user) in production.

j3k0 commented 4 years ago

I didn't realize it happens to a single user! Did you figure out anything specific about this particular user? iOS version? Device? Account type?

HarelM commented 4 years ago

Well... Currently only two apple users have purchased our subscription, One had canceled it and we are not sure if he was able to use our paid feature and the other is a user who's helping us with the tests and is very communicate (the purchased.txt file is from him). The following are his device details: model: iPad7,4 platform: iOS OS version: 13.3.1 So we don't have a large paid user base to fully understand the impact of this issue. The only thing I can think of which is special to this user, as I said, is the fact that he purchased the subscription on his device with the official app, then canceled it, then installed the test version using test flight, then purchased the product there, the sandbox purchase expired after 6 renews, then after we released a version to the app store he removed the test flight version and switched to use the official version and is not getting to the owned state as can be seen in the logs.

The user is very nice and happy to test and report to us whatever we ask. I don't know the extent of this issue unfortunately... :-(

j3k0 commented 4 years ago

Does it work as expected on your test device?

HarelM commented 4 years ago

Yes it does.

HarelM commented 4 years ago

To be more accurate - I was able to make it work on my test device when in sandbox mode through test flight, I did not fully tried it in production as I did not want to pay just for testing...

HarelM commented 4 years ago

@j3k0 any updates on this? Is there anything more I can try out?

HarelM commented 4 years ago

This was fixed by using a refresh after login and setting applicationUsername to the store object before the refresh with the latest version - 10.1.1. This issue revealed the following issue: #1031