You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android内购故障:购买后未加9枚金币且无法重复购买

内购功能问题排查与修复

一、购买后金币未增加的问题

错误点分析

  • SharedPreferences存储逻辑错误:在onProductPurchased方法中,你已经计算出累加后的金币数coins = coins + 9,但最终存储的是硬编码的9,而非累加后的变量值,导致每次购买后金币都会被重置为9,无法实现“增加9枚”的效果。
  • TextView文本设置错误:tvCoin.setText(coins)直接传入int类型参数,系统会将其解析为资源ID而非数字文本,导致显示异常。

修正后的onProductPurchased方法

@Override
public void onProductPurchased(String productId, TransactionDetails details) {
    int coins = sharedpreferences.getInt("coins", 0);
    coins += 9; // 计算累加后的金币数
    tvCoin.setText(String.valueOf(coins)); // 转换为字符串后设置文本
    sharedpreferences.edit().putInt("coins", coins).apply(); // 存储正确的金币数值
    
    startActivity(new Intent(BuyActivity.this, ProcessingActivity.class));
    finish();
    Log.d("MainActivity", "onProductPurchased: 金币已成功增加");
}

二、无法重复购买的问题

错误点分析

你当前使用bp.subscribe(this, premium)调用订阅功能,订阅属于周期性付费服务,本身不支持重复购买(仅支持升级/降级)。而你需要的是一次性购买的金币商品,应该使用bp.purchase()方法,同时要确保Google Play后台将该商品设置为消耗型商品。

修正后的购买触发代码

在onBillingInitialized的两个点击事件中,替换订阅方法为购买方法:

tvBuy.setOnClickListener(v1 -> {
    // 替换subscribe为purchase,调用一次性商品购买接口
    bp.purchase(BuyActivity.this, premium);
});

// 弹窗内的购买按钮同步修改
dialogView.findViewById(R.id.buttonOk).setOnClickListener(v1 -> {
    alertDialog.dismiss();
    bp.purchase(BuyActivity.this, premium);
});

补充消耗逻辑(关键)

消耗型商品购买后必须调用消耗接口,才能允许用户再次购买,在onProductPurchased中补充消耗逻辑:

@Override
public void onProductPurchased(String productId, TransactionDetails details) {
    int coins = sharedpreferences.getInt("coins", 0);
    coins += 9;
    tvCoin.setText(String.valueOf(coins));
    sharedpreferences.edit().putInt("coins", coins).apply();
    
    // 消耗已购买的商品,开启下一次购买权限
    if (bp.isPurchased(productId)) {
        bp.consumePurchase(productId);
    }
    
    startActivity(new Intent(BuyActivity.this, ProcessingActivity.class));
    finish();
    Log.d("MainActivity", "onProductPurchased: 金币已增加,商品已完成消耗");
}

内容的提问来源于stack exchange,提问作者shvy banlin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 00:24:58