我觉得我错过了一些非常愚蠢的东西!
经过多次混乱,阅读和打印看似无穷无尽的矛盾信息后,我终于潜入并开始在app计费中进行测试。活动正在连接到Google Play服务器,因为它在OnCreate()中调用getSkuDetails()时返回sku并且价格正常。
我在开发者控制台上设置了产品ID,也是测试用户。我几天前将一个APK上传到Alpha Testing。在我的设备上,使用我的开发者帐户登录Google Play商店并以调试模式运行应用程序,将android.test.cancelled设置为launchPurchaseFlow()中的产品ID(在IabHelper中)。
弹出Google付款对话框,点击“购买”,然后意外收到“付款成功”消息。
在LogCat中,计费响应代码为0(BILLING_RESPONSE_RESULT_OK),导致handleActivityResult()检查返回的签名和被购买的数据,这些是不存在的(有意义吗? - 因为首先没有请求购买)。 mPurchaseFinishedListener然后将其视为未知错误-1008。
public void onButtonClicked(View view) {
// Call BILLING API:
//
if (!billingStartedOk) {
Toast.makeText(context, "Purchase requires Google Play Store (billing) on your Android.", Toast.LENGTH_LONG).show();
return;
}
String payload = GameVariables.genPayLoad(); //
try {
mHelper.launchPurchaseFlow(activity, reservedProductIdCancelled, RC_REQUEST, mPurchaseFinishedListener, payload);
} catch (IabHelper.IabAsyncInProgressException e) {
e.printStackTrace();
}
}
D / GWL:在handleActivityResult中,得到responseCode = 0
D / GWL:在handleActivityResult中,得到resultCode = -1
E / IabHelper:应用内结算错误:BUG:purchaseData或dataSignature为空。
D / GWL:在handleActivityResult中,得到purchaseData == null || dataSignature == null
D / GWL:在mPurchaseFinishedListener中 - 返回result.getResponse()= -1008
D / GWL:**** TrivialDrive错误:购买错误:IAB返回null purchaseData或dataSignature(响应:-1008:未知错误)
D / GWL:在mPurchaseFinishedListener中 - 得到!result.isSuccess