godotengine / godot-ios-plugins

MIT License
126 stars 48 forks source link

Receipt verification failing during review #24

Open jebentier opened 2 years ago

jebentier commented 2 years ago

I've been trying to debug and get through this myself, but am at the point of needing some assistance. I'm using the InAppStore plugin to make In-App Purchases in one of my games. But I keep getting rejected by the iOS app store review for the following reason:

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

Specifically, we still received an error message when we tried to make an in-app purchase.

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.

I'm using the most basic implementation that is presented in the documentation/examples and am able to complete purchases using TestFlight without hitting this error, so this is only happening during review when they're using the production signed app to make purchases on the sandbox. I'm at a loss for what could be going wrong here. Please help.

naithar commented 2 years ago

@jebentier you should probably request additional data from AppStore Review team to see if they can provide you with anything on the issue.

I would also recommend you to double check you InApp Purchases settings if they are available and have all required metadata. As far as I can tell purchases should also be sent to review, so issue might be related to that.

kyoz commented 10 months ago

FYI, today i do have a pretty similar problem. And just found out, if the currency of your IAP item not match the region you choosed your sandbox tester. It could cause an error. You better choose "US" as the base currency. Because they test your items with US sandbox account, if you choose different currency, there is chances that they will have error when try to make a purchase. BTW, better note for them that they should try again if the purchase failed.