【问题标题】:Flutter in_app_purchase acknowledge issueFlutter in_app_purchase 确认问题
【发布时间】:2022-11-04 12:23:22
【问题描述】:

我们检测到您的应用未确认所有应用内购买或订阅。从 Billing Library 2.0 开始,所有购买必须在 3 天内确认,否则将自动退款。

Google Play message image

我使用 in_app_purchase 3.0.6

  late StreamSubscription<dynamic> _subscription;
  List<ProductDetails> _products = [];
  InAppPurchase inAppPurchase = InAppPurchase.instance;
  @override
  void initState() {
    final Stream purchaseUpdated = inAppPurchase.purchaseStream;
    _subscription = purchaseUpdated.listen((purchaseDetailsList) {
      _listenToPurchaseUpdated(purchaseDetailsList);
    }, onDone: () {
      _subscription.cancel();
    }, onError: (error) {});
    super.initState();
    initStoreInfo();
    super.initState();
  }

  void _listenToPurchaseUpdated(List<PurchaseDetails> purchaseDetailsList) {
    purchaseDetailsList.forEach((PurchaseDetails purchaseDetails) async {
      if (purchaseDetails.status == PurchaseStatus.pending) {
      } else {
        if (purchaseDetails.status == PurchaseStatus.error) {
          ScaffoldMessenger.of(context).showSnackBar(
            SnackBar(
              behavior: SnackBarBehavior.floating,
              backgroundColor: Colors.red,
              content: const Text('Error purchasing subscription'),
              action: SnackBarAction(
                label: 'Close',
                textColor: Colors.white,
                onPressed: () {},
              ),
            ),
          );
        } else if (purchaseDetails.status == PurchaseStatus.purchased ||
            purchaseDetails.status == PurchaseStatus.restored) {
          setState(() {
            isPro = true;
          });
          final prefs = await SharedPreferences.getInstance();
          await prefs.setString(
            date,
            (DateTime.now().add(
              const Duration(days: 7),
            )).toIso8601String(),
          );
        }
        if (purchaseDetails.pendingCompletePurchase) {
           await InAppPurchase.instance.completePurchase(purchaseDetails);
        }
      }
    });
  }

  initStoreInfo() async {
    final bool available = await InAppPurchase.instance.isAvailable();
    if (!available) {}
    ProductDetailsResponse productDetailResponse = await inAppPurchase.queryProductDetails(
      _productIds,
    );
    if (productDetailResponse.error == null) {
      setState(() {
        _products = productDetailResponse.productDetails;
      });
    }
  }

【问题讨论】:

    标签: flutter google-play in-app-purchase google-play-billing flutter-in-app-purchase


    【解决方案1】:

    有没有人解决它?

    【讨论】:

      猜你喜欢
      • 2021-07-07
      • 2022-01-05
      • 2019-12-14
      • 1970-01-01
      • 2022-12-14
      • 2021-04-04
      • 2020-01-02
      • 2019-12-12
      • 2023-03-21
      相关资源
      最近更新 更多