我们在Android的应用内购买消息流的最后部分看到“服务不可用”错误,我们不知道原因。
我们已经实施了Android的应用内结算功能,而且运行良好,我们几乎可以完成整个邮件序列:
1)我们发送REQUEST_PURCHASE消息并获得0的RESPONSE_CODE
2)我们收到com.android.vending.billing.IN_APP_NOTIFY
3)我们发送GET_PURCHASE_INFORMATION消息并获得0的RESPONSE_CODE
4)我们收到com.android.vending.billing.PURCHASE_STATE_CHANGED
5)我们发送的是CONFIRM_NOTIFICATIONS。
我们查看了Google提供的示例应用(com.android.vending.billing),其中说明我们必须在CONFIRM_NOTIFICATIONS消息上提供的所有内容都是通知ID的字符串数组。我们从最后一条消息收到的响应是我们的BroadcastReceiver中的com.android.vending.billing.RESPONSE_CODE消息,其中包含响应代码值2(映射到“service unavailable”)。为什么我们从最后一条消息中得到错误?我们正在使用静态项ID android.test.purchased,如果这有所不同。
Android日志消息是:
06-29 14:20:12.054:DEBUG / iapReceive(21391):通知,notificationId android.test.purchased
06-29 14:20:12.054:DEBUG / iapSend(21391):使用notificationId发送GET_PURCHASE_INFORMATION android.test.purchased
06-29 14:20:13.994:DEBUG / iapReceive(21391):inapp_signed_data是{“nonce”:5454,“orders”:[{“notificationId”:“android.test.purchased”,“orderId”: “transactionId.android.test.purchased”, “的packageName”: “com.shinyandroid”, “的productId”: “android.test.purchased”, “purchaseTime”:1309382399381 “purchaseState”:0}]}
06-29 14:20:13.994:DEBUG / iapReceive(21391):购买状态已更改,notificationId android.test.purchased,SKU android.test.purchased
06-29 14:20:13.994:DEBUG / iapSend(21391):使用notificationId发送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
答案 0 :(得分:1)
已经过了几个星期所以我不再100%确定我们做了什么来修复它,但我认为问题是用于签署我们上传的应用程序的密钥之间的不匹配(在测试模式下)到Android Market以及我们用来签署我们在手机上运行的应用程序的密钥。