App refused in App store because of In-app purchase products exhibited bug on iPad running iOS 14.0.1 on Wi-Fi

I have been receiving this refusal reason from the app store for the third time. My app is being rejected for the same reason that there is one or more bug with in-app purchases while being tested in iPad running IOS 14.0.1. I have tested the app with Testflight in iPhone iOS 14.0.1 and I never get what it appears for them.

Guideline 2.1 - Performance - App Completeness
We found that your in-app purchase products exhibited one or more bugs when reviewed on iPad running iOS 14.0.1 on Wi-Fi. Specifically, we could not complete the in-app purchase. When purchasing, it goes into an endless loop and the payment mechanism keeps presenting.

Next Steps

When validating receipts on your server, your server needs to be able to handle a production-signed app getting its receipts from Apple’s test environment. The recommended approach is for your production server to always validate receipts against the production App Store first. If validation fails with the error code "Sandbox receipt used in production," you should validate against the test environment instead.


Additionally, I don't validate purchases in my code. I have tested the app in numerous iPhones in test flight and it works. Also, I don't get such an error/bug in dev with any of the emulators. Any workaround for the app store?

In terms of code, below is the one for purchasing no-consume item.

Code Block
async Task ExecuteRemoveAdCommand()
{
if (IsBusy) return;
IsBusy = true;
try
{
var connected = await CrossInAppBilling.Current.ConnectAsync();
if (!connected)
{
await App.Current.MainPage.DisplayAlert("Not Connected", "It seems something is wrong with your connection. " +
"We could not connect to the store, please try again", "OK");
return;
}
//try to purchase item
var purchase = await CrossInAppBilling.Current.PurchaseAsync(Helper.ProductId, ItemType.InAppPurchase, "apppayload");
if (purchase == null)
{
await App.Current.MainPage.DisplayAlert("Not Purchased", "We could not perform your purchase at the moment, please try again", "OK");
return;
}
else
{
//Purchased, save this information
var id = purchase.Id;
var token = purchase.PurchaseToken;
var state = purchase.State;
if (!string.IsNullOrEmpty(id))
{
await App.Current.MainPage.DisplayAlert("Purchase Successful", "You are enjoying ad free wQuran. Thank you for your purchase", "OK");
AdVisibility = false;
}
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
await App.Current.MainPage.DisplayAlert("Not Purchased", "We could not perform your purchase at the moment, please try again", "OK");
}
finally
{
await CrossInAppBilling.Current.DisconnectAsync();
IsBusy = false;
}
}

Replies

I am having the same issue as you, apple could not review my app due an error on ipad 14.0.1, saying it was loading indefinitely. Did you manage to solve the problem?
Hey guys, I am experiencing the same issue. The IAP code has been shipped for years, I didn't change a single byte since then.

Recently, Apple rejected my update for exact the same reason (also iOS 14.0.1, Wi-Fi). I've been looking a repro, but no luck yet.

Did you solve the issue? Thanks.
Post not yet marked as solved Up vote reply of Cyan Down vote reply of Cyan
I had this issue around February this year. I had made no changes either. Very frustrating indeed.

My app finally got approved after I made a change to handle the "Deferred" payment state (SKPaymentTransactionStateDeferred) as a non-error.

Prior to this, anything other than SKPaymentTransactionStatePurchased was showing an "unable to complete in-app purchase" message.


Hope this helps.
I have exactly the same problem and rejected twice. Any idea? For iPhone iOS works but on iPad is seems to be failing
Add a Comment
After being rejected for several times (more than one week), I submitted a TSI.

For my case, SKReceiptRefreshRequest always returns error code 0, An unknown error occurred. Only on reviewer's environment (iPadOS 14.0.1, Wi-Fi), I haven't repro'd a single time.

I've suggested the reviewer to do lots of workarounds (not sure if they did), but none of them worked.

This issue definitely on StoreKit, developer cannot fix it for Apple.

Let's see how it goes, I will keep this thread updated.
Post not yet marked as solved Up vote reply of Cyan Down vote reply of Cyan
Hey guys, my app has been approved. I don't think I did anything helpful, it's just a coincidence I believe.
  • How did you manage to get it approved? Just resubmitted it again?

Add a Comment
hello guys,

I am facing same issue:-

We found that your in-app purchase products exhibited one or more bugs when reviewed on iPad running iOS 14.5.1 on Wi-Fi.

Next Steps



When validating receipts on your server, your server needs to be
able to handle a production-signed app getting its receipts from Apple’s
test environment. The recommended approach is for your production
server to always validate receipts against the production App Store
first. If validation fails with the error code "Sandbox receipt used in
production," you should validate against the test environment instead.

Could you please help me on this issue, if anyone of you has resolved this issue?

Thanks in advance.
Johny Kumar
johny73, Are you using production url first and if it returns status 21007, then use sandbox url?
thanks Ownmas thanks for your valueable suggestion let me check with it.

They said, my app is not working on iPad 14.6. But, in the sandbox environment, it is working on iPad 14.6, as I have that device. There are many forums where people say that their issue was resolved automatically, whether others are still trying to figure it out after 2-3 rejections.

If this issue is happening so many times, Apple should learn from this and help us to provide a way where we get the solutions as well.

I have the same problem too and the app has been rejected two times.

As I do not have a iPad to test, does anyone know this only happens on iPad, but not iPhone?

I have the same issue (7th rejections till now) and, yes Melson I have an iPad with the iOS mentioned by the App Stor reviewers, it works very fine with my sandbox users, but not with the App reviewers.. they receive an empty answer (in the method : func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse)) of my SKProductsRequest..

  • Hey, LR_FR! I had the same problem. The problem disappeared after I stopped checking the receipt on the first launch of the application has the receipt sandbox. Here is the code:

    if appLaunchConfiguration == .firstLaunch && Bundle.main.appStoreReceiptURL?.lastPathComponent != "sandboxReceipt" { PurchasesManager.shared.restorePurchases(receiptRefresh: .noRefresh) }

  • Thank you ownmas for your comment. For me, I did'nt check the receipt, the problem (on the APP Review side and not on my side) appears when my app fetchs the list of my in-app items with SKProductsRequest (in order to display the in-app items with the prices), they receive an empty valide answer in the function : func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse), i.e. response.products.count == 0.

  • Hi Ownmas and LR_FR , in the apple review I am now getting this error that I have never had before:

    ---We discovered that your in-app purchase products were displaying one or more errors when reviewed on the iPad running iOS 14.7.1 on Wi-Fi.

    Specifically, their app was displaying a "Subscription Purchase Failed" message when attempting to purchase the Pro version----.

    With the solution you propose to LR_FR do you think it will also solve my problem.

    Thanks for your help.

Add a Comment

I am having the same issue. who has the correct resolution ?

We found that your in-app purchase products exhibited one or more bugs when reviewed on iPad running iOS 14.7.1 on Wi-Fi.

Specifically, all the In-App Purchase products were unable to properly load.

Same issue here... Literally haven't touched IAP code. The previous version went through just fine, this one was rejected.