目录

iOS App 内订阅支付:StoreKit 开发完整流程

iOS App 内订阅支付:StoreKit 开发完整流程

StoreKit 是苹果官方提供的内购与订阅支付框架。以下是用 StoreKit 实现 App 内订阅支付的完整开发流程,适合 Swift 项目。


1. 后台准备

  • 在 App Store Connect 创建 App 条目。
  • 新建订阅项目,配置产品ID、价格、描述等,提交审核。
  • 等待订阅项目审核通过。

2. 项目配置

  • 在 Xcode 项目中,确保已开启 In-App Purchase 能力(Target → Signing & Capabilities → +Capability → In-App Purchase)。
  • 确保 Bundle ID 与 App Store Connect 保持一致。

3. 集成 StoreKit

3.1 导入 StoreKit

import StoreKit

3.2 获取产品信息

let productIDs: Set<String> = ["com.demoapp.subscription.monthly"]
let request = SKProductsRequest(productIdentifiers: productIDs)
request.delegate = self
request.start()

实现代理方法:

extension YourViewController: SKProductsRequestDelegate {
    func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
        let products = response.products
        // 展示订阅产品信息
    }
}

3.3 发起购买

func buy(product: SKProduct) {
    let payment = SKPayment(product: product)
    SKPaymentQueue.default().add(payment)
}

3.4 监听交易队列

class YourViewController: UIViewController, SKPaymentTransactionObserver {
    override func viewDidLoad() {
        super.viewDidLoad()
        SKPaymentQueue.default().add(self)
    }

    func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
        for transaction in transactions {
            switch transaction.transactionState {
            case .purchased, .restored:
                // 解锁订阅功能
                SKPaymentQueue.default().finishTransaction(transaction)
            case .failed:
                // 处理失败
                SKPaymentQueue.default().finishTransaction(transaction)
            default:
                break
            }
        }
    }
}

3.5 恢复购买

SKPaymentQueue.default().restoreCompletedTransactions()

4. 收据校验(推荐)

  • 获取本地收据,上传到自己服务器,转发到苹果服务器校验,防止破解和欺诈。

5. 测试流程

  • 在 App Store Connect 添加沙盒测试账号。
  • 用真机安装 App,登录沙盒账号,测试订阅购买、恢复等流程。

6. 上线与维护

  • 通过苹果审核后,用户即可正式订阅和支付。
  • 定期监控订阅状态,处理续订、过期等情况。

小结

  1. 后台配置订阅项目
  2. Xcode 开启 In-App Purchase
  3. 用 StoreKit 获取产品、发起购买、监听交易
  4. 收据校验提升安全
  5. 沙盒账号真机测试
  6. 上线维护

类比:就像超市收银,先上新商品(后台配置),再扫码收款(StoreKit 购买),最后核对账单(收据校验),保证流程安全合规。

如需详细代码或遇到具体问题,欢迎继续提问!