StoreKit 2 获取所有支付成功的订单数据

50 阅读1分钟

import StoreKit

import UIKit

class PurchaseManager {

var transactions: [Transaction] = []

var completionHandler: ((Result<[Transaction], Error>) -> Void)?

func loadTransactions(completion: @escaping (Result<[Transaction], Error>) -> Void) {

self.completionHandler = completion

        Task {

do {

var tempTransactions: [Transaction] = []

// 获取 1 年前的日期

let oneYearAgo = Date().addingTimeInterval(-365 * 24 * 60 * 60)

// 遍历 Transaction.all 返回的异步序列

for try await verificationResult in Transaction.all {

// 验证结果,成功后添加到临时数组

if case let .verified(transaction) = verificationResult {

// 检查是否为订阅类型,并且购买日期在 1 年内,且处于订阅中

// if let expirationDate = transaction.expirationDate,

// transaction.productType == .autoRenewable,

// transaction.purchaseDate >= oneYearAgo,

// expirationDate > Date() {

// tempTransactions.append(transaction)

// SimpleLog("交易记录最近一年再用\(transaction.productID)")

// }

tempTransactions.append(transaction)

}

}

transactions = tempTransactions

completionHandler?(.success(transactions))

for transaction in transactions {

print("Product ID: \(transaction.productID), Purchase Date: \(transaction.purchaseDate.toStringFromDate()),类型\(transaction.productType) ")

if let expirationDate = transaction.expirationDate{

print(" 到期时间\(expirationDate.toStringFromDate())")

}

}

} catch {

completionHandler?(.failure(error))

print("Error loading transactions: \(error)")

}

}

}

}