Articles of in app purchase

InApp Billing:java.lang.SecurityException需要READ_PHONE_STATE

我在谷歌商店的应用程序崩溃报告中遇到了很多例外。 有人可以解释一下可能导致这种情况吗? 我使用的是android:targetSdkVersion = 19 java.lang.SecurityException: Requires READ_PHONE_STATE: Neither user 10131 nor current process has android.permission.READ_PHONE_STATE. at android.os.Parcel.readException(Parcel.java:1546) at android.os.Parcel.readException(Parcel.java:1499) at com.android.vending.billing.IInAppBillingService$Stub$Proxy.getSkuDetails(IInAppBillingService.java:251) at com.inapp.util.IabHelper.querySkuDetails(IabHelper.java:920) at com.inapp.util.IabHelper.queryInventory(IabHelper.java:550) at com.inapp.util.IabHelper.queryInventory(IabHelper.java:522) at com.inapp.util.IabHelper$2.run(IabHelper.java:617) at java.lang.Thread.run(Thread.java:818)

Android应用内购买:在定位Android 6时,是否需要检查com.android.vending.BILLING权限?

在实施应用内结算或IAB时, 文档会说您必须将其添加到清单中: 从Android 6开始,如果用户已授予不属于“ 普通 ”权限类别的权限,则应在运行时检查应用程序。 请注意,在API级别23, com.android.vending.BILLING未列在此类别下的任何位置。 所以… 如果不正常,这是否意味着危险? 在使用IAB之前是否需要检查权限? 如果我这样做,怎么样? 我找不到任何与新的Android 6权限模型集成的IAB示例。 例如,在Manifest.permission下似乎没有任何与计费相关的权限。

应用内结算v3无法在没有网络连接或飞机/飞行模式下查询项目

通过我的项目修改它来完成v3示例文件工作正常。 然而,我的朋友刚刚通过关闭wi-fi并启用飞行模式来测试代码。 这似乎导致无法查询应用内广告资源。 // Listener that’s called when we finish querying the items and subscriptions we own private final IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() { @Override public void onQueryInventoryFinished(IabResult result, Inventory inventory) { if (result.isFailure()) { // STOPS here and doesn’t continue on with no network connection return; } …… } }; 我认为在初次成功购买后,v3将其本地存储在其缓存中,以便它不必始终具有要检查的网络连接。 还有其他人遇到过这个问题吗? 我希望我错过了一些完全明显的东西,或者这是否应该如何运作。

是否可以在Android Studio中本地调试Google Play的应用内结算?

我在本地测试应用内订阅产品时遇到此错误。 validation是必需的。 您需要登录您的Google帐户 我能够检查产品的库存,但我不应该也可以购买它吗? 有很多post说明为什么会出现这个错误,我认为这个问题得到了解决: 该产品已在测试版渠道发布,并启用了应用内结算function 我使用设备上的测试用户许可帐户登录Play商店。 是通过beta / alpha频道测试实际购买的唯一方法 – 不是直接来自android studio。 这篇文章表明它有可能(见屏幕截图) http://developer.android.com/google/play/billing/billing_testing.html#billing-testing-test

InApp计费安全和远程方法调用

我在应用程序中实现了应用程序计费,现在我想要更多地保护它。 阅读开发者材料,它说: 除了运行模糊处理程序外,我们还建议您使用以下技术来混淆应用内的结算代码。 内联方法转换为其他方法。 动态构造字符串而不是将它们定义为常量。 使用Javareflection来调用方法。 http://developer.android.com/guide/market/billing/billing_best_practices.html 混淆 – 很好我能做到这一点= proguard 内联方法转换为其他方法 – 这就是说,一旦我的代码完成,尽可能地删除大量OO并将所有代码放在尽可能多的行中(对于我的应用程序的计费部分)在一个方法中? 这包括内联类吗? 在android示例中,他们有一个常量类,我会内联所有这些吗? 动态构造字符串 – 是的,所以将所有类常量variables排成一行 – 精细程序应该涵盖这一点 使用Javareflection – 这是我的主要问题。 我应该调用我的所有方法而不是调用它们吗? 为了节省自己,我可以这样做: private static Object invokeMethod(String name, Class[] params, Object[] args){ try { return MySpecificClass.class.getMethod(name, params).invoke(null, args); } catch (IllegalArgumentException e) { // Should never happen in my code, ignore and […]

IabHelper课不工作?

我在我的android项目中实现了IabHelper类,它说’getBuyIntentToReplaceSkus’无法解析。 完整的方法: buyIntentBundle = mService.getBuyIntentToReplaceSkus(5, mContext.getPackageName(),oldSkus, sku, itemType, extraData); 我在我的项目中实现了app计费,但我还没有创建任何要购买的项目,尽管其他方法没有任何问题。

如何为亚马逊iap设置proguard?

我正在尝试与亚马逊iap集成基础程序。 但是,当我尝试导出我的apk时,我收到以下错误: [2012-06-17 10:59:44 – sc] Proguard returned with error code 1. See console [2012-06-17 10:59:44 – sc] Unexpected error while performing partial evaluation: [2012-06-17 10:59:44 – sc] Class = [com/amazon/inapp/purchasing/KiwiResponseHandler$PurchaseResponseHandlerRunnable] [2012-06-17 10:59:44 – sc] Method = [run()V] [2012-06-17 10:59:44 – sc] Exception = [java.lang.IllegalArgumentException] (Can’t find common super class of [java/lang/String] (with 4 known […]

在实施Soomla Unity3d插件时进行购买时出现Google播放错误

我正在创建一个实现Soomla Unity IAP插件的应用程序。 在努力使IAP工作的过程中,我已经达到了可以在编辑器中进行购买的程度。 (不是真正的购买,它只是更新用户可以在游戏中购买/消费的虚拟货币)。 当我在Android设备上启动它时,我收到此错误: 需要身份validation。 您需要登录自己的Google帐户。 现在我已经阅读了多篇不同的文章,其中人们遇到了这个问题,似乎没有什么能帮到我。 这是我到目前为止所尝试的列表: 1)确保将应用程序发布到alpha或beta进行测试。(现在在alpha中) 2)确保价格与游戏和开发者控制台匹配。 3)使用以未使用开发人员电子邮件的用户身份登录的设备。 4)确保测试设备上的电子邮件在开发人员控制台中列为测试人员。 5)确保Android Manifest中列出了必要的权限。 6)确认商户帐户已正确设置并validation。 7)确保构建为发布而不是开发(不确定这是否重要,但我尝试了两种方式)。 8)从项目中完全删除了所有Soomla插件,然后将其重新添加,同时非常仔细地遵循教程,以确保没有遗漏任何小东西。 仍然没有骰子。 我将核心和商店组件添加到他们必要的场景中。如果您对解决此问题应采取的措施有任何其他想法,请告诉我。 同时,这是我用于设置Soomla的StoreAssets.cs代码: using UnityEngine; using System.Collections; using System.Collections.Generic; using Soomla.Store; public class StoreAssets : IStoreAssets { public static bool purchased = false; public int GetVersion() { return 0; } public void onItemPurchased(PurchasableVirtualItem pvi, string payload) […]

使用php OpenSSL进行Android应用内购买服务器签名validation

尝试遵循以下针对应用内购买的一些安全准则: http : //developer.android.com/guide/market/billing/billing_best_practices.html 我试图在服务器上而不是在应用程序中自己进行签名validation。 我理想情况下喜欢使用php openssl库,它看起来像以下代码应该工作: 我用app64购买捆绑包中的base64解码签名字符串替换签名,并使用同一捆绑包中的数据。 公钥需要采用PEM格式,我添加了BEGIN和END令牌以及一些换行符。 我的问题是我无法获得此PHP代码来成功validation数据/签名,我不知道需要更改什么才能使其正常工作。 如果我使用openssl,创建一个私钥和公钥,使用sha1为相同的数据创建一个签名,并通过上面的PHP代码运行它,它工作正常并validation成功。 以下是我使用OpenSSL的方法: openssl genrsa -out private.pem openssl rsa -in private.pem -pubout -out public.pem 然后我使用private.pem和一些php代码生成签名: … openssl_sign($data, $signature, $pkeyid); … 有没有人有任何工作样本PHP代码与服务器端validation应用程序内签名? 我可以运行示例应用程序中的等效java代码,这似乎工作正常,但我想尽可能直接使用PHP。

托管和非托管应用内产品android之间的区别?

我浏览了开发人员论坛,了解托管非托管应用内产品之间的区别。 他们说“未管理的商品没有将他们的交易信息存储在Android Market上,这意味着您无法查询Android Market以检索购买types被列为非托管的商品的交易信息。您负责管理交易信息。非托管物品。“ 这是什么意思? 当我测试托管和非托管的应用内商品时,从服务器获得正确的响应,在我的商家帐户中,托管和非托管应用的订单也变得明显。 请帮我了解这两者之间的区别。