PurchaseManager

@available(iOS 15.0, *)
public class PurchaseManager : @unchecked Sendable

内购支付管理器

consumable: 消耗型,可重复购买,同时只能有一笔未完成的交易,完成后不可退款 nonConsumable: 非消耗型,未退款时不可重复购买,只能购买一次,完成后也可退款

  • 单例模式

    Declaration

    Swift

    public static let shared: PurchaseManager
  • Undocumented

    Declaration

    Swift

    public init()
  • 是否允许交易

    Declaration

    Swift

    public var canMakePayments: Bool { get }
  • products(_:) Asynchronous

    获取产品列表

    Declaration

    Swift

    public func products(_ identifiers: [String]) async throws -> [Product]
  • 支付指定产品ID,成功时自动验证(验证失败抛异常),可指定自动完成交易(默认false)

    Declaration

    Swift

    @MainActor
    public func purchase(
        _ identifier: String,
        finishAutomatically: Bool = false,
        quantity: Int? = nil,
        appAccountToken: String? = nil,
        options: Set<Product.PurchaseOption> = []
    ) async throws -> Product.PurchaseResult
  • 支付指定产品,成功时自动验证(验证失败抛异常),可指定自动完成交易(默认false)

    Declaration

    Swift

    @MainActor
    public func purchase(
        _ product: Product,
        finishAutomatically: Bool = false,
        quantity: Int? = nil,
        appAccountToken: String? = nil,
        options: Set<Product.PurchaseOption> = []
    ) async throws -> Product.PurchaseResult
  • finish(_:) Asynchronous

    完成指定产品ID最近一次交易,消耗型商品完成后不能退款且不再返回

    Declaration

    Swift

    @discardableResult
    public func finish(_ productIdentifier: String) async -> Transaction?
  • finish(_:) Asynchronous

    完成指定交易,消耗型商品完成后不能退款且不再返回

    Declaration

    Swift

    public func finish(_ transaction: Transaction) async
  • finish(_:) Asynchronous

    完成指定交易ID,消耗型商品完成后不能退款且不再返回

    Declaration

    Swift

    @discardableResult
    public func finish(_ transactionId: UInt64) async -> Bool
  • 获取所有已支付未退款的交易列表,按支付时间倒序排列(进行中,同一商品有未完成的交易不能再次购买)

    Declaration

    Swift

    public func purchasedTransactions() async -> [Transaction]
  • 根据商品ID获取最近一次已验证的交易,默认未包含已退款订单

    Declaration

    Swift

    public func latestTransaction(
        _ productIdentifier: String,
        includingRefunds: Bool = false
    ) async -> Transaction?
  • 获取已验证的支付结果,默认未包含已退款订单

    Declaration

    Swift

    public func verifiedTransaction(
        _ verificationResult: VerificationResult<Transaction>?,
        includingRefunds: Bool = false
    ) -> Transaction?
  • restorePurchases() Asynchronous

    同步并恢复已购买的未退款交易,按支付时间倒序排列

    Declaration

    Swift

    @discardableResult
    public func restorePurchases() async throws -> [Transaction]
  • 开始监听交易更新,主线程回调更新句柄(已验证订单,含退款)

    Declaration

    Swift

    public func startListening(_ listener: (@MainActor @Sendable (Transaction) -> Void)?)
  • 停止监听交易更新

    Declaration

    Swift

    public func stopListening()
  • refund(_:) Asynchronous

    指定产品ID退款最近一次交易

    Declaration

    Swift

    @discardableResult
    public func refund(_ productIdentifier: String) async throws -> Transaction.RefundRequestStatus
  • refund(_:) Asynchronous

    指定交易退款

    Declaration

    Swift

    @discardableResult
    public func refund(_ transaction: Transaction) async throws -> Transaction.RefundRequestStatus
  • refund(_:) Asynchronous

    指定交易ID退款

    Declaration

    Swift

    @discardableResult
    @MainActor
    public func refund(_ transactionId: UInt64) async throws -> Transaction.RefundRequestStatus
  • manageSubscriptions() Asynchronous

    管理订阅

    Declaration

    Swift

    @MainActor
    public func manageSubscriptions() async throws
  • countryCode() Asynchronous

    获取支付国家码

    Declaration

    Swift

    public func countryCode() async -> String?