12
votes

It has been a long night chasing the problem within my in-app purchase trials yet I can not seem to solve this issue.My product identifier keeps returning as "invalid product identifier". Hopefully someone will point it out; (With current provisioning profile and appId I got push notifications working)

  1. My App ID is generated (with no wildcards) - inApp purchase is enabled

  2. My IAP(In-App Purchase) is added in "Manage your in-app purchases" and cleared for sale.

  3. My IAP is added 24 hours ago ( maybe couple of hours more) and is in "Waiting For Review" state

  4. My App itself is developer rejected > and it is state "ready to upload", in-app purchase is added to the App.

  5. My phone is not jailbroken (at least not anymore, didn't worked either way)

  6. I am working with a 3GS, 5.1 iOS.

  7. My current provisioning profile is a "Developer Profile" not a "Distribution Profile". "Distribution Profile" is used only while uploading the Application Binary.

  8. I am building for iOS 5.0 and build configuration is set to Debug.

  9. I deleted the app like 100 times now, literally.

  10. All details are set in iTunes Connect, including bank details.

  11. I have created a test user, and I logged in from "Settings > Store" on my device.

  12. My SKProductRequest:

    SKProductsRequest *productRequest = [[SKProductsRequest alloc]initWithProductIdentifiers:[NSSet setWithObject:@"com.my_site.my_app.my_product"]];
    

Any other information can be supplied.

6

6 Answers

7
votes

I don't know how, and don't know will it remain valid. But here is the interesting solution which let me solve my problem.

According to the documentation, SKProductRequest should be;

SKProductsRequest *productRequest = [[SKProductsRequest alloc]initWithProductIdentifiers:[NSSet setWithObject:@"com.my_site.my_app.my_product"]];

Your product request should be like this;

com.my_site.my_app.my_product

but in my situation I just sent my product id, just like this and it WORKED;

SOLUTION #1

SKProductsRequest *productRequest = [[SKProductsRequest alloc]initWithProductIdentifiers:[NSSet setWithObject:@"my_product"]];

While digging in, I found that for some people this notation also worked;

SOLUTION #2

SKProductsRequest *productRequest = [[SKProductsRequest alloc]initWithProductIdentifiers:[NSSet setWithObjects:@"com.my_site.my_app","my_product",nil]];

There was nothing wrong with my setup, and the above listed things should be supplied, if anyone having problems with invalid product identifiers, I recommend them to visit Troy Brant's "Cause of Invalid Product ID's List", here . Also you can find his detailed walkthrough about implemeting and setting up IAP, here.

If you get desperate, I strongly recommend you to try both solutions, and they can save you from hours of frustration.

5
votes

Please make sure you have not missed anything from below list.

  • Please remove the Existing application from the Device and Install the fresh build from Xcode.

  • Have you enabled In-App Purchases for your App ID?

  • Does your project’s .plist Bundle ID match your App ID?

  • Have you generated and installed a new provisioning profile for the new App ID?

  • Have you configured your project to code sign using this new provisioning profile?

  • Are you using the full product ID when making a SKProductRequest?

  • Have you waited several hours since adding your product to iTunes Connect?

  • Are your bank details active on iTunes Connect?

  • Is your device jailbroken? If so, you need to revert the jailbreak for IAP to work.

If you answered No to any one of these questions, there’s your problem.

Please refer Reference

3
votes

My paid applications agreement wasn't valid in iTunes Connect. As soon as I agreed to the new one, it fixed the problem.

0
votes

You are using the latest provision profile right(which is downloaded after setting up in-app purchase).

0
votes

Things ended up working for me:

  • I use Xcode automatic profiles and I got a bit confused on the app store connect webpage with the profile. I made sure ids matched on Xcode and on the webpage.
  • I just needed the product id, not the full com.company.app.product
  • took me like 2 hours to have things work, so maybe some refresh time on Apple's servers
0
votes

Spends a couple of days at this. Here is what was missing from mine:

  • Make sure the BundleID in iTunes Connect matches that in your Xcode project.