我尝试在app app v3中输入我的应用程序。
我跟着:http://developer.android.com/google/play/billing/billing_integrate.html
我将我的应用程序上传到develepors控制台3天,然后设置应用程序产品。
我将我的Base64编码的RSA公钥和我的应用程序产品ID。
当我开始购买时,我收到错误消息。当我检查我的RESPONSE_CODE 5和谷歌
应用内结算参考(http://developer.android.com/google/play/billing/billing_reference.html#billing-codes)
似乎我的应用设置存在问题。
当我尝试谷歌测试ID像android.test.purchased我得到了很好的结果。
这是我的代码,也许我在这里做错了什么:
some_id is my test in app product id.
protected void onCreate(Bundle savedInstanceState) {
..
..
..
Helper = new IabHelper(this, base64EncodedPublicKey);
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
if (!result.isSuccess()) {
Toast.makeText(getApplicationContext(), "connection bad",Toast.LENGTH_SHORT).show();
}
Toast.makeText(getApplicationContext(), "connection good",Toast.LENGTH_SHORT).show();
}
});
mServiceConn = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
mService = null;
}
@Override
public void onServiceConnected(ComponentName name,
IBinder service) {
mService = IInAppBillingService.Stub.asInterface(service);
}
};
bindService(new
Intent("com.android.vending.billing.InAppBillingService.BIND"),
mServiceConn, Context.BIND_AUTO_CREATE);
...
...
..
我的购买代码:
IabHelper.QueryInventoryFinishedListener
mQueryFinishedListener = new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(IabResult result, Inventory inventory)
{
if (result.isFailure()) {
// handle error
return;
}
String applePrice =
inventory.getSkuDetails("some_id").getPrice();
// update the UI
}
};
ArrayList<String> skuList = new ArrayList<String>();
skuList.add("some_id");
Bundle querySkus = new Bundle();
querySkus.putStringArrayList("ITEM_ID_LIST", skuList);
Bundle skuDetails = new Bundle();
try {
skuDetails = mService.getSkuDetails(3, getPackageName(), "inapp", querySkus);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String sku = "some_id";
Bundle buyIntentBundle = new Bundle();
try {
buyIntentBundle = mService.getBuyIntent(3, getPackageName(), sku, "inapp", "j");
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT");
try {
startIntentSenderForResult(pendingIntent.getIntentSender(),1001, new Intent(), Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0));
} catch (SendIntentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Bundle ownedItems = mService.getPurchases(3, getPackageName(), "inapp", null);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 0 :(得分:4)
您无法使用开发者帐户测试In App Billing。那是因为你不能通过自己做任何事情。您必须创建另一个帐户并在开发人员控制台中为其授予测试人员权限(但仅当您尚未发布应用程序时 - 任何接受应用程序开发人员的人都可以进行应用程序购买)。另请注意,必须在开发者控制台中激活购买。
查看Setting Up for Test Purchases部分(无法使此链接参考该部分本身,因此请手动滚动至该部分。)
P.S。另请注意,测试人员帐户必须是系统中的主帐户 - 例如,在硬重置后首先设置的帐户。即使您正在使用其他帐户登录游戏,也可以仅对主帐户进行购买。但你可以测试一下,过去几个月可能会发生一些变化。