IAP Receipt validation function
func checkReceiptInfo(completion: @escaping (Bool) -> Void) -> Void
{
let receiptURL = Bundle.main.appStoreReceiptURL
let receipt = NSData(contentsOf: receiptURL!)
let requestContents: [String: Any] = [
"receipt-data": receipt!.base64EncodedString(options: [])
]
let appleServer = receiptURL?.lastPathComponent == "sandboxReceipt" ? "sandbox" : "buy"
let stringURL = "https://\(appleServer).itunes.apple.com/verifyReceipt"
print("Loading user receipt: \(stringURL)...")
Alamofire.request(stringURL, method: .post, parameters: requestContents, encoding: JSONEncoding.default)
.responseJSON { response in
if let value = response.result.value as? NSDictionary {
print(value)
let status = value.object(forKey: "status") as? Int ?? -1
print("status ==== >> \(status)")
if let receiptDic = value.object(forKey: "receipt") as? NSDictionary{
let inApp = receiptDic.object(forKey: "in_app") as? NSArray ?? NSArray()
print("in_app ---> \(inApp.count)")
if inApp.count > 0
{
completion(true)
}
else
{
completion(false)
}
return
}
completion(false)
} else {
print("Receiving receipt from App Store failed: \(response.result)")
completion(false)
}
}
}