Google InAppBilling onPurchaseStateChange никогда не вызывается

Метод обратного вызова onPurchaseStateChange никогда не вызывается. Я сделал свое собственное демо-приложение, а также попытался использовать демо-версию Google (Dungeons).

Я requestPurchase(String productId, String payload) из метода onClick .

 @Override public void onClick(View view) { if(view == requestPurchaseButton) { mBillingService.requestPurchase("android.test.purchased", "10"); } } 

onRequestPurchaseResponse(Request, ResponseCode) метод обратного вызова onRequestPurchaseResponse(Request, ResponseCode) . Здесь RESULT_OK responseCode дает значение RESULT_OK . Таким образом, запрос был отправлен на сервер.

 @Override public void onRequestPurchaseResponse(RequestPurchase request, ResponseCode responseCode) { if(responseCode == ResponseCode.RESULT_OK) { Log.d("AJ", "onRequestPurchaseResponse.ResponeCode.RESULT_OK"); textView.append(request.mProductId + "\n"); } else if(responseCode == ResponseCode.RESULT_USER_CANCELED) { //doesn't go here } else { //doesn't go here } } 

В javadoc для этого метода указано

Это называется, когда мы получаем код ответа от Market для запроса RequestPurchase, который мы сделали. Это НЕ используется для любых изменений состояния покупки. Все изменения состояния покупки принимаются в onPurchaseStateChange (PurchaseState, String, int, long). Это используется для сообщения о различных ошибках или если пользователь отказался и не приобрел элемент. Возможные коды ответов: RESULT_OK означает, что заказ был успешно отправлен на сервер. OnPurchaseStateChange () будет вызываться позже (с условием покупки ПОКУПКИ или ОТМЕНА), когда заказ будет снят или отменен. Этот код ответа также может произойти, если заказ на элемент, управляемый рынком, уже отправлен на сервер. RESULT_USER_CANCELED означает, что пользователь не покупал товар. RESULT_SERVICE_UNAVAILABLE означает, что мы не могли подключиться к серверу Android Market (например, если соединение с данными отключено). RESULT_BILLING_UNAVAILABLE означает, что биллинг внутри приложения еще не поддерживается. RESULT_ITEM_UNAVAILABLE означает, что элемент, предлагаемый для продажи, не существует (или не публикуется) в каталоге на стороне сервера. RESULT_ERROR используется для любых других ошибок (например, ошибка сервера).

Но метод обратного вызова

 @Override public void onPurchaseStateChange(PurchaseState purchaseState, String itemId, int quantity, long purchaseTime, String developerPayload) { Log.d("AJ", "onPurchaseStateChanged"); } 

Никогда не называется.

Я что-то упускаю? То же самое происходит и в Dungeons (демо-версия Google предоставлена), а onPurchaseStateChange не вызывается.

Документ Test-InAppBilling показывает, что мы должны иметь возможность достичь состояния покупки. Но когда я пытаюсь, я вижу только

Android.test.purchased: отправка запроса на покупку.

У меня была такая же проблема, но я просто решил это для себя. Я использовал открытый ключ моей работы в коде, но пытаюсь запустить приложение на своем личном телефоне. Поскольку я был подписан на моем телефоне с моей личной учетной записью, я предполагаю, что Google правильно предположил, что я не разработчик. Я бы подумал, что они отправят сообщение об ошибке. Как только я подключил свой личный ключ к коду, он отлично работал на моем телефоне. Таким образом, ключ может не соответствовать вам.