title: In-App Purchase - Restore only one product
body: <p>I am currently implementing the restore functionality for my app. I have several In-App Purchase products (non-consumable) and I want to allow the user to restore only one or two, so that I don't download more content than needed. In the <a href="https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Restoring.html#//apple_ref/doc/uid/TP40008267-CH8-SW9" rel="nofollow">In-App Purchase Programming Guide</a> its stated that I can do that like this:</p>
  
  <pre><code>NSMutableArray *productIDsToRestore = &lt;# From the user #&gt;;
  SKPaymentTransaction *transaction = &lt;# Current transaction #&gt;;
  
  if ([productIDsToRestore containsObject:transaction.transactionIdentifier]) {
      // Re-download the Apple-hosted content, then finish the transaction
      // and remove the product identifier from the array of product IDs.
  } else {
      [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
  }
  </code></pre>
  
  <p>However, in my experience, the product ID doesn't match the transaction identifier. By product ID I understand the string used to retrieve the products from the App Store (something like "com.mydomain.myproduct"). The transaction identifier seems to be a long number, even if it's received as a string. </p>
  
  <p>What am I missing and how to implement this?</p>
  
  <p>Thanks!</p>