返回

APP STORE API 革新在即,开发者必须知道的重大变化!

iOS

verifyReceipt API 弃用:开发者指南

苹果弃用 verifyReceipt API 的原因

苹果最近宣布弃用 verifyReceipt API,这引发了开发者的关注。弃用的主要原因包括:

  • 安全漏洞: verifyReceipt API 存在潜在的安全漏洞,攻击者可能利用这些漏洞伪造收据并绕过应用内购买流程。
  • 低效: verifyReceipt API 效率低下,在验证大量收据时可能会导致延迟。
  • 兼容性问题: verifyReceipt API 与苹果最新操作系统不兼容,给开发人员在更新应用时带来困难。

verifyReceipt API 的兼容性

verifyReceipt API 仍然可以在 iOS 15 及更早的系统中使用。然而,在这些系统中使用 verifyReceipt API 时,可能会遇到以下兼容性问题:

  • 与新收据格式不兼容: 苹果在 iOS 16 中引入了新的收据格式,verifyReceipt API 无法验证这些新格式的收据。
  • 与新应用内购买流程不兼容: 苹果在 iOS 16 中引入了新的应用内购买流程,verifyReceipt API 无法验证这些新流程生成的收据。

verifyReceipt API 的迁移建议

为了避免兼容性问题,苹果建议开发者尽快将应用迁移到新的验证机制。新的验证机制包括:

  • App Store Server API: App Store Server API 是一个新的 API,可以用来验证收据并获取应用内购买信息。
  • StoreKit 2: StoreKit 2 是一个新的框架,可以用来管理应用内购买。

receiptData 旧收据伪造问题

在 iOS 15 及更早的系统中,存在一个旧收据伪造问题。攻击者可以利用此问题伪造收据并绕过应用内购买流程。苹果已经修复了此问题,但是在 iOS 15 及更早的系统中仍然存在安全隐患。

苹果新推出的 App Store Server Lib

为了帮助开发者迁移到新的验证机制,苹果推出了 App Store Server Lib。App Store Server Lib 是一个开源库,可以帮助开发者快速构建与 App Store Server API 交互的代码。

代码示例:

使用 App Store Server API 验证收据:

import StoreKit

let receiptData = ... // Replace this with the actual receipt data

let appStoreServerURL = URL(string: "https://appstoreconnect.apple.com/verifyReceipt")!

var request = URLRequest(url: appStoreServerURL)
request.httpMethod = "POST"
request.httpBody = try? JSONSerialization.data(withJSONObject: ["receipt-data": receiptData], options: [])

let task = URLSession.shared.dataTask(with: request) { data, _, error in
  if let data = data, error == nil {
    do {
      let response = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
      // Process the response here
    } catch {
      // Handle error
    }
  } else {
    // Handle error
  }
}

task.resume()

常见问题解答

  • 为什么苹果要弃用 verifyReceipt API?
    • 由于安全漏洞、低效和兼容性问题。
  • 我应该使用哪个新的验证机制?
    • App Store Server API 或 StoreKit 2。
  • 我应该立即迁移到新的验证机制吗?
    • 是的,尽快迁移以避免兼容性问题和安全隐患。
  • App Store Server Lib 有什么作用?
    • 它是一个开源库,可以帮助开发者快速构建与 App Store Server API 交互的代码。
  • 我可以在哪里找到更多信息?

结论

verifyReceipt API 的弃用将对开发者产生重大影响。开发者需要尽快将应用迁移到新的验证机制,以避免兼容性问题和安全隐患。苹果提供了 App Store Server API、StoreKit 2 和 App Store Server Lib 等资源,以帮助开发者完成迁移过程。