Платежи в vk

Платежи в vk

Сообщение netghost55 25 ноя 2015, 11:32

Всем привет.

Пытаюсь реализовать монетизацию в игре на вк. Получается вызывать окно платежей и в тестовом режиме ответ приходит что предмет куплен. но когда пробую в боевом режиме, то по колбэку приходит успех даже когда просто окно платежей скрыто. Подскажите пожалуйста, где копать, как реализовать на стороне сервера получение ответа от vk что платеж успешно произведен и записать в базу данных, а потом получить из базы ответ, что все успешно?
Аватара пользователя
netghost55
UNIт
 
Сообщения: 108
Зарегистрирован: 23 июн 2015, 12:23

Re: Платежи в vk

Сообщение IDoNotExist 25 ноя 2015, 11:52

netghost55 писал(а):Всем привет.

Пытаюсь реализовать монетизацию в игре на вк. Получается вызывать окно платежей и в тестовом режиме ответ приходит что предмет куплен. но когда пробую в боевом режиме, то по колбэку приходит успех даже когда просто окно платежей скрыто. Подскажите пожалуйста, где копать, как реализовать на стороне сервера получение ответа от vk что платеж успешно произведен и записать в базу данных, а потом получить из базы ответ, что все успешно?

Проще всего ВК платежом покупать не предмет, а внутриигровую валюту, а за неё уже покупать предметы, да и после того как пришел коллбек по платежам, достаточно направлять на сервер запрос который вернет текущую валюту игрока.

Пример обработчика на PHP
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: Платежи в vk

Сообщение netghost55 25 ноя 2015, 11:59

Я и продаю внутриигровую валюту, на которую пользователи в дальнейшем купят что либо в игре. Как это записать в этот обработчик, что при получении ответа о покупке , он бы отправлял ответ, что все успешно?
Аватара пользователя
netghost55
UNIт
 
Сообщения: 108
Зарегистрирован: 23 июн 2015, 12:23

Re: Платежи в vk

Сообщение IDoNotExist 25 ноя 2015, 12:08

netghost55 писал(а):Я и продаю внутриигровую валюту, на которую пользователи в дальнейшем купят что либо в игре. Как это записать в этот обработчик, что при получении ответа о покупке , он бы отправлял ответ, что все успешно?

Он и так отправляет ответ, только отправляет его тому кто его запрашивает, то есть в VK Api, вообще там есть коллбэки с помощью которых можно вернуть ответ в Unity. https://vk.com/dev/payments_dialog
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: Платежи в vk

Сообщение netghost55 25 ноя 2015, 12:12

IDoNotExist писал(а):
netghost55 писал(а):Я и продаю внутриигровую валюту, на которую пользователи в дальнейшем купят что либо в игре. Как это записать в этот обработчик, что при получении ответа о покупке , он бы отправлял ответ, что все успешно?

Он и так отправляет ответ, только отправляет его тому кто его запрашивает, то есть в VK Api, вообще там есть коллбэки с помощью которых можно вернуть ответ в Unity. https://vk.com/dev/payments_dialog


я пробовал при помощи OnOrderSuccess отправить в юнити информацию, что можно начислять валюту игровую, но она начислялась в любом случае, даже если пользователь отменил платеж. и пишут, что этот колбэк можно подделать?
https://vk.com/topic-1_27042222
Аватара пользователя
netghost55
UNIт
 
Сообщения: 108
Зарегистрирован: 23 июн 2015, 12:23

Re: Платежи в vk

Сообщение IDoNotExist 25 ноя 2015, 12:22

netghost55 писал(а):я пробовал при помощи OnOrderSuccess отправить в юнити информацию, что можно начислять валюту игровую, но она начислялась в любом случае, даже если пользователь отменил платеж. и пишут, что этот колбэк можно подделать?
https://vk.com/topic-1_27042222

Конечно можно, этот коллбек так то в джава скрипте браузера генерируется. А почему для вас это критично, у вас валюта на клиенте хранится и начисляется чтоли?
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: Платежи в vk

Сообщение netghost55 25 ноя 2015, 12:26

Пока что пробовал таким методом, из html приходит ответ, и я начисляю в игре валюту, а потом посылаю на сервер сохранить данные. а как правильнее было бы реализовать это дело? чтоб из базы начислялись?
Аватара пользователя
netghost55
UNIт
 
Сообщения: 108
Зарегистрирован: 23 июн 2015, 12:23

Re: Платежи в vk

Сообщение IDoNotExist 25 ноя 2015, 12:37

netghost55 писал(а):Пока что пробовал таким методом, из html приходит ответ, и я начисляю в игре валюту, а потом посылаю на сервер сохранить данные.

Ну не завидую я вашей игровой экономике тогда ), много вы не заработаете на приложении оставляя в нем такую огромную дыру.
Правильнее будет так:
1) Вк платеж отправляет в PHP обработчик, тот проверяет что все ок, и начисляет платеж в базу, или что у вас там.
2) В Unity приходит коллбэк, из которго отправляем запрос на сервер о текущей актуальной сумме нашей валюты на сервере.
3) Приходит ответ на основе данных которого мы обновляем текущее значение валюты на клиенте.
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: Платежи в vk

Сообщение netghost55 25 ноя 2015, 12:43

потому пока приложение без покупок, пока не заделаю эту дыру :-s
а есть какой пример, как в базу все сохранить из этого обработчика? как получить данные из базы знаю, а как ее прописать в обработчик...
Аватара пользователя
netghost55
UNIт
 
Сообщения: 108
Зарегистрирован: 23 июн 2015, 12:23

Re: Платежи в vk

Сообщение Diab10 25 ноя 2015, 12:54

netghost55 писал(а):потому пока приложение без покупок, пока не заделаю эту дыру :-s
а есть какой пример, как в базу все сохранить из этого обработчика? как получить данные из базы знаю, а как ее прописать в обработчик...


Нужно начислять не в обработчике JS, а в этом обработчике: http://joxi.ru/jnAy6loTGD3lrZ
Вам IDoNotExist уже всё верно расписал
Аватара пользователя
Diab10
Адепт
 
Сообщения: 3401
Зарегистрирован: 17 мар 2011, 20:42
Откуда: 123 RUS
Skype: diab1023

Re: Платежи в vk

Сообщение netghost55 25 ноя 2015, 12:58

Diab10 писал(а):Нужно начислять не в обработчике JS, а в этом обработчике: http://joxi.ru/jnAy6loTGD3lrZ
Вам IDoNotExist уже всё верно расписал

Это я понял , что нужно начислять в php обработчике хранящимся на сервере, контакт его называет vk_callback.php. Есть ли какой пример вместе с сохранением в базу данных?
Аватара пользователя
netghost55
UNIт
 
Сообщения: 108
Зарегистрирован: 23 июн 2015, 12:23

Re: Платежи в vk

Сообщение IDoNotExist 25 ноя 2015, 12:59

netghost55 писал(а):а есть какой пример, как в базу все сохранить из этого обработчика? как получить данные из базы знаю, а как ее прописать в обработчик...

В базу, с помощью SQL запроса, как же еще
Синтаксис:
Используется php
<?php
    header("Content-Type: application/json; encoding=utf-8");
    include("common.php");

    $secret_key = 'MyKey'; // Защищенный ключ приложения

    $input = $_POST;

    // Проверка подписи
    $sig = $input['sig'];
    $user_id = $input['user_id'];
    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' => 'Несовпадение вычисленной и переданной подписи запроса.',
            'critical' => true
        );
    } else {
        // Подпись правильная
        switch ($input['notification_type']) {
            case 'get_item':
                $response = HandleGetItem();
                break;

            case 'get_item_test':
                $response = HandleGetItem();
                break;

            case 'order_status_change':
                $response = OrderStatusChange();
                break;

            case 'order_status_change_test':
                $response = OrderStatusChange();
                break;
        }
    }

    echo json_encode($response);


    function HandleGetItem(){
        global $database,$input;

        $item = mysql_real_escape_string($input['item'], $database);
        $items = sql("SELECT * FROM `vk_orders` WHERE `name` = '$item' LIMIT 1");

        // Получение информации о товаре
        if (count($items) == 1) {
            $response['response'] = $items[0];
        } else {
            $response['error'] = array(
                'error_code' => 20,
                'error_msg' => 'Товара не существует.',
                'critical' => true
            );
        }

        return $response;
    }

    function OrderStatusChange(){

        global $database,$input,$user_id;

        // Изменение статуса заказа
        if ($input['status'] == 'chargeable') {

            $order_id = intval($input['order_id']);
            $item = mysql_real_escape_string($input['item'], $database);

            $items = sql("SELECT * FROM `vk_orders` WHERE `name` = '$item' LIMIT 1"); // товар
            if (count($items) != 0) {
                $gold = $items[0]['amount']; // item_gold_x
                $golosa = $items[0]['price'];

                // Добавляем купленную вещь
                make_sql("UPDATE `players_money` a RIGHT JOIN `players` b USING(`pid`) SET a.gold = a.gold + '$gold', a.vk_golosa = a.vk_golosa + '$golosa' WHERE b.login = '$user_id'");

                $response['response'] = array('order_id' => $order_id);
            } else {
                echo "error: no item.";
            }



        } else {
            $response['error'] = array(
                'error_code' => 100,
                'error_msg' => 'Передано непонятно что вместо chargeable.',
                'critical' => true
            );
        }

        return $response;
    }

?>
 
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: Платежи в vk

Сообщение netghost55 25 ноя 2015, 13:04

IDoNotExist писал(а):В базу, с помощью SQL запроса, как же еще


Спасибо за пример, буду разбираться, как все прописать для моей игры
Аватара пользователя
netghost55
UNIт
 
Сообщения: 108
Зарегистрирован: 23 июн 2015, 12:23

Re: Платежи в vk

Сообщение cibersant 26 ноя 2015, 19:50

Через php записываем в базу данных деньги,а ява скрипт вызывает метод в юнити,который дёргает бабло игрока.
_https://vk.com/app4031890 - 3d боец
cibersant
Старожил
 
Сообщения: 938
Зарегистрирован: 14 дек 2011, 01:27


Вернуться в Социальные сети

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1