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

Flutter in_app_purchase 3.2.0:消耗品重复购买提示已拥有问题

解决in_app_purchase调试模式下消耗品重复购买限制问题

核心原因

Google Play测试环境对消耗品的购买有测试配额限制,默认情况下测试账号短时间内对同一消耗品的购买次数有限制,这就是你遇到前9次正常、后续提示"You already own this item"的原因,退款后配额会部分恢复但不会重置到初始状态。

调试环境下的解决办法

1. 强制手动消耗未完成订单

即便设置了autoConsume: true,测试环境的网络延迟或异常可能导致部分订单未被正确消耗。在初始化或发起购买前,主动查询并手动消耗未完成订单:

Future<void> _consumePendingPurchases() async {
  final QueryPurchaseDetailsResponse response = await _inAppPurchase.queryPastPurchases();
  for (PurchaseDetails purchase in response.pastPurchases) {
    if (purchase.status == PurchaseStatus.purchased && !purchase.isConsumed) {
      await _inAppPurchase.consumePurchase(purchase);
    }
  }
}

调用buyConsumable前先执行该方法,确保所有已购消耗品都被消耗。

2. 配置Google Play测试响应

在Google Play Console中给目标消耗品设置"立即批准并消耗"的测试响应:

  • 进入Google Play Console > 你的应用 > 变现 > 应用内商品
  • 选中目标消耗品,滚动到"测试响应"区域
  • 选择"立即批准并消耗"并保存
    设置后测试账号购买该商品时会自动完成消耗,不会触发"已拥有"提示,实现无限重复购买。

3. 更换测试账号或等待配额重置

每个测试账号的购买配额独立,可更换新测试账号继续测试;或等待24小时,Google Play测试环境的配额会自动重置。

4. 检查消耗逻辑完整性

确认_kAutoConsume变量为true,同时在purchaseUpdatedStream监听中,额外处理PurchaseStatus.purchased状态的订单,确保消耗逻辑覆盖所有场景:

StreamSubscription<List<PurchaseDetails>>? _subscription;

void _listenToPurchaseUpdated() {
  _subscription = _inAppPurchase.purchaseUpdatedStream.listen((List<PurchaseDetails> purchaseDetailsList) {
    _handlePurchaseUpdates(purchaseDetailsList);
  }, onDone: () {
    _subscription?.cancel();
  }, onError: (Object error) {
    // 处理错误
  });
}

void _handlePurchaseUpdates(List<PurchaseDetails> purchaseDetailsList) {
  for (var purchase in purchaseDetailsList) {
    if (purchase.status == PurchaseStatus.purchased) {
      if (!purchase.isConsumed) {
        _inAppPurchase.consumePurchase(purchase);
      }
      // 执行购买成功后的业务逻辑
    }
  }
}

注意事项

  • 以上方法仅适用于调试/测试环境,正式发布无需修改逻辑,Google Play正式环境对消耗品重复购买无此类配额限制。
  • 不要在正式版本中添加测试环境专属逻辑,避免影响正式用户体验。

内容的提问来源于stack exchange,提问作者Sarkheel Mughal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:24:52