in_app_purchase purchaseID가 동일하게 유지되지 않습니다.

Nov 20 2020

in_app_purchase 패키지를 사용하고 있습니다. 나는 PurchaseDetails.purchaseID그들이 원래 거래를 확인하는 대신 transactionIdentifier를 사용하기 때문에 과거 구매에 대한 변경을 발견했습니다 . 트랜잭션이 복원되면 ID가 변경됩니다.

Apple 인앱 구매 트랜잭션 _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를 호출 할 때마다 구매 ID가 발견 된 구매와 다릅니다.

답변

MikeOttink Nov 29 2020 at 21:41

원래 트랜잭션 ID를 사용하면 잘 작동하는 것 같습니다.