3

我正在尝试在 android 上进行应用内计费,但​​在尝试初始化事务时不断获得以下 logcat 输出:

// from logcat, BillingService:
Billing service connected
CheckBillingSupported
CheckBillingSupported response code: RESULT_OK
RestoreTransactions 
   restoreTransactions received RESULT_OK
     request id: 12345
     request id: -1
handleCommand() action: [com.android.vending.billing.RESPONSE_CODE].
RestoreTransactions: RESULT_DEVELOPER_ERROR

我的设置:

  1. 我在清单中有计费权限。
  2. 计费服务和接收方在清单中定义。
  3. 我的应用程序没有发布,我只是有一个草稿。
  4. 我创建了一个应用内项目,并发布了它。
  5. 我添加了一个测试帐户,但不确定它在这一点上是否有所作为。
  6. 市场上的草稿 apk 和我手机上的 apk 都使用相同的密钥在发布模式下签名,并且具有相同的 versionCode。

我已经在另一个应用程序中进行了应用内购买,但在这种情况下,我已经发布了该应用程序的一个版本。在这种情况下(如 #3 中所述),我从未发布过一次 apk。我们是否必须发布应用程序一次才能使其正常工作?我假设不是,

谢谢

4

3 回答 3

5

看起来您已经遵循了文档中的所有要求,所以我认为解决方案就是等到 Google Play 服务器赶上。

在将应用程序的新版本 apk 上传到 Google Play 后不久尝试恢复交易时,我遇到了同样的问题。似乎需要一些时间(可能是几个小时)才能在 Google 服务器上完全处理新的 apk,以便它正确响应所有类型的计费请求。例如,我在响应 CHECK_BILLING_SUPPORTED 时得到了 RESULT_OK,而不必等待太久,但是在 RESTORE_TRANSACTIONS 中遇到了问题(RESULT_DEVELOPER_ERROR 作为异步响应)。但是当我在几个小时后再次尝试使用相同版本的 apk 时,我也得到了 RESULT_OK 以响应 RESTORE_TRANSACTIONS,而没有对代码进行任何更改。

于 2012-07-24T16:44:17.913 回答
1

您可能会收到此错误的另一个原因是,如果您尝试一次获取超过 20 个 SKU。此限制记录在 AIDL 文件中。

于 2013-08-20T20:00:29.100 回答
0

您不需要在 Google Play 上发布应用程序,草稿就足够了。

您提到的 6 点没问题,但我想您需要检查文档中提到的额外要求:

RESULT_DEVELOPER_ERROR:

表示应用程序正在尝试发出应用内计费请求,但应用程序尚未在其清单中声明 com.android.vending.BILLING 权限。还可以指示应用程序未正确签名,或者您发送了格式错误的请求,例如缺少 Bundle 密钥的请求或使用无法识别的请求类型的请求。

于 2012-07-16T22:50:52.090 回答