我试图在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
我的设置:
我已经在应用内购买了在其他应用中工作,但在这种情况下,我已经发布了该应用的版本。在这种情况下(如#3中所述),我从未发布过一次apk。为了实现这个目的,我们是否必须发布一次应用程序?我不会,
由于
答案 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的请求 请求使用无法识别的请求类型。