Android In App Billing ...为什么有矛盾的信息?

时间:2013-06-21 05:03:06

标签: android in-app-purchase in-app-billing billing android-billing

我和其他许多人一样,只是在验证静态响应是否有效后,尝试测试我的应用内购买情况。但是当我阅读文档,帖子和答案时,似乎没有任何结果。而且我非常沮丧。

我的最终目标是找出我是否可以在不收费的情况下进行测试。

这个文件说我可以 - link

  

获得测试访问权限后,这些用户可以侧载您的应用并测试您产品的完整商品推销,购买和实现流程。测试购买是真实订单,Google Play以与其他订单相同的方式处理它们。购买完成后, Google Play会阻止订单进行财务处理确保用户帐户无实际费用,并在14天后自动取消已完成的订单。

和相同的链接

  

在测试购买过程中,用户可以测试应用中的实际商品推销,购买和实现流程。在购买过程中,inapp项目显示为具有实际价格的普通项目。但是, Google Play通过购买对话框中心的通知标记测试购买,以便于识别

但是在这个页面上,它说 - link

  

使用测试人员帐户登录测试设备。通过购买一些项目来测试您的应用内结算应用,并修复您遇到的任何问题。 如果您不希望实际向您的测试人员收费,请务必退还购买的商品!

WTF ......所以有人都知道吗?可以不收费进行测试吗?如果是这样,怎么样?

3 个答案:

答案 0 :(得分:2)

如果您使用In App Billing版本3,那么您只需使用 product id =“android.test.purchased”即可。它是虚拟产品,您不应该在开发人员控制台中添加它。你可以不收取任何费用购买该产品。

<强> android.test.purchased

当您使用此产品ID制作应用内结算请求时,Google Play会像您成功购买商品一样进行回复。响应包括JSON字符串,其中包含虚假购买信息(例如,虚假订单ID)。在某些情况下,JSON字符串已签名,响应中包含签名,因此您可以使用这些响应测试签名验证实现。

希望它会对你有所帮助。

答案 1 :(得分:2)

是:您可以为您在控制台中实际定义的实际商品(SKU)进行测试购买,不涉及任何付款。我自己刚刚成功完成了这项工作。

与目前接受的答案中给出的建议相反,没有需要像使用静态测试那样使用虚拟SKU android.test.purchased

OP引用了这一段:

  

在测试购买过程中,用户可以测试应用中的实际商品推销,购买和实现流程。在购买过程中,inapp项目显示为具有实际价格的普通项目。但是,Google Play会在购买对话框中心附加通知标记测试购买,以便于识别

到目前为止,这是正确的,并且与我能够实现的目标一致。

但OP的后续段落引用了:

  

使用测试人员帐户登录测试设备。通过购买一些项目来测试您的应用内结算应用,并修复您遇到的任何问题。如果您不希望实际向您的测试人员收费,请务必退还购买款项!

就我而言(特别是最后一句),这是不正确的。

你可以做的是按照第一段。也就是说,只要测试帐户作为测试人员添加到控制台,那么当尝试进行购买时,对话框(显示价格等)也应该在其中心有一个特殊的字符串(如第一段所述)陈述&#34;这是一个测试订单,不会向您收取费用#34;。

但是,为了实际完成这项工作,实际的APK还需要测试人员(或测试设备)使用的是上传到Alpha通道的那个。

所以,我采取的步骤如下:

  1. 为Alpha通道测试创建一个单独的Google群组。

  2. 将您的IAP测试用户gmail帐户添加到该组。

  3. 使用应用内购买代码上传APK(使用发布证书导出和签名)到Alpha通道。

  4. 等待一两个小时以使alpha版本生效。

  5. 与此同时,设置一个单独的测试设备,只需设置测试gmail帐户。

  6. 在以测试用户身份登录时,通过导航到测试设备上的选择加入URL来选择进行Alpha通道测试。

  7. 使用该测试人员帐户登录并从Play安装该应用程序。此时(或一两个小时后),您上传的最新alpha应该是现在安装的。

  8. 尝试购买。当对话框出现价格时,它应该有一个额外的&#34;这是一个测试订单,你不会被收取费用#34;横跨它的字符串。

  9. 事实上,为了完全准确,测试设备似乎不一定需要从Play安装alpha APK。根据我的测试, 重要的是,您确实将APK上传为alpha,并且您在测试设备上运行的APK具有相同的版本号。此外,测试用户需要选择加入alpha版本,并在控制台中添加为测试人员(如上所述)。我刚刚导出了我的APK的另一个调整版本,并使用adb install加载到我的测试设备中,我仍然可以尝试购买真正的SKU&#34; ...您将不会被收取费用#34;消息。

答案 2 :(得分:0)

您必须消费一旦购买。

consume.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Thread t = new Thread(new Runnable() {
                @Override
                public void run() {
                    String purchaseToken = "inapp:" + getPackageName() + ":android.test.purchased";
                    try {
                        Log.d("","Running");
                        int response = mService.consumePurchase(3, getPackageName(), purchaseToken);
                        if(response==0)
                        {
                            Log.d("Consumed","Consumed");
                        }else {
                            Log.d("","No"+response);
                        }
                    }catch (RemoteException e)
                    {
                        Log.d("Errorr",""+e);
                    }

                }
            });
            t.start();
        }
    });