title: Android in-app billing: custom sku purchase gives "Error - item not found"
body: <p>I'm trying to test in-app billing using my own sku/product ID "upgrade_to_premium". As I have seen recommended here, I am using the Dungeons sample app. I've added a "new CatalogEntry("upgrade_to_premium", R.string.upgrade_to_premium, Managed.MANAGED)" to the CatalogEntry[] array in Dungeons.java. In Const.java, DEBUG is set to TRUE.</p>
  
  <p>I have uploaded my release-signed .apk to my Developer Console and activated it, and installed this same .apk to my device with adb. </p>
  
  <p>I have entered an in-app product of the same name in the Dev Console, and published it.</p>
  
  <p>I am logged into my phone not with my developer account but with a test Google account registered with my Developer Console. This account has associated credit card information; I am able to buy music with it. </p>
  
  <p>My device is running Gingerbread, with the latest Google Play upgrade.</p>
  
  <p>Upon starting the newly-installed application on my phone, I observe in LogCat the expected RestoreTransactions call, but it returns RESULT_DEVELOPER_ERROR. (Not a good start? I suppose not, but the five different <em>documented</em> possible causes for this error do not apply here, and who knows how many undocumented there are.) Then I try to purchase my custom sku upgrade_to_premium, but I get an alert dialog entitled "Error" with the message "Item not found", twice in succession, just about the time when it normally would be displaying the Market (Play) UI with VISA info. Interestingly, I observe a similar error when trying a Market URL containing an invalid (i.e. unpublished) package name. Is the unpublished draft that I uploaded what is not being found? Is my custom sku not being found? It's hard to tell from the vague error messages. Anyone have any clues? Thanks.</p>
  
  <p>Here's the LogCat output: </p>
  
  <pre><code>06-13 00:08:31.858: D/Finsky(589): [1] 5.onFinished: Installation state replication    succeeded.
  06-13 00:08:43.729: I/ActivityManager(109): Starting: Intent {  act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000  cmp=com.augmentedmind.dungeons/.Dungeons } from pid 196
  6-13 00:08:43.795: I/ActivityManager(109): Start proc com.augmentedmind.dungeons for activity com.augmentedmind.dungeons/.Dungeons: pid=1247 uid=10054 gids={}
  06-13 00:08:44.198: D/BillingService(1247): CheckBillingSupported
  06-13 00:08:44.198: I/BillingService(1247): binding to Market billing service
  06-13 00:08:44.213: D/BillingService(1247): CheckBillingSupported
  06-13 00:08:44.213: I/BillingService(1247): binding to Market billing service
  06-13 00:08:44.221: D/BillingService(1247): Billing service connected
  06-13 00:08:44.225: D/BillingService(1247): CheckBillingSupported
  06-13 00:08:44.237: D/Finsky(589): [26] MarketBillingService.getPreferredAccount:  com.augmentedmind.dungeons: Account from first account.
  06-13 00:08:44.241: I/BillingService(1247): CheckBillingSupported response code: RESULT_OK
  06-13 00:08:44.241: I/Dungeons(1247): supported: true
  06-13 00:08:44.241: D/BillingService(1247): RestoreTransactions
  06-13 00:08:44.245: D/Finsky(589): [8] MarketBillingService.getPreferredAccount: com.augmentedmind.dungeons: Account from first account.
  06-13 00:08:44.249: D/Finsky(589): [8] MarketBillingService.getPreferredAccount: com.augmentedmind.dungeons: Account from first account.
  06-13 00:08:44.260: I/ElegantRequestDirector(589): I/O exception (org.apache.http.NoHttpResponseException) caught when processing request: The target server failed to respond
  06-13 00:08:44.260: E/BillingService(1247): restoreTransactions received RESULT_OK
  06-13 00:08:44.260: D/BillingService(1247): request id: 2247584787757221561
  06-13 00:08:44.260: I/ElegantRequestDirector(589): Retrying request
  06-13 00:08:44.268: D/BillingService(1247): request id: -1
  06-13 00:08:44.268: D/BillingService(1247): CheckBillingSupported
  06-13 00:08:44.272: D/Finsky(589): [7] MarketBillingService.getPreferredAccount: com.augmentedmind.dungeons: Account from first account.
  06-13 00:08:44.272: I/BillingService(1247): CheckBillingSupported response code: RESULT_OK
  06-13 00:08:44.272: I/Dungeons(1247): supported: true
  06-13 00:08:44.272: D/BillingService(1247): request id: -1
  06-13 00:08:44.346: I/ActivityManager(109): Displayed com.augmentedmind.dungeons/.Dungeons: +556ms
  06-13 00:08:44.729: D/Finsky(589): [1] MarketBillingService.sendResponseCode: Sending response RESULT_DEVELOPER_ERROR for request 2247584787757221561 to com.augmentedmind.dungeons.
  06-13 00:08:44.741: I/BillingService(1247): handleCommand() action: com.android.vending.billing.RESPONSE_CODE
  06-13 00:08:44.741: D/BillingService(1247): RestoreTransactions: RESULT_DEVELOPER_ERROR
  06-13 00:08:44.741: D/Dungeons(1247): RestoreTransactions error: RESULT_DEVELOPER_ERROR
  06-13 00:09:28.049: D/Dungeons(1247): buying: Upgrade app to premium sku: upgrade_to_premium
  06-13 00:09:28.053: D/BillingService(1247): RequestPurchase
  06-13 00:09:28.092: D/Finsky(589): [26] MarketBillingService.getPreferredAccount: com.augmentedmind.dungeons: Account from first account.
  06-13 00:09:28.096: D/Finsky(589): [26] MarketBillingService.getPreferredAccount: com.augmentedmind.dungeons: Account from first account.
  06-13 00:09:28.100: I/ActivityManager(109): Starting: Intent { act=android.intent.action.VIEW cmp=com.android.vending/com.google.android.finsky.activities.IabActivity (has extras) } from pid -1
  06-13 00:09:28.104: D/BillingService(1247): request id: 137676918944123250
  06-13 00:09:28.104: D/BillingService(1247): RequestPurchase
  06-13 00:09:28.108: D/Finsky(589): [27] MarketBillingService.getPreferredAccount: com.augmentedmind.dungeons: Account from first account.
  06-13 00:09:28.112: D/Finsky(589): [27] MarketBillingService.getPreferredAccount: com.augmentedmind.dungeons: Account from first account.
  06-13 00:09:28.112: I/ActivityManager(109): Starting: Intent { act=android.intent.action.VIEW cmp=com.android.vending/com.google.android.finsky.activities.IabActivity (has extras) } from pid -1
  06-13 00:09:28.116: D/BillingService(1247): request id: 5138873787070031749
  06-13 00:09:28.174: D/Finsky(589): [1] SelfUpdateScheduler.checkForSelfUpdate: Skipping self-update. Local Version [8011019] &gt;= Server Version [0]
  06-13 00:09:28.381: I/ActivityManager(109): Displayed com.android.vending/com.google.android.finsky.activities.IabActivity: +262ms
  06-13 00:09:28.413: E/Volley(589): [13] BasicNetwork.performRequest: Unexpected response code 500 for https://android.clients.google.com/fdfe/details?doc=subs:com.augmentedmind.dungeons:upgrade_to_premium
  06-13 00:09:41.670: W/InputManagerService(109): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@40796830
  06-13 00:09:41.737: D/Finsky(589): [1] SelfUpdateScheduler.checkForSelfUpdate: Skipping self-update. Local Version [8011019] &gt;= Server Version [0]
  </code></pre>
  
  <p>around this time I get a popup dialog on the device screen entitled "Error" with the message "Item not found", twice. Just about the time when it normally would be displaying the Market (Play) UI with VISA info.</p>
  
  <pre><code>06-13 00:09:41.881: D/Finsky(589): [1] MarketBillingService.sendResponseCode: Sending response RESULT_ERROR for request 5138873787070031749 to com.augmentedmind.dungeons.
  06-13 00:09:41.889: I/BillingService(1247): handleCommand() action: com.android.vending.billing.RESPONSE_CODE
  06-13 00:09:41.889: D/BillingService(1247): RequestPurchase: RESULT_ERROR
  06-13 00:09:41.893: D/Finsky(589): [1] PendingNotificationsService.setMarketAlarm: Setting alarm for account=tester.android30@gmail.com, duration=120000
  06-13 00:09:41.940: I/ActivityManager(109): Displayed com.android.vending/com.google.android.finsky.activities.IabActivity: +271ms
  06-13 00:09:41.991: E/Volley(589): [14] BasicNetwork.performRequest: Unexpected response code 500 for https://android.clients.google.com/fdfe/details?doc=inapp:com.augmentedmind.dungeons:upgrade_to_premium
  06-13 00:09:45.600: W/InputManagerService(109): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@407daea0
  06-13 00:09:45.682: D/Finsky(589): [1] MarketBillingService.sendResponseCode: Sending response RESULT_ERROR for request 137676918944123250 to com.augmentedmind.dungeons.
  06-13 00:09:45.690: D/Finsky(589): [1] PendingNotificationsService.setMarketAlarm: Setting alarm for account=tester.android30@gmail.com, duration=120000
  06-13 00:09:45.698: I/BillingService(1247): handleCommand() action:       com.android.vending.billing.RESPONSE_CODE
  06-13 00:09:45.698: D/BillingService(1247): RequestPurchase: RESULT_ERROR
  06-13 00:09:45.698: D/Dungeons(1247): upgrade_to_premium: RESULT_ERROR
  06-13 00:09:45.698: I/Dungeons(1247): purchase failed
  </code></pre>
  
  <p>P.S. I read somewhere that one "might have to wait an hour or so for it to get activated" but I sincerely hope this is not the case for unpublished draft uploads! Why would this sort of upload, which no user will ever see, be subject to a delay? ...I am starting to think that this is true, as by repeated upload/delete/re-upload of this <em>unpublished draft app</em> I have just hit an upload quota. As painful as in-app billing is to master, I don't need that extra annoyance. Not good, Google. </p>