'Missing required parameter: payment_id'], JSON_UNESCAPED_UNICODE); exit; } $payment_id = $criterias['payment_id']; //+++++++++++++++++++++++++++++++++++++++++++++++++++++ // STEP 1: Fetch transaction //+++++++++++++++++++++++++++++++++++++++++++++++++++++ $sql = 'SELECT * FROM transactions WHERE txn_id = ?'; $stmt = $pdo->prepare($sql); $stmt->execute([$payment_id]); $transaction = $stmt->fetch(PDO::FETCH_ASSOC); if (!$transaction) { http_response_code(404); echo json_encode(['error' => 'Payment not found'], JSON_UNESCAPED_UNICODE); exit; } //+++++++++++++++++++++++++++++++++++++++++++++++++++++ // STEP 2: Fetch transaction item //+++++++++++++++++++++++++++++++++++++++++++++++++++++ $sql = 'SELECT * FROM transactions_items WHERE txn_id = ? LIMIT 1'; $stmt = $pdo->prepare($sql); $stmt->execute([$payment_id]); $item = $stmt->fetch(PDO::FETCH_ASSOC); if (!$item) { http_response_code(404); echo json_encode(['error' => 'Payment item not found'], JSON_UNESCAPED_UNICODE); exit; } //+++++++++++++++++++++++++++++++++++++++++++++++++++++ // STEP 3: Parse item_options JSON //+++++++++++++++++++++++++++++++++++++++++++++++++++++ $item_options = []; if (!empty($item['item_options'])) { $item_options = json_decode($item['item_options'], true); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++ // STEP 4: Return payment details //+++++++++++++++++++++++++++++++++++++++++++++++++++++ $messages = json_encode([ 'payment_id' => $transaction['txn_id'], 'payment_status' => $transaction['payment_status'], 'payment_amount' => $transaction['payment_amount'], 'currency' => 'EUR', // Default currency 'serial_number' => $item_options['serial_number'] ?? null, 'equipment_id' => $item_options['equipment_id'] ?? null, 'hw_version' => $item_options['hw_version'] ?? null, 'version_id' => $item['item_id'], 'payer_email' => $transaction['payer_email'], 'customer_name' => trim(($transaction['first_name'] ?? '') . ' ' . ($transaction['last_name'] ?? '')), 'created' => $transaction['created'] ], JSON_UNESCAPED_UNICODE); echo $messages; ?>