Установите тип содержимого на application / json, так как curl, скорее всего, по умолчанию отправляет его как x-www-form-urlencoded
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
и JSON-кодирует ваш массив:
$jsonDataEncoded = json_encode($vars);
Полный Рефакторированный образец:
$base = 'https://cloudbackup.management/jsonapi';
$vars = array(
"jsonrpc" => "2.0",
"method" => "Login",
"params" => array(
"partner" => "partner",
"username" => "username",
"password" => "pass",
),
"id" => "1",
);
$jsonDataEncoded = json_encode($jsonData);
$ch = curl_init( $base );
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
$response = curl_exec($ch);
curl_close($ch);
$output = json_decode($response, true);
Попытайтесь возвратить true от своей функции-обработчика. Возврат ничего может быть интерпретирован браузером как пустой возврат и таким образом препятствовать тому, чтобы действие по умолчанию было выполнено.