我制作了一个Android应用程序,可以使用应用内结算function购买商品。 购买商品后,交易可以在Android电子市场和手机之间轻松同步 – 可以在应用程序中使用。 但是,我需要我的服务器来了解购买。 交付特定于应用程序的数据的决定应在我的服务器上进行,而不是在客户端应用程序中进行。 例如 用户从Android电子市场购买项目X. 交易数据Y被发送到客户端。 客户端将Y发送到我的服务器。 客户端请求服务器为X提供内容。 如果Y有效,服务器将传送内容。 这怎么能做到呢? 问:如何validation来自Android客户端(可能源自Google服务器)的交易数据不是假的? 即黑客没有生成数据。 Google服务器 – > Android客户端 – >我的服务器 – > Android客户端 也许这是一个比其他任何问题更多的PHP问题。 我的服务器脚本(PHP)为了validation检索的数据是真实的,究竟应该做什么?
我正在首次实施“应用内结算”,并使用静态SKU IDtesting我的第一笔交易。 它第一次运行得非常好。 我打电话给mHelper.launchPurchaseFlow(…)并完成了testing购买。 我的活动收到onActivityResultcallback,并确保使用mHelper.handleActivityResult(…)处理它。 一切都很好。 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // Pass on the activity result to the helper for handling log("onActivityResult"); if (!this.mHelper.handleActivityResult(requestCode, resultCode, data)) { log("cleared the launch flow"); // not handled, so handle it ourselves (here's where you'd // perform any handling of activity results not […]
我只是完成一个Android游戏,我正在testing应用程序购买function。 我使用android.test.purchased发送testing 直到几个小时前它工作正常。 但现在当我点击谷歌播放中的“接受和购买”时,商店给出了错误。 Google播放错误“从服务器[DF-DFERH-01]检索信息时出错” 有谁知道这个错误是什么意思?
编辑4/15:在IabHelper中捕获空指针似乎已经停止了此问题。 我不再看到exception被抛出,我将接受这个答案。 编辑4/04:稍微深入一点。 有tryPatch块为queryPurchases方法处理RemoteExceptions和JSONExceptions,但没有NullPointerException处理。 我要去尝试的是包括空指针exception处理,所以当试图查询时,IabHelper看起来像这样: catch (NullPointerException e) { throw new IabException(IABHELPER_UNKNOWN_ERROR, "NullPointer while refreshing inventory.", e); } 我刚刚提交了一个错误: https://code.google.com/p/marketbilling/issues/detail?id=114 编辑3/25:好吧,仍然收到这个崩溃…现在它发生,试图从IabHelper以下摘录的第3行获取上下文: int queryPurchases(Inventory inv, String itemType) throws JSONException, RemoteException { logDebug("Querying owned items, item type: " + itemType); logDebug("Package name: " + mContext.getPackageName()); 这是令人沮丧的,因为在我的清单中,我总是使用我的应用程序的完整path名称“名称”。 示例“com.myappname.blah.ClassName” 我也试着把这个,MyClass.this,getApplicationContext()传给mHelper。 然而,它们都会从野外的设备中随机产生相同的NullPointer结果。 我也在清单中试过name =“。MyClass”。 这就是目前的情况: mHelper = new IabHelper(MyClass.this, myKey); […]
我在应用程序购买/订阅中遇到问题: 如果设备上有多个帐户,我无法获得用第二个帐户进行的购买交易。 有时这可以通过从Google Playnetworking界面安装应用程序暂时修复,但过了一段时间,购买将不会出现在查询中,迫使用户重新安装。 我正在使用这个示例中的IabHelper类。 做一些谷歌search,我发现这个错误存在一段时间,但不幸的是,我不能找出错误是在IabHelper类还是在谷歌方面。 我想提请大家注意Google,所以他们会在IabHelper课程或Play服务中提供一个适当的解决方法,或提供信息,如何处理。 我正在使用一个应用程序中的代码(写作的时候)900.000活跃的用户安装,我必须触发相当多的退款,因此。 如果有这个问题,我错过了,请让我知道。 编辑:有时,即使手机上只有一个帐户,也无法检索购买。
在Android应用中实现应用内结算似乎相当复杂。 我怎么能这样做? SDK中的示例应用程序只有一个Activity,这对于像我的应用程序那样具有多个活动的应用程序来说过于简化。
从Android应用程序计费版本3(TrivialDrive)示例应用程序来与SDK MainActivity.java /* base64EncodedPublicKey should be YOUR APPLICATION'S PUBLIC KEY * (that you got from the Google Play developer console). This is not your * developer public key, it's the *app-specific* public key. * * Instead of just storing the entire literal string here embedded in the * program, construct the key at runtime from […]
我目前正在为未来的应用程序testing应用程序内结账,并且在我第一次成功“购买”testing项目“android.test.purchased”之后,每当我尝试再次购买时,我都会收到响应代码7,这意味着我已经拥有这个项目。 12-15 23:02:14.149:E / IabHelper(19829):应用内结算错误:无法购买商品,错误响应:7:商品已拥有 据我所知,这次购买应该总是可能的,对吧? 所以开发者可以testing他/她的应用程序? 如果没有,我怎么能“重置”它的状态不拥有? 我正在使用Google应用内结算示例中的util包。
我一直在尝试为我的第一个应用设置应用内结算,并且一直在使用android.test.purchased sku。 购买通过,我设法把SKU存入我的库存,但正如标题所说,在IabPurchaseFinished,从来没有被称为。 我认为这可能与这个日志有关:“无法保存哪个视图具有焦点,因为焦点视图com.android.internal.policy.impl.PhoneWindow$DecorView@406743d0没有ID”。 popup之前,就在Google Play之前。 我不确定这是什么意思,但… 启动购买: mHelper.launchPurchaseFlow(this, sku, 10001, mPurchaseFinishedListener, ""); 听众: IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() { @Override public void onIabPurchaseFinished(IabResult result, Purchase info) { System.out.println("Purchase Finish heard something"); if (result.isFailure()) { Log.d(TAG, "Error purchasing: " + result); return; } else{ Log.d(TAG,"Success!"); } } };
当我尝试使用应用内结算来运行我的应用程序时,我收到错误消息:“此版本的应用程序未configuration为通过Google Play进行结算,请查看帮助中心获取更多信息”。 我已经在清单文件中获得了结算许可,并且我已经将一个签名的.apk作为草稿上传到Google Play上,我也已经将相同的已签名apk安装到了我的手机上。 有关如何解决这个问题的任何帮助?