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. 上线与维护
- 通过苹果审核后,用户即可正式订阅和支付。
- 定期监控订阅状态,处理续订、过期等情况。
小结
- 后台配置订阅项目
- Xcode 开启 In-App Purchase
- 用 StoreKit 获取产品、发起购买、监听交易
- 收据校验提升安全
- 沙盒账号真机测试
- 上线维护
类比:就像超市收银,先上新商品(后台配置),再扫码收款(StoreKit 购买),最后核对账单(收据校验),保证流程安全合规。
如需详细代码或遇到具体问题,欢迎继续提问!