Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Запрос с FreeKassa который будет выводить баланс мерчанта

Алексей Чизов Ученик (177), закрыт 3 недели назад
Мне нужен запрос с FreeKassa который будет выводить баланс мерчанта. Я написал обработчик и дальше не понимаю что делать. в $result выводит текст длинный с информацией. (Мне нужно что бы в Input с id "balfree2" выводился баланс рублевый (RUB: 0.40)

А он выводит полностью строку. Пытался сделать через array но не совсем понял как сделать и он просто в инпут выводил: "Array"
 {"type":"success","balance":[{"currency":"RUB","value":"0.40"},{"currency":"USD","value":"0.00"},{"currency":"EUR","value":"0.00"},{"currency":"KZT","value":"0.00"},{"currency":"UAH","value":"0.00"}]} 


В документации фрикассы вообще ничего не понятно)

php обработчик
 if($type == "balance") { 






$data = [
'shopId'=>"id кассы",
'nonce'=>time(),
];
$api_key = 'ключ';
ksort($data);
$sign = hash_hmac('sha256', implode('|', $data), $api_key);
$data['signature'] = $sign;

$request = json_encode($data);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.freekassa.ru/v1/balance');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FAILONERROR, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
$result = trim(curl_exec($ch));
curl_close($ch);



$result = array(
'success' => "$ch",
'result' => "$result",
);
}
js
       
Лучший ответ
Андрей Высший разум (431275) 2 месяца назад
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
}
}
});
Алексей ЧизовУченик (177) 1 месяц назад
не выводит в инпут значение(
Остальные ответы
Ааабаев Аааб Мыслитель (7341) 2 месяца назад
про тех. поддержку слышал че-нить в своей жизни?
Похожие вопросы