Android 接入 Google 支付(Google Play Billing)

1. 准备工作

  • 开发者账号:你需要拥有一个 Google Play 开发者账号,并且完成相关的设置和验证。
  • 应用上架:将你的应用上传到 Google Play 控制台,确保应用处于草稿、内部测试、封闭测试、开放测试或正式发布状态。
  • 启用 Google Play 结算服务:在 Google Play 控制台的应用页面中,启用 “结算” 功能。

2. 配置商品信息

在 Google Play 控制台中,为你的应用配置内购商品(一次性购买)或订阅商品。你需要提供商品的名称、描述、价格等信息。

3. 集成 Google Play Billing 库

在你的 Android 项目中,添加 Google Play Billing 库的依赖。在项目的 build.gradle 文件中添加以下依赖:

dependencies {
    implementation 'com.android.billingclient:billing:5.1.0'
}

4. 实现代码逻辑

连接到 Google Play Billing 服务
import com.android.billingclient.api.BillingClient;
import com.android.billingclient.api.BillingClientStateListener;
import com.android.billingclient.api.BillingResult;

// 创建 BillingClient 实例
BillingClient billingClient = BillingClient.newBuilder(context)
        .setListener(purchaseUpdateListener)
        .enablePendingPurchases()
        .build();

// 连接到 Billing 服务
billingClient.startConnection(new BillingClientStateListener() {
    @Override
    public void onBillingSetupFinished(BillingResult billingResult) {
        if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
            // 连接成功,可以进行后续操作
        } else {
            // 处理连接失败的情况
        }
    }

    @Override
    public void onBillingServiceDisconnected() {
        // 处理服务断开连接的情况
    }
});
查询商品信息
import com.android.billingclient.api.SkuDetails;
import com.android.billingclient.api.SkuDetailsParams;
import com.android.billingclient.api.SkuDetailsResponseListener;

import java.util.ArrayList;
import java.util.List;

// 定义要查询的商品 ID 列表
List<String> skuList = new ArrayList<>();
skuList.add("your_sku_id_1");
skuList.add("your_sku_id_2");

// 创建 SkuDetailsParams 对象
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);

// 查询商品信息
billingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {
    @Override
    public void onSkuDetailsResponse(BillingResult billingResult, List<SkuDetails> skuDetailsList) {
        if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && skuDetailsList != null) {
            for (SkuDetails skuDetails : skuDetailsList) {
                // 处理查询到的商品信息
            }
        } else {
            // 处理查询失败的情况
        }
    }
});
发起购买流程
import com.android.billingclient.api.BillingFlowParams;
import com.android.billingclient.api.Purchase;
import com.android.billingclient.api.PurchasesUpdatedListener;

// 定义购买更新监听器
PurchasesUpdatedListener purchaseUpdateListener = new PurchasesUpdatedListener() {
    @Override
    public void onPurchasesUpdated(BillingResult billingResult, List<Purchase> purchases) {
        if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && purchases != null) {
            for (Purchase purchase : purchases) {
                // 处理购买成功的情况
            }
        } else if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.USER_CANCELED) {
            // 处理用户取消购买的情况
        } else {
            // 处理其他购买失败的情况
        }
    }
};

// 创建 BillingFlowParams 对象
BillingFlowParams flowParams = BillingFlowParams.newBuilder()
        .setSkuDetails(skuDetails)
        .build();

// 发起购买流程
billingClient.launchBillingFlow(activity, flowParams);

5. 处理购买结果和确认

当用户完成购买后,你需要处理购买结果并确认购买。这可以防止用户重复购买。

import com.android.billingclient.api.ConsumeParams;
import com.android.billingclient.api.ConsumeResponseListener;

// 确认购买
ConsumeParams consumeParams = ConsumeParams.newBuilder()
        .setPurchaseToken(purchase.getPurchaseToken())
        .build();

billingClient.consumeAsync(consumeParams, new ConsumeResponseListener() {
    @Override
    public void onConsumeResponse(BillingResult billingResult, String purchaseToken) {
        if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
            // 确认购买成功
        } else {
            // 处理确认失败的情况
        }
    }
});

6. 测试和发布

在发布应用之前,你需要进行充分的测试,确保支付流程正常工作。可以使用 Google Play 控制台的测试账号进行测试。测试通过后,就可以将应用正式发布到 Google Play 商店。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

遥不可及zzz

我会用心写更多自己的经验。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值