in_app_purchase ID zakupu nie pozostaje takie samo

Nov 20 2020

Korzystam z pakietu in_app_purchase. Zauważyłem, że w PurchaseDetails.purchaseIDprzypadku poprzednich zakupów zmienia się, ponieważ przyjmują identyfikator transactionIdentifier zamiast sprawdzać pierwotną transakcję. Po przywróceniu transakcji identyfikator się zmienia.

Czasami zmienia się identyfikator transakcji zakupu Apple w aplikacji dla jednego zakupu

Czy ktoś ma ten sam problem?

To jest ich kod do tworzenia instancji szczegółów produktu z transakcji

  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,
      );
    }
  }

Gdzie

 this.purchaseID = transaction.transactionIdentifier,

Powinien sprawdzić, czy został przywrócony, a jeśli tak, weź identyfikator z pierwotnej transakcji.

Jestem na najnowszej wersji in_app_purchase: ^0.3.4+16i trzepoczę1.20.3 stable channel

Za każdym razem, gdy ponownie uruchamiam aplikację i dzwonię do _connection.queryPastPurchases, identyfikator zakupu różni się od znalezionego zakupu

Odpowiedzi

MikeOttink Nov 29 2020 at 21:41

Wydaje się, że używanie oryginalnego identyfikatora transakcji działa świetnie