in_app_purchasepurchaseIDは同じままではありません

Nov 20 2020

パッケージin_app_purchaseを使用しています。PurchaseDetails.purchaseID元のトランザクションをチェックする代わりにtransactionIdentifierを使用するため、過去の購入のforが変更されていることに気付きました。トランザクションが復元されると、IDが変更されます。

1回の購入のAppleアプリ内購入transaction_idが変更されることがあります

他の誰かが同じ問題を抱えていますか?

これは、トランザクションから製品の詳細をインスタンス化するためのコードです。

  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、フラッターします1.20.3 stable channel

アプリを再起動して_connection.queryPastPurchasesを呼び出すたびに、purchaseIDは見つかった購入とは異なります

回答

MikeOttink Nov 29 2020 at 21:41

元のトランザクションIDを使用するとうまくいくようです