应用内结算,无法使RESULT_DEVELOPER_ERROR消失

时间:2012-07-16 22:41:15

标签: android in-app-billing android-billing

我试图在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都是在发布模式下使用相同的密钥签名并具有相同的版本代码。
  7. 我已经在应用内购买了在其他应用中工作,但在这种情况下,我已经发布了该应用的版本。在这种情况下(如#3中所述),我从未发布过一次apk。为了实现这个目的,我们是否必须发布一次应用程序?我不会,

    由于

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

您无需在Google Play上发布应用,草稿就足够了。

你提到的6分是可以的,但我想你需要检查文档中提到的额外要求:

RESULT_DEVELOPER_ERROR:
  

表示应用程序正在尝试进行应用内结算   请求,但申请尚未声明   其清单中的com.android.vending.BILLING权限。也能   表示应用程序未正确签名或您发送的应用程序   格式错误的请求,例如缺少Bundle键或a的请求   请求使用无法识别的请求类型。