zoukankan      html  css  js  c++  java
  • 创建 In-app Billing 商品

    创建可供购买的 In-app Billing 商品

    在你发布 In-app Billing 应用前,你需要在 Google Play 开发者控制台 定义可供购买的数字商品列表。

    在 Google Play 设置你的 In-app 商品


    在开发者控制台,你可以定义内购商品的商品信息并把这些商品和你应用关联起来。

    在商品列表里添加新的内购商品:

    1. 为你的 In-app Billing 程序创建一个签名的 APK 文件。 想知道如何创建签名的 APK 文件,参考 Building Your Application for Release。确保你给程序签名使用的是最终(不是 debug key)证书和私有key。
    2. 在开发者控制台打开你先前创建的应用入口。注1
    3. 点击 APK 标签然后点击上传你的 APK 文件,最后把你已经签名的 APK 文件上传到开发者控制台。现在不要选择发布这个应用!
    4. 找到你上传的应用列表页,选择你要创建内购商品的那个应用,然后点击 In-app Products。
    5. 找到相关选项点击添加一个新商品,然后把商品需要指定的信息填完,其中有物品的唯一商品ID,描述,价格以及可销售的国家。记下商品ID,你一会儿可能需要这个去查询你应用内商品的购买详细信息。

      重要:  In-app Billing Version 3 服务现在只支持受管理内购商品,所以在开发者控制台当你向商品列表添加一个新商品时,要确保设置这个商品的类型为“受管理的”。

    6. 如果你已经完成了上面的操作,最后还要激活商品,激活后你的应用才可以购买这些商品。

      提醒: It may take up to 2-3 hours after uploading the APK for Google Play to recognize your updated APK version. 在你 APK 上传到后,Google Play可能需要2-3小时来识别你更新的 APK 版本。如果你在Google Play识别完你上传的APK之前就做测试的话,你的应用会收到一个带有 “In-app Billing在当前版本应用不可用” 错误信息的 “购买取消” 回应。

    查询可以购买的商品


    你可以通过代码方式向Google Play查询关联你应用的商品详细信息(像商品价格,名称,描述以及类型)。 这个对你很有帮助,比如你想展示哪些用户可以购买自己未拥有的商品时就可以用到。

    注意: 在使用查询时你需要使用查询商品的明确商品ID。你可以从开发者控制台通过打开你应用的 In-app Products 标签手动找到这个商品ID。这些商品ID位于 Name/ID 标签栏下。

     通过 IabHelper 实例调用 queryInventoryAsync(boolean, List, QueryInventoryFinishedListener) 方法来获取商品详细信息

    • 第一个输入参数的意思是是否应该获取商品详情(应该设为true)。
    • 这个 List 参数由一个或多个你想查询商品的商品ID组成。
    • 最后,这个 QueryInventoryFinishedListener 参数指定了一个监听,当查询操作完成以及处理查询回应时这个监听收到通知。
    如果你使用例子提供的便捷类的话,这些类将会处理 In-app Billing 请求的后台线程管理,这样你就可以在你程序的主线程安全地执行查询操作。

    下面的代码展示了如何获取商品ID为 SKU_APPLE 和 SKU_BANANA 的两个商品的详细信息,这两个商品ID是先前在开发者控制台定义的。

    List additionalSkuList = new List();
    additionalSkuList.add(SKU_APPLE);
    additionalSkuList.add(SKU_BANANA);
    mHelper.queryInventoryAsync(true, additionalSkuList,
       mQueryFinishedListener);

    如果这个查询成功执行,查询结果会存到一个 Inventory 对象中,这个对象会回传给先前传入的监听。

    下面的代码展示了如何从查询结果中获取商品价格。

    IabHelper.QueryInventoryFinishedListener 
       mQueryFinishedListener = new IabHelper.QueryInventoryFinishedListener() {
       public void onQueryInventoryFinished(IabResult result, Inventory inventory)   
       {
          if (result.isFailure()) {
             // handle error
             return;
           }
    
           String applePrice =
              inventory.getSkuDetails(SKU_APPLE).getPrice();
           String bananaPrice =
              inventory.getSkuDetails(SKU_BANANA).getPrice();
    
           // update the UI 
       }
    }
  • 相关阅读:
    Java I/O基础
    Python基础篇(九)
    Python基础篇(八)
    thinkphp5中Indirect modification of overloaded element of XXX has no effect的解决办法
    关于json_encode转义斜杠的问题
    [thinkexceptionErrorException] glob() has been disabled for security reasons
    CentOS7 安装svn
    -bash: /usr/bin/yum: /usr/bin/python: bad interpreter: No such file or directory
    php在线编辑本地文件方法共享
    python一些不错的东西
  • 原文地址:https://www.cnblogs.com/lovexb/p/4672562.html
Copyright © 2011-2022 走看看