我正在尝试在Google Play商店中的应用中实施应用内结算功能。 对于运行应用程序的任何设备,我都会得到相同的结果。 (我在没有帮助的情况下阅读了教程和所有问题)
为了测试,我正在将已签名的apk上传到市场,并且我将每个结算设置结果响应保存在服务器上,因此我可以看到所有用户的结果。 (所有结果都相同 - 响应3 )。所以我知道这不是设备,位置,谷歌播放服务版本等问题。
我可以上传一些代码,但基本上我一直在使用这些教程,所以它很直接。
部分代码
清单中的权限:
<uses-permission android:name="com.android.vending.BILLING" />
OnActivityResult:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d(TAG, "onActivityResult(" + requestCode + "," + resultCode + "," + data);
// Pass on the activity result to the helper for handling
if (mHelper == null || !mHelper.handleActivityResult(requestCode, resultCode, data)) {
// not handled, so handle it ourselves (here's where you'd
// perform any handling of activity results not related to in-app
// billing...
super.onActivityResult(requestCode, resultCode, data);
这里我正在做一些与结算无关的其他事情
}
else {
Log.d(TAG, "onActivityResult handled by IABUtil.");
}
}
这就是我初始化结算助手的方式:
private void InitBilling() {
mHelper = new IabHelper(this, base64EncodedPublicKey);
isBillingAvailable = false;
// perform the binding by calling the bindService method
Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
serviceIntent.setPackage("com.android.vending");
bindService(serviceIntent, mServiceConn, Context.BIND_AUTO_CREATE);
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
if (!result.isSuccess()) {
// Oh noes, there was a problem.
Log.e(TAG, "Problem setting up In-app Billing: " + result);
return;
}
// Hooray, IAB is fully set up!
Log.d(TAG, "In-app Billing is set up OK");
isBillingAvailable = true;
ArrayList<String> listOfItemsToCheck = new ArrayList<String>();
// getting list of items..
checkForPurchasedItems(listOfItemsToCheck);
}
});
}
是什么导致这种情况,我该如何解决这个问题? 提前谢谢。
答案 0 :(得分:1)
有很多情况可能导致此问题,因此您需要描述到目前为止您所做的事情。一些检查站:
- 您的清单中的权限是否正确
- 你在onActivityResult中处理游戏服务库的响应吗?
- 您是否还在测试,所以您在开发者帐户的测试部分输入了帐户
通常,这表示设备上的API版本不匹配(如果您使用不同的设备,则不太可能)或者不允许用户使用它:
BTW:测试不适用于您自己的开发者帐户,但您需要注册测试帐户。表示因为API_VERSION而无法使用应用内结算 您指定的内容未被Google Play应用程序识别或 用户没有资格进行应用内结算(例如,用户) 居住在禁止应用内购买的国家/地区。