Flutter-IAP错误代码6,显示消息“找不到您要购买的商品”

时间:2019-12-17 10:07:22

标签: android flutter in-app-purchase android-inapp-purchase

我正在通过我的应用购买应用。我正在使用Flutter-In-App-Purchase Plugin来实现IAP功能。以下是我实现IAP的代码。

class InApp extends StatefulWidget {
  @override
  _InAppState createState() => _InAppState();
}

class _InAppState extends State<InApp> {
  StreamSubscription _purchaseUpdatedSubscription;
  StreamSubscription _purchaseErrorSubscription;
  StreamSubscription _conectionSubscription;
  final List<String> _productLists = Platform.isAndroid
      ? ["Buy Book"]
      : ["Buy Book"];

  List<IAPItem> _items = [];
  List<PurchasedItem> _purchases = [];

  @override
  void initState() {
    super.initState();
    initPlatformState();
  }

  @override
  void dispose() {
    if (_conectionSubscription != null) {
      _conectionSubscription.cancel();
      _conectionSubscription = null;
    }
  }

  // Platform messages are asynchronous, so we initialize in an async method.
  Future<void> initPlatformState() async {
    // prepare
    var result = await FlutterInappPurchase.instance.initConnection;
    print('result: $result');

    if (!mounted) return;


    _conectionSubscription =
        FlutterInappPurchase.connectionUpdated.listen((connected) {
      print('connected: $connected');
    });

    _purchaseUpdatedSubscription =
        FlutterInappPurchase.purchaseUpdated.listen((productItem) {
      print('purchase-updated: $productItem');
    });

    _purchaseErrorSubscription =
        FlutterInappPurchase.purchaseError.listen((purchaseError) {
      print('purchase-error: $purchaseError');
    });
  }

  void _requestPurchase(IAPItem item) {
    FlutterInappPurchase.instance.requestPurchase(item.productId);
  }

  Future _getProduct() async {
    List<IAPItem> items = await FlutterInappPurchase.instance.getProducts(_productLists);
    for (var item in items) {
      print('${item.toString()}');
      this._items.add(item);
    }

    setState(() {
      this._items = items;
      this._purchases = [];
    });

    _getPurchases();
  }

  Future _getPurchases() async {
    List<PurchasedItem> items = await FlutterInappPurchase.instance.getAvailablePurchases();
    for (var item in items) {
      print('${item.toString()}');
      this._purchases.add(item);
    }

    setState(() {
      this._items = [];
      this._purchases = items;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: RaisedButton(
          onPressed: () {
            _requestPurchase(_items[0]);
          },
          child: Text("Buy Item"),
        ),
      ),
    );
  }
}

当我单击BuyItem并调用requestPurchase()方法时。我收到以下错误日志,并收到类似“找不到您要购买的商品”

这样的错误
  

W / ActivityThread(8794):handleWindowVisibility:令牌没有活动   android.os.BinderProxy@572f129 W / ProxyBillingActivity(8794):活动   以resultCode 0和结算的responseCode:6结尾   W / BillingHelper(8794):找不到采购清单,试图找到   单一数据。 W / BillingHelper(8794):接收到错误的购买数据。   W / BillingHelper(8794):也找不到单个购买数据。   E / DoobooUtils(8794):错误代码:6 I / Flutter(8794):   购买错误:responseCode:6,debugMessage :、代码:E_UNKNOWN,   消息:发生未知或意外错误。请再试一遍   以后。

请提出解决方案。

谢谢。

1 个答案:

答案 0 :(得分:1)

我认为您的应用内商品将处于非活动状态。

默认情况下,当您在Play控制台中添加被管理产品时,该产品将处于非活动状态。因此,只需在您的Google Play控制台帐户中访问您的应用内产品并确认它处于活动状态即可。

此外,请确保您正在开发/测试的应用的VersionCode和VersionName至少应与Google Play开发者控制台/ Play商店中的版本相同。

对于扑朔迷离,您可以在pubspec.yaml文件中检查版本。