验证收据iOS

时间:2019-02-28 02:27:15

标签: ios swift

看起来苹果本月将进行任何类型的更新。...最近,我的应用被此消息拒绝了

  

验证服务器上的收据时,您的服务器需要能够   处理生产签名的应用程序,从苹果公司获得收据   测试环境。推荐的方法适合您的生产   服务器始终根据生产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()
}

1 个答案:

答案 0 :(得分:0)

您不必使用服务器。您可以根据需要在客户端上对其进行验证。或者,您可以根据需要完全放弃任何验证(不推荐)。

您得到拒绝的可能性最大,因为这一次,他们使用了一个测试环境来验证IAP。

他们的documentation声明

  

如果您要进行收据验证,请确保验证收据   使用生产网址(https://buy.itunes.apple.com/verifyReceipt)   第一。即使在您的应用在   沙盒环境。 App Review将审核以下产品的正式版   您在沙箱中的应用。您的应用处理收据时,必须   能够检测到21007收货状态码并发送   收据到沙盒收据验证服务器   (https://sandbox.itunes.apple.com/verifyReceipt)。一旦您的应用   批准并在生产环境中运行,将   正确的做法是先将收据发送到生产服务器。

请注意,他们没有指定收据验证的完成位置。

您的代码缺少的是对沙箱的后备。因此,为什么他们这次拒绝您。