android-checkout, 在 App ( 版本 3 + ) Billing,Android的库

分享于 

9分钟阅读

GitHub

  繁體
Library for Android In-App Billing (Version 3)
  • 源代码名称:android-checkout
  • 源代码网址:http://www.github.com/serso/android-checkout
  • android-checkout源代码文档
  • android-checkout源代码下载
  • Git URL:
    git://www.github.com/serso/android-checkout.git
    Git Clone代码到本地:
    git clone http://www.github.com/serso/android-checkout
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/serso/android-checkout
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    ( 在应用程序库中使用 Android )

    描述

    Checkout是在 app Billing API中的一个实现。 它的主要目标是使应用产品的集成尽可能简单和简单: 开发人员不应该花很多时间在应用程序API中实现无聊,但是应该关注更重要的事情- 他们的应用。 考虑到这一点,图书馆被设计为快速。灵活和安全。

    当前版本: 1.2.1

    为什么?

    在Android上处理账单时,可以解决开发人员面临的常见问题,比如:

    • 如何在 Activity 销毁时取消所有记帐请求?
    • 如何在后台查询购买信息? 请参见查询以获取可以购买的商品。
    • 如何验证购买? 请参见安全性和设计工具。
    • 如何使用 continuationToken 或者SKU详细信息( 一个请求受 20项限制) 加载所有采购?
    • 如何使用最少的样板代码添加帐单?

    可以在任何依赖注入框架中使用 Checkout。 它对不同上下文中可用的功能有明确的区别: 只有在 Activity 中才可以完成购买,而SKU信息可以在 Service 或者 Application 中加载。 此外,它具有良好的测试覆盖率,并在 Travis CI上持续构建: Build Status

    启动

    设置

    • build.gradle 中的gradle/Android Studio:
    compile 'org.solovyev.android:checkout:1.2.1'

    注意:如果你得到以下警告,请注意

    依赖项'。jsr305.google。code:'冲突。应用程序( a.b.c ) 和测试应用程序( x.y.z )的解析版本不同。

    你应该更改 com.android.support.test.espresso:espresso-core

    androidTestCompile('com.android.support.test.espresso:espresso-core:x.y.z', {
     // use version of jsr305 provided by Checkout exclude group: 'com.google.code.findbugs', module: 'jsr305'})

    有关详细信息,请参阅 Android StudioGradle文档。

    • pom.xml 中的Maven:
    <dependency>
     <groupId>org.solovyev.android</groupId>
     <artifactId>checkout</artifactId>
     <version>1.2.1</version>
     <type>aar</type>
    </dependency>
    • 从github下载源代码并将它们复制到项目中,或者将它们作为项目依赖项导入
    • 下载工件。

    权限

    在应用程序帐单中需要在应用程序中设置 com.android.vending.BILLING 权限。 这里权限将自动添加到你的应用程序 AndroidManifest.xml的Gradle中。 你可以通过将以下行添加到 AndroidManifest.xml 来显式声明这里权限:

    <uses-permissionandroid:name="com.android.vending.BILLING"/>

    教程

    示例应用程序的教程在中可用。 看一下你是否喜欢在文档中使用step-by-step指南。

    示例

    假设有一个应用程序包含一个应用程序,其中包含"sku_01"id。 然后,Application 类可能如下所示:

    publicclassMyApplicationextendsApplication {
     privatestaticMyApplication sInstance;
     privatefinalBilling mBilling =newBilling(this, newBilling.DefaultConfiguration() {
     @OverridepublicStringgetPublicKey() {
     return"Your public key, don't forget about encryption";
     }
     });
     publicMyApplication() {
     sInstance =this;
     }
     publicstaticMyApplicationget() {
     return sInstance;
     }
     publicBillinggetBilling() {
     return mBilling;
     }
    }

    像这样的Activity 类:

    publicclassMyActivityextendsActivityimplementsView.OnClickListener {
     privateclassPurchaseListenerextendsEmptyRequestListener<Purchase> {
     @OverridepublicvoidonSuccess(Purchasepurchase) {
     // here you can process the loaded purchase }
     @OverridepublicvoidonError(intresponse, Exceptione) {
     // handle errors here }
     }
     privateclassInventoryCallbackimplementsInventory.Callback {
     @OverridepublicvoidonLoaded(Inventory.Productsproducts) {
     // your code here }
     }
     privatefinalActivityCheckout mCheckout =Checkout.forActivity(this, MyApplication.get().getBilling());
     privateInventory mInventory;
     @OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
     super.onCreate(savedInstanceState);
     mCheckout.start();
     mCheckout.createPurchaseFlow(newPurchaseListener());
     mInventory = mCheckout.makeInventory();
     mInventory.load(Inventory.Request.create()
    . loadAllPurchases()
    . loadSkus(ProductTypes.IN_APP, "sku_01"), newInventoryCallback());
     }
     @OverrideprotectedvoidonDestroy() {
     mCheckout.stop();
     super.onDestroy();
     }
     @OverrideprotectedvoidonActivityResult(intrequestCode, intresultCode, Intentdata) {
     super.onActivityResult(requestCode, resultCode, data);
     mCheckout.onActivityResult(requestCode, resultCode, data);
     }
     @OverridepublicvoidonClick(Viewv) {
     mCheckout.whenReady(newCheckout.EmptyListener() {
     @OverridepublicvoidonReady(BillingRequestsrequests) {
     requests.purchase(ProductTypes.IN_APP, "sku_01", null, mCheckout.getPurchaseFlow());
     }
     });
     }
    }

    高级用法

    示例

    一个示例应用程序可以用于 Google Play ( 源代码 )。 还有一个关于中的教程。

    从源代码生成

    Gradle建立了收费 项目结构和构建过程是Android库的标准。 在构建之前必须设置环境变量 ANDROID_HOME,并指向Android安装文件夹( f )。 /opt/android/sdk). 请参考 Gradle用户指南,了解有关构建的更多信息。

    类概述

    Checkout 包含三个主要类: 帐单结帐和库存。

    计费是计费API的实现的核心类别。 它负责:

    为了避免多个连接到计费服务,应用中只应该使用一个收费的实例。 虽然这个类可以直接使用,但它很容易使用 Checkout

    Checkout是图书馆的中间层。 在特定的上下文中,它使用计费,在 ApplicationActivity 或者 Service 中,检查是否支持账单并执行请求。 ActivityCheckout 是一个能够购买项的子类。

    库存装载有关产品,配件和采购的信息。 它的生命周期被绑定到支付的生命周期中。

    购买验证

    默认情况下,收费使用简单的购买验证算法( 请参见 DefaultPurchaseVerifier )。 就像文档,在远程服务器上验证购买是更好的方法。 Checkout 允许你提供自己的PurchaseVerifierBilling.Configuration#getPurchaseVerifier 可以在后台线程上执行 purchase BasePurchaseVerifier purchase作为购买验证者的基类。

    混淆器

    库规则混淆器自动被Gradle添加到应用程序项目中。 你可以通过将 proguard-rules.txt的内容复制到你的proguard的配置来明确声明它们。

    许可证

    版权所有 2016 serso aka se.solovyev

    在Apache许可以证下许可以证版本 2.0 ("许可以证") ;你可以能不使用这里文件,除了符合许可以证。 你可以获得许可证的副本在*

    http://www.apache.org/licenses/LICENSE-2.0

    在规定的法律或者书面许可下,在许可条款下分发的软件在不保证任何种类的担保或者条件的前提下分发,或者明示或者隐含。 查看许可协议下特定语言的许可权限和限制的许可证。


    相关文章