Оно там вроде все написано в документации - но в исходникам пару символов исправить надо. Пока допрешь до этого немало времени пройдет.В том числе и с русским шрифтом. Поэтому записываю чисто рабочие для теста. Это платеж из их же примера на сайте http://vk.com/developers.php?o=-1&p=Payments_API&s=0
Для теста можно использовать следующую html страницу:
- Код: Выделить всё
<html>
<head>
<script src="http://vk.com/js/api/xd_connection.js?2" type="text/javascript"></script> // !!!
<script type='text/javascript'>
function order() {
var params = {
type: 'item',
item: 'item_25new'
};
VK.callMethod('showOrderBox', params);
}
var callbacksResults = document.getElementById('callbacks');
VK.addCallback('onOrderSuccess', function(order_id) {
callbacksResults.innerHTML += '
onOrderSuccess '+order_id;
});
VK.addCallback('onOrderFail', function() {
callbacksResults.innerHTML += '
onOrderFail';
});
VK.addCallback('onOrderCancel', function() {
callbacksResults.innerHTML += '
onOrderCancel';
});
</script>
</head>
<body>
<input type='button' value='Нажми на меня' onclick='order()' />
</body>
</html>
html для теста ложится по адресу вашего приложения.
php из примера тоже просто так не вставишь. Надо менять имя товара item1 на item_25 как они указали в примере. Потом уберем весь русский текст из переменных. И везде где стоит http адрес дайте какую то ссылку на картинку. А также где указано вставьте свой секретный ключ для приложения, который вам дали.
В итоге такая должна быть рабочая версия:
Обработчик уведомлений php скрипт
- Код: Выделить всё
<?php
header("Content-Type: application/json; encoding=utf-8");
$secret_key = 'HuNasdgasgagnj5'; //Вставить свой Защищенный ключ приложения
$input = $_POST;
// Проверка подписи
$sig = $input['sig'];
unset($input['sig']);
ksort($input);
$str = '';
foreach ($input as $k => $v) {
$str .= $k.'='.$v;
}
if ($sig != md5($str.$secret_key)) {
$response['error'] = array(
'error_code' => 10,
'error_msg' => 'notnot',
'critical' => true
);
} else {
//здесь выполняется любой код после того, что подпись проверена успешно
// Подпись правильная
switch ($input['notification_type']) {
case 'get_item':
// Получение информации о товаре
$item = $input['item']; // наименование товара
if ($item == 'item_25new') {
$response['response'] = array(
'item_id' => 25,
'title' => '300 rrrrrrr',
'photo_url' => 'http://3dsocialnettest.ru/1.jpg',
'price' => 5
);
} elseif ($item == 'item2') {
$response['response'] = array(
'item_id' => 27,
'title' => '500 rrrrrrrr',
'photo_url' => 'http://3dsocialnettest.ru/1.jpg',
'price' => 10
);
} else {
$response['error'] = array(
'error_code' => 20,
'error_msg' => 'not',
'critical' => true
);
}
break;
case 'get_item_test':
// Получение информации о товаре в тестовом режиме
$item = $input['item'];
if ($item == 'item_25new') {
$response['response'] = array(
'item_id' => 125,
'title' => '300 ggggggggggg',
'photo_url' => 'http://3dsocialnettest.ru/1.jpg',
'price' => 5
);
} elseif ($item == 'item2') {
$response['response'] = array(
'item_id' => 127,
'title' => '500 gggggggggg',
'photo_url' => 'http://3dsocialnettest.ru/1.jpg',
'price' => 10
);
} else {
$response['error'] = array(
'error_code' => 20,
'error_msg' => 'notnot',
'critical' => true
);
}
break;
case 'order_status_change':
// Изменение статуса заказа
if ($input['status'] == 'chargeable') {
$order_id = intval($input['order_id']);
// Код проверки товара, включая его стоимость
$app_order_id = 1; // Получающийся у вас идентификатор заказа.
$response['response'] = array(
'order_id' => $order_id,
'app_order_id' => $app_order_id,
);
} else {
$response['error'] = array(
'error_code' => 100,
'error_msg' => 'wwwwwwwwchargeable.',
'critical' => true
);
}
break;
case 'order_status_change_test':
// Изменение статуса заказа в тестовом режиме
if ($input['status'] == 'chargeable') {
$order_id = intval($input['order_id']);
$app_order_id = 1; // Тут фактического заказа может не быть - тестовый режим.
$response['response'] = array(
'order_id' => $order_id,
'app_order_id' => $app_order_id,
);
} else {
$response['error'] = array(
'error_code' => 100,
'error_msg' => 'wwwwwwwwwchargeable.',
'critical' => true
);
}
break;
}
}
echo json_encode($response);
?>
Также объясню суть его работы. Вот та функция order() из html (функция api вконтакте) сама на автомате обращается к нашему скрипту php - так называемому скрипту обработки уведомлений - как "ОНИ" его называют. И путь к нему мы должны задать вот здесь
http://vk.com/developers.php?oid=-1&p=% ... %D0%B5_PHP
Короче для теста этого примера - вы ложите html файл и php скрипт где нибудь на своем хосте. php скрипт называете как угодно - они например советуют vk_callback.php И вот в том окошечке на картинке указываете путь к этому php скрипту на своем хосте. И все. А html естественно у вас должен быть по тому пути который вы задали для своего приложения
Также незабудьте что если вы используете его в юнити сначала выполните команду спрятать веб плеер
Синтаксис:
Используется javascript
Application.ExternalEval(" document.getElementById('unityPlayer').style.visibility = 'hidden';");
Если кому надо будет свисните - я могу записать потом одной строчкой как выполнить вызов окна из юнити а не из веб страницы - просто тот код функции ордер переписывается сюда в Application.ExternalEval(
P.S.
Но допустим вы скажете - это все фигня по сравнению в мировой революцией - как нам получить в пхп скрипт id вконтакта юсера - что говорит о том что вы точно также не понимаете этого API как и я. Ну что отвечу (якобы авторитетно) - на вопросы надо поширше смотреть. Видимо при такой кухне можно обращаться ко всем доступным переменным API контакта. То есть по идее вы банально можете получить ай ди следующим кодом в этом же скрипте
$ids = $input['user_id']; ------ инпут этот метод POST - смотрите выше $input = $_POST;
и затем преспокойно работать с вашей базой.