[特殊字符] 集成苹果支付,只需两步!(内购 IAP 实战指南)

引言

你以为苹果支付很复杂?其实搞懂这两步,虚拟商品内购就能轻松搞定。本文手把手教你用 Swift 实现苹果 IAP 内购功能,从发起购买到验单闭环,代码可直接抄用,适合 Swift 新手和老鸟复习。

 

✅ 第一步:发起购买请求(用商品 ID 唤起支付面板)

苹果的 IAP(In-App Purchase)机制专门用于虚拟商品,比如:

  1. 会员订阅
  2. 游戏道具
  3. 解锁完整版 App

首先你需要在 App Store Connect 后台配置商品 ID,例如 com.example.pro。

然后在代码中通过 StoreKit 框架实现以下逻辑 👇

 

🧱 1. 添加支付观察者

SKPaymentQueue.default().add(self) // self 遵循 SKPaymentTransactionObserver

这一步确保你能收到支付完成的回调。

 

🔍 2. 请求商品信息并发起支付

let productID = "com.example.pro"
let request = SKProductsRequest(productIdentifiers: [productID])
request.delegate = self
request.start()

然后在回调中触发支付:

func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
    if let product = response.products.first {
        let payment = SKPayment(product: product)
        SKPaymentQueue.default().add(payment)
    }
}

此时用户会看到熟悉的 App Store 支付面板,确认后开始扣款。

 

✅ 第二步:支付完成后验单(防白嫖、防越狱)

苹果支付完成后,系统不会告诉你“这个人真的买了”,你得自己验证。

这就是所谓的“验单”:拿到凭证(receipt),向苹果服务器查询这个订单是否真实有效。

 

📦 1. 监听支付回调

func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
    for transaction in transactions {
        switch transaction.transactionState {
        case .purchased:
            // 付款成功,开始验单
            verifyReceipt(transaction: transaction)
        case .failed:
            // 用户取消或失败,直接结束
            SKPaymentQueue.default().finishTransaction(transaction)
        default:
            break
        }
    }
}

 

🔐 2. 客户端获取 receipt

func verifyReceipt(transaction: SKPaymentTransaction) {
    guard let appStoreReceiptURL = Bundle.main.appStoreReceiptURL,
          let receiptData = try? Data(contentsOf: appStoreReceiptURL) else {
        return
    }

    let base64Receipt = receiptData.base64EncodedString()
    
    // 👉 把 base64Receipt 传给你们服务端
}

 

🧾 3. 服务端请求苹果接口验证(示意)

POST https://buy.itunes.apple.com/verifyReceipt
Content-Type: application/json

{
  "receipt-data": "base64Receipt",
  "password": "你的共享密钥(用于订阅)"
}

苹果会返回一份完整的交易记录,包含:

  1. 商品 ID
  2. 购买时间
  3. 是否有效
  4. 是否为沙盒等信息

你们服务端可根据这些内容判断该用户是否已经付费,是否重复消费。

 

🎯 总结一下

苹果 IAP 的完整流程其实就是:

前端发起购买 → 拿到 receipt → 后端验单 → 返回结果给 App

只要把这套逻辑跑通,内购会员、订阅、道具解锁等功能就能稳定上线。

 

🧩 附加建议

  1. 正式上线前记得切换到正式环境的验证地址。
  2. 苹果会缓存 receipt,遇到无法触发回调时可用 restoreCompletedTransactions() 恢复。
  3. 沙盒测试账号每次付款最多持续 5 分钟,注意测试节奏。
  4. 如果你用 RevenueCat 这类 SDK,可以省掉一堆细节,但建议先理解原理。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值