0

这可能是一个相当模糊的问题。

在应用购买包中使用 Flutter。

在大多数流程中不是问题,但有时某些用户会遇到此问题。

到目前为止已经显示的问题如下:

  1. 付款已成功。
  2. 该产品已转换为正常消费。
  3. 由于未调用 PurchaseUpdated 回调,因此无法留下任何日志或添加产品购买操作。

该功能的源代码核心如下:

@override
void initState() {
  final purchaseUpdated = _inAppPurchase.purchaseStream;
  _subscription = purchaseUpdated.listen((purchaseDetailsList) {
    _listenToPurchaseUpdated(purchaseDetailsList);
  }, onDone: () {
    _subscription.cancel();
  }, onError: (error) {
    print(error.toString());
  });
  initStoreInfo();
  super.initState();
}

void _listenToPurchaseUpdated(List<PurchaseDetails> purchaseDetailsList) {
  purchaseDetailsList.forEach((PurchaseDetails purchaseDetails) async {
    print('purchase status : ${purchaseDetails.status.toString()}');
    setState(() {
      _showProgress = true;
    });
    if (purchaseDetails.status == PurchaseStatus.pending) {
      await api.inAppPayment(InAppPaymentRequest(purchaseDetails, 'Pending'));
    } else {
      if (purchaseDetails.status == PurchaseStatus.error) {
        try {
          await api.iapError(purchaseDetails.error);
        } catch (e) {
          print(e.toString());
        }
        setState(() {
          _showProgress = false;
        });
        print('purchase error : ${purchaseDetails.error}');
        DialogService.showSimpleDialog(context, content: Text('Purchase failed.'));
      } else if (purchaseDetails.status == PurchaseStatus.purchased) {
        var resultMessage = 'Purchase succeed.';
        try {
          await api.inAppPayment(InAppPaymentRequest(purchaseDetails, 'Purchased'));
        } catch (e) {
          resultMessage = 'Token validation failed.';
        }
        setState(() {
          _showProgress = false;
        });
        widget.callback();
        DialogService.showSimpleDialog(context, content: Text(resultMessage));
      }
      if (purchaseDetails.pendingCompletePurchase) {
        await _inAppPurchase.completePurchase(purchaseDetails);
      }
    }
  });
}

由于开发设备和环境无法重现该问题,我不知道如何调试和解决它。如果您发现代码中的任何漏洞或好主意,请告诉我。

谢谢你。

4

0 回答 0