Skip to content

Commit c77ab99

Browse files
authored
[in_app_purchase] Add expiration date to Transaction (#8030)
Closes flutter/flutter#158226 Exposes the Transaction's expiration date, so this information can be used on the dart side.
1 parent 1d14251 commit c77ab99

File tree

7 files changed

+35
-14
lines changed

7 files changed

+35
-14
lines changed

packages/in_app_purchase/in_app_purchase_storekit/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.3.19
2+
3+
* Adds StoreKit2 Transaction expiration date.
4+
15
## 0.3.18+5
26

37
* Updates README to remove contributor-focused documentation.

packages/in_app_purchase/in_app_purchase_storekit/darwin/Classes/StoreKit2/StoreKit2Translators.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -188,14 +188,15 @@ extension Product.PurchaseResult {
188188
extension Transaction {
189189
func convertToPigeon(receipt: String?) -> SK2TransactionMessage {
190190

191-
let dateFromatter: DateFormatter = DateFormatter()
192-
dateFromatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
191+
let dateFormatter = DateFormatter()
192+
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
193193

194194
return SK2TransactionMessage(
195195
id: Int64(id),
196196
originalId: Int64(originalID),
197197
productId: productID,
198-
purchaseDate: dateFromatter.string(from: purchaseDate),
198+
purchaseDate: dateFormatter.string(from: purchaseDate),
199+
expirationDate: expirationDate.map { dateFormatter.string(from: $0) },
199200
purchasedQuantity: Int64(purchasedQuantity),
200201
appAccountToken: appAccountToken?.uuidString,
201202
restoring: receipt != nil,

packages/in_app_purchase/in_app_purchase_storekit/darwin/Classes/StoreKit2/sk2_pigeon.g.swift

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,7 @@ struct SK2TransactionMessage {
312312
var originalId: Int64
313313
var productId: String
314314
var purchaseDate: String
315+
var expirationDate: String? = nil
315316
var purchasedQuantity: Int64
316317
var appAccountToken: String? = nil
317318
var restoring: Bool
@@ -324,17 +325,19 @@ struct SK2TransactionMessage {
324325
let originalId = pigeonVar_list[1] as! Int64
325326
let productId = pigeonVar_list[2] as! String
326327
let purchaseDate = pigeonVar_list[3] as! String
327-
let purchasedQuantity = pigeonVar_list[4] as! Int64
328-
let appAccountToken: String? = nilOrValue(pigeonVar_list[5])
329-
let restoring = pigeonVar_list[6] as! Bool
330-
let receiptData: String? = nilOrValue(pigeonVar_list[7])
331-
let error: SK2ErrorMessage? = nilOrValue(pigeonVar_list[8])
328+
let expirationDate: String? = nilOrValue(pigeonVar_list[4])
329+
let purchasedQuantity = pigeonVar_list[5] as! Int64
330+
let appAccountToken: String? = nilOrValue(pigeonVar_list[6])
331+
let restoring = pigeonVar_list[7] as! Bool
332+
let receiptData: String? = nilOrValue(pigeonVar_list[8])
333+
let error: SK2ErrorMessage? = nilOrValue(pigeonVar_list[9])
332334

333335
return SK2TransactionMessage(
334336
id: id,
335337
originalId: originalId,
336338
productId: productId,
337339
purchaseDate: purchaseDate,
340+
expirationDate: expirationDate,
338341
purchasedQuantity: purchasedQuantity,
339342
appAccountToken: appAccountToken,
340343
restoring: restoring,
@@ -348,6 +351,7 @@ struct SK2TransactionMessage {
348351
originalId,
349352
productId,
350353
purchaseDate,
354+
expirationDate,
351355
purchasedQuantity,
352356
appAccountToken,
353357
restoring,

packages/in_app_purchase/in_app_purchase_storekit/lib/src/sk2_pigeon.g.dart

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,7 @@ class SK2TransactionMessage {
300300
required this.originalId,
301301
required this.productId,
302302
required this.purchaseDate,
303+
this.expirationDate,
303304
this.purchasedQuantity = 1,
304305
this.appAccountToken,
305306
this.restoring = false,
@@ -315,6 +316,8 @@ class SK2TransactionMessage {
315316

316317
String purchaseDate;
317318

319+
String? expirationDate;
320+
318321
int purchasedQuantity;
319322

320323
String? appAccountToken;
@@ -331,6 +334,7 @@ class SK2TransactionMessage {
331334
originalId,
332335
productId,
333336
purchaseDate,
337+
expirationDate,
334338
purchasedQuantity,
335339
appAccountToken,
336340
restoring,
@@ -346,11 +350,12 @@ class SK2TransactionMessage {
346350
originalId: result[1]! as int,
347351
productId: result[2]! as String,
348352
purchaseDate: result[3]! as String,
349-
purchasedQuantity: result[4]! as int,
350-
appAccountToken: result[5] as String?,
351-
restoring: result[6]! as bool,
352-
receiptData: result[7] as String?,
353-
error: result[8] as SK2ErrorMessage?,
353+
expirationDate: result[4] as String?,
354+
purchasedQuantity: result[5]! as int,
355+
appAccountToken: result[6] as String?,
356+
restoring: result[7]! as bool,
357+
receiptData: result[8] as String?,
358+
error: result[9] as SK2ErrorMessage?,
354359
);
355360
}
356361
}

packages/in_app_purchase/in_app_purchase_storekit/lib/src/store_kit_2_wrappers/sk2_transaction_wrapper.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class SK2Transaction {
2222
required this.originalId,
2323
required this.productId,
2424
required this.purchaseDate,
25+
this.expirationDate,
2526
this.quantity = 1,
2627
required this.appAccountToken,
2728
this.subscriptionGroupID,
@@ -43,6 +44,9 @@ class SK2Transaction {
4344
/// restored product, or for a subscription purchase or renewal after a lapse.
4445
final String purchaseDate;
4546

47+
/// The date the subscription expires or renews.
48+
final String? expirationDate;
49+
4650
/// The number of consumable products purchased.
4751
final int quantity;
4852

@@ -100,6 +104,7 @@ extension on SK2TransactionMessage {
100104
originalId: originalId.toString(),
101105
productId: productId,
102106
purchaseDate: purchaseDate,
107+
expirationDate: expirationDate,
103108
appAccountToken: appAccountToken);
104109
}
105110

packages/in_app_purchase/in_app_purchase_storekit/pigeons/sk2_pigeon.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ class SK2TransactionMessage {
141141
required this.originalId,
142142
required this.productId,
143143
required this.purchaseDate,
144+
this.expirationDate,
144145
this.purchasedQuantity = 1,
145146
this.appAccountToken,
146147
this.error,
@@ -150,6 +151,7 @@ class SK2TransactionMessage {
150151
final int originalId;
151152
final String productId;
152153
final String purchaseDate;
154+
final String? expirationDate;
153155
final int purchasedQuantity;
154156
final String? appAccountToken;
155157
final bool restoring;

packages/in_app_purchase/in_app_purchase_storekit/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: in_app_purchase_storekit
22
description: An implementation for the iOS and macOS platforms of the Flutter `in_app_purchase` plugin. This uses the StoreKit Framework.
33
repository: https://github.com/flutter/packages/tree/main/packages/in_app_purchase/in_app_purchase_storekit
44
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+in_app_purchase%22
5-
version: 0.3.18+5
5+
version: 0.3.19
66

77
environment:
88
sdk: ^3.3.0

0 commit comments

Comments
 (0)