Google Play结算服务开发

在这里插入图片描述

官方文档:https://developer.android.com/google/play/billing/integrate?hl=zh-cn

Google Play 结算系统是一项可以在Android应用中销售数字产品和内容的服务。
Google Play结算系统销售的数字内容内容分两种:

  • 一次性商品是指用户可以通过一次性的非定期付费(通过用户的付款方式收取)购买的内容。例如额外的游戏关卡、高级战利品箱和媒体文件等等。Google Play管理中心将一次性商品称为“受管理的商品”,而Google Play结算库将其称为“INAPP”商品。一次性商品可以是消耗型商品,也可以是非消耗型商品:

    • 消耗型商品是指用户为了获得应用内内容(如游戏代币)而消耗的商品。当用户消耗该商品时,应用会分配关联的内容,此时购买的商品将不能继续使用。消耗型商品可以购买多次
    • 非消耗型商品是指购买一次就能永久使用的商品。购买后,此类商品会与用户的 Google 帐号永久关联。例如付费升级和关卡包等等
  • 订阅:订阅是一种让用户定期使用内容的商品。订阅期结束后,订阅会自动续订,并且会通过用户的付款方式向用户另行收取费用。订阅会无限期续订,直到被取消。例如在线杂志浏览和音乐在线播放服务等等都属于订阅范畴。Google Play结算库将订阅称为“SUBS”。

购买令牌和订单ID

Google Play使用购买令牌和订单ID跟踪商品和交易。

  • 购买令牌是一个字符串,表示买家对Google Play上的商品的权利。它表明Google用户有权使用由SKU表示的特定商品。可以将购买令牌与Google Play Developer API一起使用。
  • 订单ID是一个字符串,表示Google Play上的财务交易。此字符串会包含在通过电子邮件发送给买家的收据中。可以在销售和付款报告中使用订单ID来管理退款。

每当发生财务交易时,系统都会创建订单ID。只有当用户完成购买流程时,系统才会生成购买令牌。

  • 对于一次性商品,每次购买交易都会创建一个新的购买令牌。大多数购买交易还会生成一个新的订单ID。但是如果不向用户收取任何费用时就不会生成新的订单ID
  • 对于订阅,首次购买交易会创建一个购买令牌和一个订单ID。对于每个连续的结算周期,购买令牌将保持不变,但系统会发放一个新的订单ID。升级、降级、替换和重新注册都会创建新的购买令牌和订单ID

关于订阅,请注意以下几点:

  • 订阅升级、降级和其他订阅购买流程会生成购买令牌,这些令牌必须替换之前的购买令牌。必须使出现在Google Play Developer API的linkedPurchaseToken字段中的购买令牌无效。
  • 订阅续订的订单ID包含一个额外的整数,它表示具体是第几次续订。例如,初始订阅的订单ID可能是GPA.1234-5678-9012-34567,后续订单ID是GPA.1234-5678-9012-34567…0(第一次续订)、GPA.1234-5678-9012-34567…1(第二次续订),依此类推。

注意:如果用户在购买应用内商品时没有应付款项(如在订阅的免费试订期内),则会生成金额为0的订单ID。例如,当用户取消订阅时,订阅将保持有效状态,直到结算周期结束。如果用户决定重新注册,则其帐号中会有一些余额。在这种情况下,系统会创建一个新的购买令牌,创建一个金额为0的订单ID,并在余额扣完后续订。

依赖

dependencies {
   
    def billing_version = "6.0.0"

	//Java版本
    implementation "com.android.billingclient:billing:$billing_version"
    //Kotlin版本,包含了Kotlin扩展程序和协程支持
    implementation "com.android.billingclient:billing-ktx:$billing_version"
}

开发流程

初始化BillingClient

BillingClient是Google Play结算库与应用的其余部分之间进行通信的主接口。PurchasesUpdatedListener接口可以接收应用中所有购买交易的更新。

private PurchasesUpdatedListener purchasesUpdatedListener = new PurchasesUpdatedListener() {
   
    @Override
    public void onPurchasesUpdated(BillingResult billingResult, List<Purchase> purchases) {
   
        // To be implemented in a later section.
    }
};

private BillingClient billingClient = BillingClient.newBuilder(context)
    .setListener(purchasesUpdatedListener)
    .enablePendingPurchases()
    .build();
与Google Play建立连接</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值