アプリ内課金ローカル認証(デバッグ用)
サーバー側で検証に使うレシートの内容をアプリ内で確認したい場合のコード
func receiptValidation() { let receiptUrl = Bundle.main.appStoreReceiptURL let receiptData = try! Data(contentsOf: receiptUrl!) let requestContents = [ "receipt-data": receiptData.base64EncodedString(options: .endLineWithCarriageReturn), "password": "共有シークレット" ] let requestData = try! JSONSerialization.data(withJSONObject: requestContents, options: .init(rawValue: 0)) var request = URLRequest(url: URL(string: "https://sandbox.itunes.apple.com/verifyReceipt")!) request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField:"content-type") request.timeoutInterval = 5.0 request.httpMethod = "POST" request.httpBody = requestData let session = URLSession.shared let task = session.dataTask(with: request, completionHandler: {(data, response, error) -> Void in guard let jsonData = data else { return } do { let json:Dictionary<String, AnyObject> = try JSONSerialization.jsonObject(with: jsonData, options: .init(rawValue: 0)) as! Dictionary<String, AnyObject> guard let receipts:Dictionary<String, AnyObject> = json["receipt"] as? Dictionary<String, AnyObject> else { return } print(receipts) } catch let error { print("SKPaymentManager : Failure to validate receipt: \(error)") } }) task.resume() }