cURL УЖЕ возвращает JSON. Не надо оборачивать его в другой JSON. А вот передавать заголовок, информирующий браузер о том, что это именно JSON, надо:
...
$result = trim(curl_exec($ch));
curl_close($ch);
header('Content-Type: application/json');
echo $result;
jQuery сам умеет парсить JSON - перед передачей его в событие success. Явный вызов parseJSON не нужен:
$.ajax({
type: 'POST',
url: '/admin/freekassa.php',
data: {type: 'balance'},
dataType: 'json',
success: function (data) {
if (data.type === 'success') {
for (let row of data.balance) {
if (row.currency === 'RUB') {
$('#balfree2').val(row.value);
return;
}
}
} else {
// Здесь должна быть обработка ошибки FreeKassa
}
}
});
А он выводит полностью строку. Пытался сделать через array но не совсем понял как сделать и он просто в инпут выводил: "Array"
В документации фрикассы вообще ничего не понятно)
php обработчик js