需求:最新的项目需要对接谷歌的订阅功能,很久没对谷歌支付了,最开始还是绕了点弯路,在此进行一点小小的总结
1.项目配置
-
创建一个应用
登录到 Google Play Console,创建或选择一个现有的应用。 -
设置结算功能
在应用设置中,启用 Google Play 结算。 -
添加订阅商品
- 导航到 产品 > 订阅。
- 添加订阅的商品 ID(例如:
premium_monthly
),并设置价格、结算周期等详细信息。
-
测试用户
- 在 设置 > 许可证测试 中添加测试账户的 Gmail 地址。
- 确保这些测试账户未绑定真实的支付方式。
- 记住支付相关的要生成链接给测试账户的手机进行许可(在这儿踩了个坑)。具体的创建流程可以看这个博客,我主要总结下代码:
- Google Play 内购/订阅实现_谷歌内购-CSDN博客
1.1.依赖
权限声明
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.INTERNET" />
依赖库:app的build.gradle下
implementation 'com.android.billingclient:billing:6.0.1'
2.代码实现
2.1 在BaseApp里进行初始化的调用,BaseApp记得在manifest进行引用。
VIPUtils.initializeBillingClient(this)
2.2 具体代码
object VIPUtils {
lateinit var billingClient: BillingClient
//初始化购买信息
fun initializeBillingClient(context: Context) {
billingClient = BillingClient.newBuilder(context).setListener { billingResult, purchases -> //购买回调监听
LogUtils.e("onPurchasesUpdated", billingResult.responseCode.toString() + ". purchases. " + purchases?.size.toString())
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK && purchases != null) { //表示购买请求成功
handlePurchases(purchases)
}
}.enablePendingPurchases() // 必须调用,支持挂起的购买
.build()
billingClient.startConnection(object : BillingClientStateListener {
override fun onBillingSetupFinished(billingResult: BillingResult) {
LogUtils.e("onBillingSetupFinished", billingResult.responseCode.toString())
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) { // BillingClient 已准备好
queryProducts() // 查询商品信息
}
}
over