verifyReceipt method

Future<Map<String, dynamic>> verifyReceipt(
  1. String receiptData, {
  2. bool isSandbox = true,
})

Implementation

Future<Map<String, dynamic>> verifyReceipt(String receiptData, {bool isSandbox = true}) async {
  final url = isSandbox
      ? 'https://sandbox.itunes.apple.com/verifyReceipt'
      : 'https://buy.itunes.apple.com/verifyReceipt';

  final payload = jsonEncode({
    "receipt-data": receiptData,
    "password": sharedSecret, // App-Specific Shared Secret from App Store Connect
    "exclude-old-transactions": true
  });

  final response = await http.post(
    Uri.parse(url),
    body: payload,
    headers: {"Content-Type": "application/json"},
  );

  if (response.statusCode == 200) {
    return jsonDecode(response.body);
  } else {
    throw Exception("Failed to verify receipt: ${response.body}");
  }
}