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 似乎效果很好
我正在使用包 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 似乎效果很好