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 商店。