Articles of in app purchase

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被列为非托管的商品的交易信息。您负责管理交易信息。非托管物品。“ 这是什么意思? 当我测试托管和非托管的应用内商品时,从服务器获得正确的响应,在我的商家帐户中,托管和非托管应用的订单也变得明显。 请帮我了解这两者之间的区别。

应用内结算安全和设计问题

我有一些与Android In-App Billing相关的问题: 是否可以从非市场应用程序购买? 我知道这将是一个漏洞,但我没有机会发现它是否可能。 如何获得特定产品的购买状态? 据我所知,可以使用RESTORE_TRANSACTIONS请求完成,但不建议经常使用。 这不是一个理论问题。 我的应用程序允许用户使用应用内结算购买内容。 内容可以从服务器下载,服务器必须允许内容下载,只有在购买时才能下载。 但是,如果不使用Android电子市场的签名回复,则无法检查内容是否已购买。 如何从Android电子市场获取商品的价格和描述? 似乎我知道答案,而且“它无法完成”,但也许我错了。 有可能检索物品的价格是非常有用的。 对我来说,如何解决/将要在您的应用中解决这些问题非常有趣。 任何这些问题的答案将不胜感激。

应用程序内简单的教程

我想使用Libgdx为我的Android应用程序使用Google应用内结算。 默认情况下,它是一个免费的应用程序给大家。 一旦用户支付了一小笔费用(假设为1美元),一些function将被解锁,并且如果用户支付了全部价格(假设为2美元),所有function将被解锁。 我有一个官方的谷歌的计费网站阅读,但我不知道如何链接到Libgdx。 Libgdx官方网站没有提供任何明确的指导和解释。 至今,我还不知道如何链接Libgdx和应用内结算。 此外,当用户购买解锁项目时,信息被存储在哪里(在偏好文件中?)? 我完全不知道。 如果有人把我带到正确的道路上,那将会很棒。

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

我正在使用当前的代码购买调用购买意向 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应用程序的Google Checkout订单ID吗?

我们希望允许用户通过从Android电子市场购买的每个应用激活我们的服务器上的服务,validation用户确实已经购买了该应用。 为此,我们正在评估使用Google Checkout的通知历史loggingAPI,该API允许我们从我们的服务器查询结帐订单ID的状态。 现在的问题是,我们不知道如何从应用程序本身获得结账订单ID。 使用新的应用内购买API,我们可以获取每个应用内购买的结帐订单ID,但不能购买应用。