From 8b8f40dbd1ea98bfc4c8024000692105c13ca405 Mon Sep 17 00:00:00 2001 From: louisehsu Date: Mon, 27 Jul 2026 11:41:47 -0700 Subject: [PATCH] init --- .../in_app_purchase/in_app_purchase_storekit/CHANGELOG.md | 4 ++++ .../src/store_kit_2_wrappers/sk2_transaction_wrapper.dart | 2 ++ .../lib/src/types/app_store_purchase_details.dart | 5 +++++ .../in_app_purchase/in_app_purchase_storekit/pubspec.yaml | 2 +- .../test/in_app_purchase_storekit_2_platform_test.dart | 2 ++ 5 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/in_app_purchase/in_app_purchase_storekit/CHANGELOG.md b/packages/in_app_purchase/in_app_purchase_storekit/CHANGELOG.md index ac770191a940..41ac3f2da392 100644 --- a/packages/in_app_purchase/in_app_purchase_storekit/CHANGELOG.md +++ b/packages/in_app_purchase/in_app_purchase_storekit/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.4.12 + +* Exposes the underlying `SK2Transaction` object on `SK2PurchaseDetails` (via a new `sk2Transaction` property) to enable checking of native properties like `originalId` and `expirationDate`. + ## 0.4.11 * Fixes StoreKit 2 date format does not match in_app_purchase_platform_interface PurchaseDetails.transactionDate format. diff --git a/packages/in_app_purchase/in_app_purchase_storekit/lib/src/store_kit_2_wrappers/sk2_transaction_wrapper.dart b/packages/in_app_purchase/in_app_purchase_storekit/lib/src/store_kit_2_wrappers/sk2_transaction_wrapper.dart index 1632068e3b57..85857ddd9c00 100644 --- a/packages/in_app_purchase/in_app_purchase_storekit/lib/src/store_kit_2_wrappers/sk2_transaction_wrapper.dart +++ b/packages/in_app_purchase/in_app_purchase_storekit/lib/src/store_kit_2_wrappers/sk2_transaction_wrapper.dart @@ -146,6 +146,7 @@ extension on SK2TransactionMessage { SK2PurchaseStatusMessage.restored => PurchaseStatus.restored, }; + final SK2Transaction sk2Transaction = convertFromPigeon(); return SK2PurchaseDetails( productID: productId, // in SK2, as per Apple @@ -162,6 +163,7 @@ extension on SK2TransactionMessage { status: purchaseStatus, purchaseID: id > 0 ? id.toString() : null, appAccountToken: appAccountToken, + sk2Transaction: sk2Transaction, ); } diff --git a/packages/in_app_purchase/in_app_purchase_storekit/lib/src/types/app_store_purchase_details.dart b/packages/in_app_purchase/in_app_purchase_storekit/lib/src/types/app_store_purchase_details.dart index 8d6fdff9bda7..12d8f4c31415 100644 --- a/packages/in_app_purchase/in_app_purchase_storekit/lib/src/types/app_store_purchase_details.dart +++ b/packages/in_app_purchase/in_app_purchase_storekit/lib/src/types/app_store_purchase_details.dart @@ -5,6 +5,7 @@ import 'package:in_app_purchase_platform_interface/in_app_purchase_platform_interface.dart'; import '../../in_app_purchase_storekit.dart'; +import '../../store_kit_2_wrappers.dart'; import '../../store_kit_wrappers.dart'; import '../store_kit_wrappers/enum_converters.dart'; @@ -92,12 +93,16 @@ class SK2PurchaseDetails extends PurchaseDetails { required super.transactionDate, required super.status, this.appAccountToken, + this.sk2Transaction, }); /// A UUID that associates the transaction with a user on your own service. /// This is the value set when making the purchase via appAccountToken option. final String? appAccountToken; + /// The underlying StoreKit 2 transaction. + final SK2Transaction? sk2Transaction; + @override bool get pendingCompletePurchase => status == PurchaseStatus.purchased; } diff --git a/packages/in_app_purchase/in_app_purchase_storekit/pubspec.yaml b/packages/in_app_purchase/in_app_purchase_storekit/pubspec.yaml index 441ec10e2f05..4c930039f592 100644 --- a/packages/in_app_purchase/in_app_purchase_storekit/pubspec.yaml +++ b/packages/in_app_purchase/in_app_purchase_storekit/pubspec.yaml @@ -2,7 +2,7 @@ name: in_app_purchase_storekit description: An implementation for the iOS and macOS platforms of the Flutter `in_app_purchase` plugin. This uses the StoreKit Framework. repository: https://github.com/flutter/packages/tree/main/packages/in_app_purchase/in_app_purchase_storekit issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+in_app_purchase%22 -version: 0.4.11 +version: 0.4.12 environment: sdk: ^3.10.0 diff --git a/packages/in_app_purchase/in_app_purchase_storekit/test/in_app_purchase_storekit_2_platform_test.dart b/packages/in_app_purchase/in_app_purchase_storekit/test/in_app_purchase_storekit_2_platform_test.dart index 386c46505201..ef943512d4e4 100644 --- a/packages/in_app_purchase/in_app_purchase_storekit/test/in_app_purchase_storekit_2_platform_test.dart +++ b/packages/in_app_purchase/in_app_purchase_storekit/test/in_app_purchase_storekit_2_platform_test.dart @@ -184,6 +184,8 @@ void main() { expect(result.first.verificationData.serverVerificationData, 'receiptData'); expect(result.first.verificationData.localVerificationData, 'jsonRepresentation'); expect((result.first as SK2PurchaseDetails).appAccountToken, 'appAccountToken'); + expect((result.first as SK2PurchaseDetails).sk2Transaction, isNotNull); + expect((result.first as SK2PurchaseDetails).sk2Transaction!.originalId, '2'); }, );