测试地址
swift
https://sandbox.itunes.apple.com/verifyReceipt
正式地址:
swift
https://buy.itunes.apple.com/verifyReceipt
示例
swift
import Foundation
class InAppPurchaseManager {
static let shared = InAppPurchaseManager()
private let verifyURL = URL(string: "https://buy.itunes.apple.com/verifyReceipt")! // 苹果正式环境验证地址
func verifyReceipt(receiptData: Data, completion: @escaping (Bool) -> Void) {
let receiptString = receiptData.base64EncodedString(options: [])
let parameters = ["receipt-data": receiptString]
guard let jsonData = try? JSONSerialization.data(withJSONObject: parameters, options: []) else {
completion(false)
return
}
var request = URLRequest(url: verifyURL)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = jsonData
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data,
let httpResponse = response as? HTTPURLResponse,
error == nil,
httpResponse.statusCode == 200 else {
completion(false)
return
}
do {
// 解析服务器返回的数据
let jsonResponse = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
// 检查验证结果
if let status = jsonResponse?["status"] as? Int, status == 0 {
// 验证成功
completion(true)
} else {
// 验证失败
completion(false)
}
} catch {
// JSON 解析失败
completion(false)
}
}
task.resume()
}
}