This commit is contained in:
2025-12-16 13:10:50 +08:00
parent 444877fb73
commit fd0ddfd45a
17 changed files with 4751 additions and 3 deletions

View File

@@ -0,0 +1,80 @@
//
// TransactionHistory.swift
// StoreKit2Manager
//
// Created by xiaopin on 2025/12/6.
//
import Foundation
import StoreKit
///
public struct TransactionHistory {
/// ID
public let productId: String
///
public let product: Product?
///
public let transaction: StoreKit.Transaction
///
public let purchaseDate: Date
///
public let expirationDate: Date?
/// 退
public let isRefunded: Bool
///
public let isRevoked: Bool
///
public let ownershipType: StoreKit.Transaction.OwnershipType
/// ID
public let transactionId: UInt64
public init(
productId: String,
product: Product?,
transaction: StoreKit.Transaction,
purchaseDate: Date,
expirationDate: Date? = nil,
isRefunded: Bool = false,
isRevoked: Bool = false,
ownershipType: StoreKit.Transaction.OwnershipType,
transactionId: UInt64
) {
self.productId = productId
self.product = product
self.transaction = transaction
self.purchaseDate = purchaseDate
self.expirationDate = expirationDate
self.isRefunded = isRefunded
self.isRevoked = isRevoked
self.ownershipType = ownershipType
self.transactionId = transactionId
}
}
// MARK: - Transaction
extension TransactionHistory {
/// Transaction
public static func from(_ transaction: StoreKit.Transaction, product: Product? = nil) -> TransactionHistory {
return TransactionHistory(
productId: transaction.productID,
product: product,
transaction: transaction,
purchaseDate: transaction.purchaseDate,
expirationDate: transaction.expirationDate,
isRefunded: transaction.revocationDate != nil,
isRevoked: transaction.revocationDate != nil,
ownershipType: transaction.ownershipType,
transactionId: transaction.id
)
}
}