Articles of android billing

IabHelper Android的错误(NullPointerException)launchPurchaseFlow?

我正在使用来自Google的应用内结算的最新版本文件。 今天,当我下载应用程序时,我的手机中出现错误(我试图重复这些步骤,但是错误不再出现)。 比方说,在我的MainActivity中,我有一个button,可以让用户购买一些应用内产品。 我的活动调用这个构造函数: public void launchPurchaseFlow(Activity act, String sku, int requestCode, OnIabPurchaseFinishedListener listener) { launchPurchaseFlow(act, sku, requestCode, listener, ""); } 通过这种方式: mHelper.launchPurchaseFlow(MainActivity.this, SKU_UNLOCKED, RC_REQUEST, mPurchaseFinishedListener, ""); 今天我得到了这个NullPointerException错误: java.lang.NullPointerException at xxx.xxx.xxxxx.util.IabHelper.launchPurchaseFlow(IabHelper:386) at xxx.xxx.xxxxx.util.IabHelper.launchPurchaseFlow(IabHelper:338) at xxx.xxx.xxxxx.MainActivity$6.onClick(MainActivity:422) MainActivity的第422行是mHelper.launch … IabHelper的第338行是构造函数。 然后在里面启动购买stream程: 386行: Bundle buyIntentBundle = mService.getBuyIntent(3, mContext.getPackageName(), sku, itemType, extraData); 这是在这个try-catch块内: try { logDebug("Constructing buy intent for […]

在应用程序购买错误在静态代码

我正在使用当前的代码购买调用购买意向 Bundle buyIntentBundle = mService.getBuyIntent(3, pContext.getPackageName(), "android.test.canceled", "inapp", "bGoa+V7g/yqDXv"); Set<String> allKeys = buyIntentBundle.keySet(); Object responseCode= buyIntentBundle.get("RESPONSE_CODE"); Object intent= buyIntentBundle.get("BUY_INTENT"); Log.i(TAG,"buyIntentBundle"+buyIntentBundle.keySet()+"responseCode"+responseCode+"intent"+intent); PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT"); if (pendingIntent != null) { pContext.startIntentSenderForResult(pendingIntent.getIntentSender(), 2013, new Intent(), Integer.valueOf(0), Integer.valueOf(0),Integer.valueOf(0)); } 现在我正在检查onActivityResult if (requestCode == 2013) { Log.i(TAG, "onactivity result called inside request code"); int responseCode = intent.getIntExtra("RESPONSE_CODE", 0); String […]

Android计费 – 在文件Security.java中,base64EncodedPublicKey应该是编码值吗?

我应该将我的应用程序的实际公共密钥粘贴到这个variables的值吗? 或者我应该编码它,然后无论编码的string,我会把这个string变成这个variables的值? 应该是哪一个?

Android IABv3 getSkuDetails不返回Sku细节

我目前正在与Android Iab v3作战。 我以前一直使用Google的IabHelper类来显示成功的产品。 但是,今天已经不再回报我了。 传递给IabHelper类中的IInAppBillingService的getSkuDetails函数的querySku字段的内容是: 捆绑[{ITEM_ID_LIST = [com.app.android.credits.10,com.app.android.credits.25,com.app.android.credits.50]}] 我回来的包中返回的是: 套餐[{DETAILS_LIST = [],RESPONSE_CODE = 0]] 由于它的工作时间,现在我还没有改变IabHelper代码,随着显示产品的代码。 代码的重要部分是: private void getItemsForSale() { ArrayList<String> skuList = new ArrayList<String>(); skuList.add(getResources().getString(R.string.ten_credits_product_id)); skuList.add(getResources().getString(R.string.twenty_credits_product_id)); skuList.add(getResources().getString(R.string.fifty_credits_product_id)); mHelper.queryInventoryAsync(true, skuList, this); } @Override public void onQueryInventoryFinished(IabResult result, Inventory inv) { if(result.isFailure()) { Log.d("DEBUG", "Error Inventory Query: " + result); AppMsg.makeText(BuyCreditsActivity.this, R.string.sorry_something_went_wrong, AppMsg.STYLE_ALERT).show(); } else […]

Google在应用内购买产品清单

我从这里find了下面的代码来获取谷歌Play商店的产品列表 ArrayList skuList = new ArrayList(); skuList.add("premiumUpgrade"); skuList.add("gas"); Bundle querySkus = new Bundle(); querySkus.putStringArrayList(“ITEM_ID_LIST”, skuList); 有没有办法获得dynamic产品列表? 这里是硬编码的。当我在应用程序启动后添加新产品时会发生什么?

Android计费库错误

大家。 我刚从应用程序购买应用程序开始。 这对我来说是新的东西。 现在我已经看到了一些网上的例子,我发现github上的一个项目在将账单库连接到它之前充满了错误。 当我做了我刚刚解决了在项目中的错误,但仍然得到了惊叹号,因为android计费库包有错误。 我检查了这个错误,但是我解决不了,因为我不知道该怎么做。 请大家,我真的需要一些帮助。 我得到了这些错误 @Override public android.os.IBinder asBinder() { return this; } 在asBinder中的错误和其说法“在这条线上的多个标记 – The method asBinder() of type IMarketBillingService.Stub must override a superclass method – implements android.os.IInterface.asBinder" 相同的代码也是我得到一个错误 @Override public android.os.Bundle sendBillingRequest(android.os.Bundle bundle) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(); android.os.Parcel _reply = android.os.Parcel.obtain(); android.os.Bundle _result; try { _data.writeInterfaceToken(DESCRIPTOR); if […]

在应用更新后无法使用帐号 – Google商店

我已经在我的应用程序中实现了应用程序内结算 – 最近谷歌已经更新了它,以前我用"android.test.purchased"testing了应用程序内结算,它工作正常(购买完整版本和还原完整版本) 。 现在,我从这里https://code.google.com/p/marketbilling/source/detail?r=7bc191a004483a1034b758e1df0bda062088d840 之后,我无法testing应用程序,它给Logcat "IabHelper: In-app billing error: Purchase signature verification FAILED for sku android.test.purchased ".以下错误"IabHelper: In-app billing error: Purchase signature verification FAILED for sku android.test.purchased ". 我检查了我的钥匙,包名和应用版本都是正确的,有没有人遇到过这个问题? 请帮我解决一下这个。

Android计费exception

我正在testing我的帐单,我得到了这个例外: java.lang.IllegalStateException: Can't start async operation (launchPurchaseFlow) because another async operation(launchPurchaseFlow) is in progress. at utils.IabHelper.flagStartAsync(IabHelper.java:711) at utils.IabHelper.launchPurchaseFlow(IabHelper.java:316) at utils.IabHelper.launchPurchaseFlow(IabHelper.java:294) at com.problemio.SubscribeIntroActivity$6.onClick(SubscribeIntroActivity.java:117) at android.view.View.performClick(View.java:2532) at android.view.View$PerformClick.run(View.java:9308) at android.os.Handler.handleCallback(Handler.java:587) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:150) at android.app.ActivityThread.main(ActivityThread.java:4293) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) at dalvik.system.NativeStart.main(Native Method) 我运行这个代码之后: Button subscribe = (Button)findViewById(R.id.subscribe); subscribe.setOnClickListener(new Button.OnClickListener() { public […]

Android在应用程序结算购买validation失败

我在我的android应用程序中执行应用程序结算时遇到了麻烦。 我收到一个购买签名validation失败。 在第一次我强硬这是base64的关键,但我检查了很多次,我仍然得到错误,然后我看了一下Security.java文件,我发现这种方法,我编辑了一些信息关于什么是错的: public static boolean verifyPurchase(String base64PublicKey, String signedData, String signature) { if (TextUtils.isEmpty(signedData) || TextUtils.isEmpty(base64PublicKey) || TextUtils.isEmpty(signature)) { if(TextUtils.isEmpty(signedData)) Log.d(TAG, "SIGNED DATA EMPTY"); if(TextUtils.isEmpty(base64PublicKey)) Log.d(TAG, "KEY IS EMPTY"); if(TextUtils.isEmpty(signature)) Log.d(TAG, "SIGNATURE IS EMPTY"); Log.e(TAG, "Purchase verification failed: missing data."); return false; } PublicKey key = Security.generatePublicKey(base64PublicKey); return Security.verify(key, signedData, signature); } 我得到“签名是空的”。 即使我遵循以下步骤: […]

Android应用内结算:无法启动asynchronous操作,因为另一个asynchronous操作(正在进行)

我正在使用IabHelper实用程序类,正如Google的教程所推荐的那样,我正在受到这个错误的严重打击。 显然, IabHelper不能同时运行多个asynchronous操作。 我甚至设法在库存盘点仍在进行时尝试开始采购。 我已经尝试在我的主类中实现onActivityResult ,正如这里所build议的,但是在错误发生之前,我甚至都没有调用该方法。 然后我发现这个,但我不知道在哪里可以find这个flagEndAsync方法 – 它不在IabHelper类中。 现在我正在寻找一个方法来解决这个问题(不用重新实现整个She-Bang)。 我能想到的唯一解决scheme是创build一个boolean字段asyncActive ,在asynchronous任务启动之前检查,如果有另一个任务处于活动状态,则不执行此操作。 但是还有其他许多问题,并且不能跨活动。 此外,我宁愿有一个asynchronous任务队列,并尽快运行,而不是根本不运行。 任何解决这个问题?