看起来苹果本月将进行任何类型的更新。...最近,我的应用被此消息拒绝了
验证服务器上的收据时,您的服务器需要能够 处理生产签名的应用程序,从苹果公司获得收据 测试环境。推荐的方法适合您的生产 服务器始终根据生产App Store验证收据 第一。如果验证失败并显示错误代码“已使用沙盒收据 在生产中”,您应该针对测试环境进行验证 代替。
我的应用之前已获得批准...这是我正在使用的代码
//Sandbox URL
//let url = URL(string: "https://sandbox.itunes.apple.com/verifyReceipt")!
let url = URL(string: "https://buy.itunes.apple.com/verifyReceipt")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.httpBody = bodyData
let task = URLSession.shared.dataTask(with: request) { (responseData, response, error) in
if let error = error {
completion(.failure(.other(error)))
} else if let responseData = responseData {
let json = try! JSONSerialization.jsonObject(with: responseData, options: []) as! Dictionary<String, Any>
//print(json)
let session = Session(receiptData: data, parsedReceipt: json)
self.sessions[session.id] = session
let result = (sessionId: session.id, currentSubscription: session.currentSubscription)
completion(.success(result))
}
}
task.resume()
}
答案 0 :(得分:0)
您不必使用服务器。您可以根据需要在客户端上对其进行验证。或者,您可以根据需要完全放弃任何验证(不推荐)。
您得到拒绝的可能性最大,因为这一次,他们使用了一个测试环境来验证IAP。
他们的documentation声明
如果您要进行收据验证,请确保验证收据 使用生产网址(https://buy.itunes.apple.com/verifyReceipt) 第一。即使在您的应用在 沙盒环境。 App Review将审核以下产品的正式版 您在沙箱中的应用。您的应用处理收据时,必须 能够检测到21007收货状态码并发送 收据到沙盒收据验证服务器 (https://sandbox.itunes.apple.com/verifyReceipt)。一旦您的应用 批准并在生产环境中运行,将 正确的做法是先将收据发送到生产服务器。
请注意,他们没有指定收据验证的完成位置。
您的代码缺少的是对沙箱的后备。因此,为什么他们这次拒绝您。