Страница 3 из 4
Re: Платежная система
Добавлено: 06 ноя 2012, 18:03
loigor3
Во первых, запрос должен выглядеть так, т.е., сначала тайп. потом итем:VK.callMethod("showOrderBox", { type: 'item', item: 'item1' } );
Во вторых, попробуйте на бесплатном хостинге timeweb.ru, на нем точно все работает.
В третьих, в настройках платежей должен быть указан верный адрес сервера, в таком виде:
http://блаблабла.tw1.ru/test.php
В четвертых, скопируйте пример php сервера полностью, изменив только секретный ключ и название итема.
Если ничего не помогло, попробуйте на сервере не проверять подлинность ключа, т.е
Код: Выделить всё
if (false) { $response['error'] = array( 'error_code' => 10, 'error_msg' => 'Несовпадение вычисленной и переданной подписи запроса.', 'critical' => true ); } else {весь код}
Был такой же косяк, как исправил, в точности не помню))
Re: Платежная система
Добавлено: 06 ноя 2012, 18:49
Casperovskii
loigor3
Спасибо за совет, поменять переменные местами не помогло. Проблема не в работе скрипта (если Вы читали тему), а в том, что контакт даже не хочет до него достучаться.
Re: Платежная система
Добавлено: 06 ноя 2012, 19:14
loigor3
Casperovskii
Попробуй на этом хостинге, там работает точно. Если и там не будет, проблема у тебя.
Re: Платежная система
Добавлено: 06 ноя 2012, 19:16
loigor3
Casperovskii
Если не получится, пиши в лс, скину свои исходники.
Re: Платежная система
Добавлено: 06 ноя 2012, 21:06
Casperovskii
loigor3
Видимо, не до конца понимаешь суть проблемы. Какая разница какой хостинг? Контакт даже не отправляет запрос к моему скрипту.
Re: Платежная система
Добавлено: 07 ноя 2012, 18:46
Casperovskii
loigor3
!!! ОГРОМНОЕ СПАСИБО! Вставил твою функцию вместо массива и все заработало (видимо, надо массив как-то иначе передавать).
Александр
Пока, тьфу-тьфу работает. Можешь привести простейший код обработчика удачного заказа на серверной стороне? С простым увеличением order_id, и записью в БД?
Re: Платежная система
Добавлено: 25 ноя 2014, 02:53
gumback
Что ни делаю, пишет в "Лог платежных уведомлений" такое сообщение каждый раз
02:51:32 Тестовый Ответ 7: couldn't connect to host
02:51:32 Тестовый Запрос app_id=4625867&item=item1&lang=ru_RU¬ification_type=get_item_test&order_id=677104&
receiver_id=276364480&user_id=276364480
Что это может быть? Вот код для коллбэка, взят был из примера с этого же сайта, убрала только проверку ключа, но это тоже не помогает.
Код: Выделить всё
<?php header("Content-Type: application/json; encoding=utf-8"); $secret_key = ''; // Защищенный ключ приложения $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)*/false) { $response['error'] = array( 'error_code' => 10, 'error_msg' => 'Несовпадение вычисленной и переданной подписи запроса.', 'critical' => true ); } else { // Подпись правильная switch ($input['notification_type']) { case 'get_item': // Получение информации о товаре $item = $input['item']; // наименование товара if ($item == 'item1') { $response['response'] = array( 'item_id' => 1, //id товара 'title' => '10 монеток', //наименование 'photo_url' => '', //фотография товара,если оставить поле пустым,то будет выведена иконка приложения 'price' => 1 //цена товара в голосах ); } break; case 'get_item_test': // Получение информации о товаре в тестовом режиме $item = $input['item']; if ($item == 'item1') { $response['response'] = array( 'item_id' => 1, //id товара 'title' => '10 монеток(test mode)', //наименование 'photo_url' => '', //фотография товара,если оставить поле пустым,то будет выведена иконка приложения 'price' => 1 //цена товара в голосах ); } break; case 'order_status_change': // Изменение статуса заказа if ($input['status'] == 'chargeable') { $order_id = intval($input['order_id']); $user_id = intval($input['user_id']); // Код проверки товара, включая его стоимость //Вконтакте может несколько раз отправлять уведомления типа Изменения статуса заказа //(с тем же order_id) и ответ должен в точности повторять ответ для исходного уведомления. $handle = fopen("file.txt","a+"); // ОТкрываем фаил,чтобы записать туда ид плтельщика и ид покупки fwrite($handle,"\n".user_id."\n".$order_id); // Записываем fclose($handle); // Закрываем фаил $response['response'] = array( 'order_id' => $order_id, ); } else { $response['error'] = array( 'error_code' => 100, 'error_msg' => 'Передано непонятно что вместо chargeable.', 'critical' => true ); } break; case 'order_status_change_test': // Изменение статуса заказа в тестовом режиме if ($input['status'] == 'chargeable') { $order_id = intval($input['order_id']); $user_id = intval($input['user_id']); $handle = fopen("file.txt","a+"); // ОТкрываем фаил,чтобы записать туда ид плтельщика и ид покупки fwrite($handle,"\n".$user_id."\n".$order_id); // Записываем fclose($handle); // Закрываем фаил $response['response'] = array( 'order_id' => $order_id, ); } else { $response['error'] = array( 'error_code' => 100, 'error_msg' => 'Передано непонятно что вместо chargeable.', 'critical' => true ); } break; } } echo json_encode($response); ?>
В лог не пишет вообще, такое ощущение, что контакт даже не вызывает мой коллбэк.
Re: Платежная система
Добавлено: 25 ноя 2014, 15:57
XELAD
gumback
Вам же так и написали: не могу соединиться с вашим сервером.
Re: Платежная система
Добавлено: 25 ноя 2014, 20:04
gumback
XELAD, ну как же не может, флешка, которая залита на Вконтакт пустая, она тянет с моего сайта в себя основное приложение, которое уже всё и делает. Грузит же, то есть сайт мой работает, и там же в корне сайта лежит vk_callback.php. Может проблема в том, что я работаю с локального сайта? Ну в смысле у меня на домашней машине через Денвер создан тестовый сайт для этих всех дел. Я просто новичок в этом деле, может чего-то не понимаю. Но флешки и всё такое грузится нормально. Тестрирую, заходя непосредственно уже через Вконтакт, а не из-под Flash. Всё работает, но вот при попытке вызвать VK.callMethod('showOrderBox', { type:'item',item:'item1'}) висит окно "Идёт поиск товара" и гифовый прогресс-бар ихний, а в логах по оплате в табличке вконтактовской пишет, мол
couldn't connect to host.
В настройках самого приложения пишу так:
Адрес обратного вызова:
http://testsite.net/vk_callback.php
В тестерах приложения я есть.
Re: Платежная система
Добавлено: 25 ноя 2014, 22:47
XELAD
gumback
Попробуйте вызвать свой файл в адресной строке браузера. Не исключено, что у вас нет файла политики, лежащего рядом (crossdomain.xml). Или не открыт один из портов, т.к. у вас не сервер фактически.