Перепробовал несколько скриптов, (учитывая те, которые уже светились на форуме).
<?php
define('VK_API_VERSION', '5.120'); //Используемая версия API
define('VK_API_ENDPOINT', 'https://api.vk.com/method/');
function vkApi_messagesSend($peer_id, $message, $attachments = array()) {
return _vkApi_call('messages.send', array(
'peer_id' => $peer_id,
'message' => $message,
'attachment' => implode(',', $attachments)
));
}
function vkApi_usersGet($user_id) {
return _vkApi_call('users.get', array(
'user_id' => $user_id,
));
}
function vkApi_photosGetMessagesUploadServer($peer_id) {
return _vkApi_call('photos.getMessagesUploadServer', array(
'peer_id' => $peer_id,
));
}
function vkApi_photosSaveMessagesPhoto($photo, $server, $hash) {
return _vkApi_call('photos.saveMessagesPhoto', array(
'photo' => $photo,
'server' => $server,
'hash' => $hash,
));
}
function vkApi_docsGetMessagesUploadServer($peer_id, $type) {
return _vkApi_call('docs.getMessagesUploadServer', array(
'peer_id' => $peer_id,
'type' => $type,
));
}
function vkApi_docsSave($file, $title) {
return _vkApi_call('docs.save', array(
'file' => $file,
'title' => $title,
));
}
function _vkApi_call($method, $params = array()) {
$params['xxx'] = VK_API_ACCESS_TOKEN;
$params['v'] = VK_API_VERSION;
$query = http_build_query($params);
$url = VK_API_ENDPOINT.$method.'?'.$query;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$json = curl_exec($curl);
$error = curl_error($curl);
if ($error) {
log_error($error);
throw new Exception("Failed {$method} request");
}
curl_close($curl);
$response = json_decode($json, true);
if (!$response || !isset($response['response'])) {
log_error($json);
throw new Exception("Invalid response for {$method} request");
}
return $response['response'];
}
function vkApi_upload($url, $file_name) {
if (!file_exists($file_name)) {
throw new Exception('File not found: '.$file_name);
}
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, array('file' => new CURLfile($file_name)));
$json = curl_exec($curl);
$error = curl_error($curl);
if ($error) {
log_error($error);
throw new Exception("Failed {$url} request");
}
curl_close($curl);
$response = json_decode($json, true);
if (!$response) {
throw new Exception("Invalid response for {$url} request");
}
return $response;
}
или же
<?php
if (!isset($_REQUEST)) {
return;
}
//Строка для подтверждения адреса сервера из настроек Callback API
$confirmation_token = '5615c2e4';
//Ключ доступа сообщества
$token = 'xxx
';
$data = json_decode(file_get_contents('php://input'));
switch ($data->type) {
case 'confirmation':
echo $confirmation_token;
break;
}
С самим хостингом проблем по идее быть не должно. Поддерживает PHP. Возможно дело в SSL сертификате, но он подключён, хоть и подарочный от Reg.ru