Articles of android billing

android in-app billing v3 api中的开发者有效负载应该是多少?

我正在我的应用中实施应用内结算以解锁高级function。 应用内结算function设置正确。 除了“开发者有效载荷”之外,一切似乎都很好。 示例应用程序说 /* * TODO: verify that the developer payload of the purchase is correct. It will be * the same one that you sent when initiating the purchase. * * WARNING: Locally generating a random string when starting a purchase and * verifying it here might seem like a good approach, but […]

Android结算例外

我正在测试我的账单,我得到了这个例外: 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在app结算购买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); } 我得到“签名是空的”。 即使我按照以下步骤操作: […]

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 ". 我检查了我的钥匙,包名和应用版本都是正确的,有没有人遇到过这个问题? 请帮我解决一下这个。