1
This commit is contained in:
@@ -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
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user