in_app_purchase purchaseID 不一样

in_app_purchase purchaseID does not stay the same

我正在使用包 in_app_purchase。我注意到过去购买的 PurchaseDetails.purchaseID 发生了变化,因为它们采用了 transactionIdentifier 而不是检查原始交易。当交易恢复时,id 会发生变化。

Apple In-app purchase transaction_id of one purchase changes sometimes

还有其他人遇到同样的问题吗?

这是他们从交易中实例化产品详细信息的代码

  PurchaseDetails.fromSKTransaction(
      SKPaymentTransactionWrapper transaction, String base64EncodedReceipt)
      : this.purchaseID = transaction.transactionIdentifier,
        this.productID = transaction.payment.productIdentifier,
        this.verificationData = PurchaseVerificationData(
            localVerificationData: base64EncodedReceipt,
            serverVerificationData: base64EncodedReceipt,
            source: IAPSource.AppStore),
        this.transactionDate = transaction.transactionTimeStamp != null
            ? (transaction.transactionTimeStamp * 1000).toInt().toString()
            : null,
        this.skPaymentTransaction = transaction,
        this.billingClientPurchase = null,
        _platform = _kPlatformIOS {
    status = SKTransactionStatusConverter()
        .toPurchaseStatus(transaction.transactionState);
    if (status == PurchaseStatus.error) {
      error = IAPError(
        source: IAPSource.AppStore,
        code: kPurchaseErrorCode,
        message: transaction.error.domain,
        details: transaction.error.userInfo,
      );
    }
  }

在哪里

 this.purchaseID = transaction.transactionIdentifier,

应该检查是否已恢复,如果是,则从原始交易中获取标识符。

我用的是最新版本in_app_purchase: ^0.3.4+16 flutter 1.20.3 stable channel

每次当我重新启动我的应用程序并调用 _connection.queryPastPurchases 时,购买 ID 与找到的购买不同

使用原始交易 ID 似乎效果很好