Мы видим ошибку «служба недоступна» в последней части потока сообщений о покупках в приложении Android, и мы не знаем, почему.
Мы внедрили Android-биллинг в приложении, и все работает достаточно хорошо, чтобы мы почти полностью проходили последовательность сообщений:
1) Мы отправляем сообщение REQUEST_PURCHASE и получаем RESPONSE_CODE0 назад
2) Мы получаем com.android.vending.billing.IN_APP_NOTIFY
3) Мы отправляем сообщение GET_PURCHASE_INFORMATION, а также получаем RESPONSE_CODE 0 назад
4) Мы получаем com.android.vending.billing.PURCHASE_STATE_CHANGED
5) Мы отправляем сообщение CONFIRM_NOTIFICATIONS.
Мы рассмотрели пример приложения (com.android.vending.billing), которое Googleобеспечивает, что говорит, что все, что мы должны предоставить в сообщении CONFIRM_NOTIFICATIONS, это массив строк идентификаторов уведомлений.Ответ, который мы получаем от этого последнего сообщения, - это сообщение com.android.vending.billing.RESPONSE_CODE в нашем BroadcastReceiver, которое содержит значение кода ответа 2 (которое отображается на «услуга недоступна»).Почему мы получаем ошибку из этого последнего сообщения?Мы используем статический идентификатор элемента android.test.purchased, если это имеет значение.
Сообщения журнала Android:
06-29 14: 20: 12.054: DEBUG / iapReceive(21391): уведомление, уведомление ID android.test.purchased
06-29 14: 20: 12.054: DEBUG / iapSend (21391): отправка GET_PURCHASE_INFORMATION с уведомлением ID android.test.purchased
06-29 14: 20: 13.994: DEBUG / iapReceive (21391): inapp_signed_data равно {"nonce": 5454, "orders": [{"tificationId ":" android.test.purchased "," orderId ": "actionId.android.test.purchased "," packageName ":" com.shinyandroid "," productId ":" android.test.purchased "," purchaseTime ": 1309382399381," purchaseState ": 0}]}
06-29 14: 20: 13.994: DEBUG / iapReceive (21391): состояние покупки изменено, уведомление ID android.test.purchased, SKU android.test.purchased
06-29 14: 20: 13.994: DEBUG / iapSend (21391): отправка CONFIRM_NOTIFICATIONS с уведомлением android.test.purchased
06-29 14: 20: 14.845: DEBUG / vending (18344):[51] RequestRunnable.run (): получено исключение ApiException из асинхронного запроса: ошибка из серверной части.Request = com.android.vending.model.AckNotificationsRequest, Response = BAD_REQUEST
06-29 14: 20: 16.104: DEBUG / vending (18344): [51] RequestRunnable.run (): получено исключение ApiException из асинхроннойЗапрос: Ошибка от бэкэнда.Request = com.android.vending.model.AckNotificationsRequest, Response = BAD_REQUEST
06-29 14: 20: 18.274: DEBUG / vending (18344): [51] RequestRunnable.run (): получено исключение ApiException из асинхроннойЗапрос: Ошибка от бэкэнда.Request = com.android.vending.model.AckNotificationsRequest, Response = BAD_REQUEST
06-29 14: 20: 20.824: DEBUG / vending (18344): [51] RequestRunnable.run (): получено исключение ApiException из асинхроннойЗапрос: Ошибка от бэкэнда.Request = com.android.vending.model.AckNotificationsRequest, Response = BAD_REQUEST
06-29 14: 20: 26.854: DEBUG / vending (18344): [51] RequestRunnable.run (): получено исключение ApiException из асинхроннойЗапрос: Ошибка от бэкэнда.Request = com.android.vending.model.AckNotificationsRequest, Response = BAD_REQUEST
06-29 14: 20: 26.854: WARN / vending (18344): [51] AsynchInAppAckNotifications.onException (): ошибка сервера в InAppAckNotificationsRequest: com.android.vending.api.ApiException: ошибка от серверной части.Request = com.android.vending.model.AckNotificationsRequest, Response = BAD_REQUEST
06-29 14: 20: 26.904: DEBUG / iapReceive (21391): асинхронный код ответа, requestId 5225550415890630760, responseCodeIndex 2