Платежная система

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
loigor3
Сообщения: 10
Зарегистрирован: 06 ноя 2012, 17:06

Re: Платежная система

Сообщение 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 {весь код} 
Был такой же косяк, как исправил, в точности не помню))
Casperovskii
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50

Re: Платежная система

Сообщение Casperovskii »

loigor3
Спасибо за совет, поменять переменные местами не помогло. Проблема не в работе скрипта (если Вы читали тему), а в том, что контакт даже не хочет до него достучаться.
loigor3
Сообщения: 10
Зарегистрирован: 06 ноя 2012, 17:06

Re: Платежная система

Сообщение loigor3 »

Casperovskii
Попробуй на этом хостинге, там работает точно. Если и там не будет, проблема у тебя.
loigor3
Сообщения: 10
Зарегистрирован: 06 ноя 2012, 17:06

Re: Платежная система

Сообщение loigor3 »

Casperovskii
Если не получится, пиши в лс, скину свои исходники.
Casperovskii
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50

Re: Платежная система

Сообщение Casperovskii »

loigor3
Видимо, не до конца понимаешь суть проблемы. Какая разница какой хостинг? Контакт даже не отправляет запрос к моему скрипту.
Casperovskii
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50

Re: Платежная система

Сообщение Casperovskii »

loigor3
!!! ОГРОМНОЕ СПАСИБО! Вставил твою функцию вместо массива и все заработало (видимо, надо массив как-то иначе передавать).
Александр
Пока, тьфу-тьфу работает. Можешь привести простейший код обработчика удачного заказа на серверной стороне? С простым увеличением order_id, и записью в БД?
gumback
Сообщения: 8
Зарегистрирован: 05 ноя 2014, 15:53

Re: Платежная система

Сообщение gumback »

Что ни делаю, пишет в "Лог платежных уведомлений" такое сообщение каждый раз

02:51:32 Тестовый Ответ 7: couldn't connect to host
02:51:32 Тестовый Запрос app_id=4625867&item=item1&lang=ru_RU&notification_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);    ?> 
В лог не пишет вообще, такое ощущение, что контакт даже не вызывает мой коллбэк.
XELAD
Сообщения: 205
Зарегистрирован: 17 июл 2012, 05:25

Re: Платежная система

Сообщение XELAD »

gumback
Вам же так и написали: не могу соединиться с вашим сервером.
gumback
Сообщения: 8
Зарегистрирован: 05 ноя 2014, 15:53

Re: Платежная система

Сообщение gumback »

XELAD, ну как же не может, флешка, которая залита на Вконтакт пустая, она тянет с моего сайта в себя основное приложение, которое уже всё и делает. Грузит же, то есть сайт мой работает, и там же в корне сайта лежит vk_callback.php. Может проблема в том, что я работаю с локального сайта? Ну в смысле у меня на домашней машине через Денвер создан тестовый сайт для этих всех дел. Я просто новичок в этом деле, может чего-то не понимаю. Но флешки и всё такое грузится нормально. Тестрирую, заходя непосредственно уже через Вконтакт, а не из-под Flash. Всё работает, но вот при попытке вызвать VK.callMethod('showOrderBox', { type:'item',item:'item1'}) висит окно "Идёт поиск товара" и гифовый прогресс-бар ихний, а в логах по оплате в табличке вконтактовской пишет, мол couldn't connect to host.

В настройках самого приложения пишу так:

Адрес обратного вызова: http://testsite.net/vk_callback.php

В тестерах приложения я есть.
XELAD
Сообщения: 205
Зарегистрирован: 17 июл 2012, 05:25

Re: Платежная система

Сообщение XELAD »

gumback
Попробуйте вызвать свой файл в адресной строке браузера. Не исключено, что у вас нет файла политики, лежащего рядом (crossdomain.xml). Или не открыт один из портов, т.к. у вас не сервер фактически.
Ответить