title: Resolving invalid product id issue with in-app purchases?
body: <p>This is a follow-up question to "<a href="https://stackoverflow.com/questions/5868728/in-app-purchases-with-mkstorekit-failing-problem-in-itunes-connect-configurati">In app purchases with MKStoreKit failing: “Problem in iTunes connect configuration for product: xxx</a>"</p>
  
  <p>I am having a similar issue and have tried to do both with and without MKStoreKit and get a similar message.</p>
  
  <p><strong>Check-list</strong></p>
  
  <p>With thanks to: <a href="http://troybrant.net/blog/2010/01/invalid-product-ids/" rel="nofollow noreferrer">http://troybrant.net/blog/2010/01/invalid-product-ids/</a></p>
  
  <p><em>Have you enabled In-App Purchases for your App ID?</em></p>
  
  <p>YES</p>
  
  <p><em>Have you checked Cleared for Sale for your product?</em></p>
  
  <p>YES</p>
  
  <p><em>Have you submitted (and optionally rejected) your application binary?</em></p>
  
  <p>YES</p>
  
  <p><em>Does your project’s .plist Bundle ID match your App ID?</em></p>
  
  <p>YES</p>
  
  <p><em>Have you generated and installed a new provisioning profile for the new App ID?</em></p>
  
  <p>YES</p>
  
  <p><em>Have you configured your project to code sign using this new provisioning profile?</em></p>
  
  <p>YES</p>
  
  <p><em>Are you building for iPhone OS 3.0 or above?</em></p>
  
  <p>YES. iOS4.2 and up.</p>
  
  <p><em>Are you using the full product ID when when making an SKProductRequest?</em></p>
  
  <p>YES. Also just the product ID itself without the reverse domain</p>
  
  <p><em>Have you waited several hours since adding your product to iTunes Connect?</em></p>
  
  <p>YES. It says "Waiting for review" and has done for the past 4-5 days</p>
  
  <p><em>Are your bank details active on iTunes Connect?</em></p>
  
  <p>NO. It is a client project and am only testing to see if it is working.  Do I need bank details to test it?</p>
  
  <p>EDIT: I have changed this now. But I do not see why I need to do this just to test sandboxing.</p>
  
  <p><em>Have you tried deleting the app from your device and reinstalling?</em></p>
  
  <p>YES</p>
  
  <p><em>Is your device jailbroken?</em></p>
  
  <p>NO</p>
  
  <hr>
  
  <p><strong>App notation is correct</strong></p>
  
  <p>Some examples I have seen use this notation:
  com.domain.APP_ID.PRODUCT_TO_BUY</p>
  
  <p>But others use
  com.domain.PRODUCT_TO_BUY</p>
  
  <p>Which is right?</p>
  
  <p>In my code I have attempted using the full notation and just the product ID itself but still get the same problem of "Invalid product id".</p>
  
  <p><strong>Developer rejected</strong></p>
  
  <p>App Bundle (Release) is on iTunes Connect and I have "developer rejected" the bundle.</p>
  
  <p>Picture:
  <img src="https://i.stack.imgur.com/qCuPM.png" alt="App developer rejected"></p>
  
  <p><strong>Waiting for review?</strong></p>
  
  <p>In my in-app purchases I have the 1 product, an auto-renewable subscription.  It is cleared for sale; it is however "Waiting for review" and is not green-lit.</p>
  
  <p>Picture:</p>
  
  <p><img src="https://i.stack.imgur.com/8Lpdu.png" alt="waiting for review"></p>
  
  <p>I created this almost 4-5 days ago and its still flagged as "Waiting for review"??</p>
  
  <p>I am wondering if my app has been "developer rejected" whether this has an impact on "Waiting for review" on an auto-renewable subscription?</p>
  
  <p>I have not changed anything in this item.</p>
  
  <p>According to the various articles I have to wait 24-48 hours before I can use it? </p>
  
  <p>But do I need to wait for this to be accepted or green-lit before I can use it in my testing?</p>
  
  <p><strong>Bank details</strong></p>
  
  <p>I have not filled in any bank details because this is an app for a client -- Do I need to fill in bank details before I can continue testing it?</p>
  
  <p>According to these docs: <a href="http://developer.apple.com/library/ios/#technotes/tn2259/_index.html" rel="nofollow noreferrer">http://developer.apple.com/library/ios/#technotes/tn2259/_index.html</a>  bank details are required? </p>
  
  <p><strong>Do I need to be logged into iTunes on my device under a test account before running the app?</strong></p>
  
  <p>I am wondering if someone can clarify these issues?  Maybe its just as simple as waiting for the in-app purchase to be "green lit", or perhaps I've missed a step?</p>
  
  <p>Note: This happens regardless of whether I use MKStoreKit or use the code that follows.</p>
  
  <p>Thanks.</p>
  
  <p>My code (this is the non MKStoreKit version)</p>
  
  <pre><code>#define kMySubscriptionFeature @"uk.co.samplewebsite.myappproject.sub1"
  
      - (void)viewDidLoad
  {
      [super viewDidLoad];
      // Do any additional setup after loading the view from its nib.
      self.title = @"Manage Subscriptions";
  
  
      if ([SKPaymentQueue canMakePayments])
      {
          // Display a store to the user.
  
          //[MKStoreManager sharedManager];
          //NSLog(@"purhcasable = %@", [[MKStoreManager sharedManager] purchasableObjectsDescription] );
          [self requestProUpgradeProductData];
  
      }
      else
      {
          // Warn the user that purchases are disabled.
          NSString *message = @"In-app purchases are disabled. Please review your settings";
          UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
          [alertView show];
          [alertView release];
      } // end if
  }
  
  
  #pragma mark - StoreKit Delegate
  
  - (void) requestProductData
  {
      SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithObject:kMySubscriptionFeature]];
      request.delegate = self;
      [request start];
  }
  
  - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
  {
      NSArray *myProduct = [[NSArray alloc] initWithArray:response.products];
  
      for(SKProduct *item in myProduct)
      {
  
          NSLog(@"Product title: %@" , item.localizedTitle);
          NSLog(@"Product description: %@" , item.localizedDescription);
          NSLog(@"Product price: %@" , item.price);
          NSLog(@"Product id: %@" , item.productIdentifier);
      }
  
  
      for (NSString *invalidProductId in response.invalidProductIdentifiers)
      {
          NSLog(@"Problem in iTunes connect configuration for product: %@" , invalidProductId);
      }
  
  
      [myProduct release];
  
      // populate UI
      [request autorelease];
  }
  </code></pre>
  
  <p>Edit:</p>
  
  <p>As a failsafe, I've added bank details just in case, but I don't see why this would cause an issue.</p>
  
  <p>I've also made sure I uploaded and rejected the app release bundle and not the adhoc one; though I do not know if this makes any difference.</p>