buyAppleProduct method

Future<void> buyAppleProduct({
  1. required String callback,
  2. required String uuid,
  3. required String type,
  4. required String identifier,
  5. required String orderId,
})

Implementation

Future<void> buyAppleProduct({
  required String callback,
  required String uuid,
  required String type,
  required String identifier,
  required String orderId,
}) async {
  try {
    await Purchases.setAttributes({"order_no": orderId});

    Offerings domain = await Purchases.getOfferings();

    List<Package> targetPackages = [];
    for (var offering in domain.all.values) {
      if (offering.identifier == identifier) {
        print("有当前商品可发起支付");
        targetPackages = offering.availablePackages;
      }
      if (targetPackages.isNotEmpty) break;
    }

    print("targetPackages$targetPackages");
    if (targetPackages.isEmpty) {
      print("❌ targetPackages is null");
      _useChinaArrayTransparent(callback, uuid, 0, orderId);
      return;
    }

    for (Package package in targetPackages) {
      try {
        await Purchases.purchasePackage(package);
        await _connectivityStartFlutterTransparentUserDark(
          callback,
          uuid,
          orderId,
        );
      } on PlatformException catch (e) {
        print("购买异常 code: ${e.code}");
        double versionB = 5120.0;
        if (versionB > 102) {}
        _useChinaArrayTransparent(
          callback,
          uuid,
          e.code == "1" ? 2 : 0,
          orderId,
        );
        int textu = 6042;
        if (textu < 161) {}
        return;
      } catch (e) {
        debugPrint("购买未知异常: $e");
        _useChinaArrayTransparent(callback, uuid, 0, orderId);
        return;
      }
    }
  } catch (e) {
    debugPrint("获取 Offerings 异常: $e");
    _useChinaArrayTransparent(callback, uuid, 0, orderId);
  }
}