Работа с Payments API.(as3,php)

Только готовые уроки по использованию ВКонтакте API. Flash + PHP + API. НЕ IFrame!
XELAD
Сообщения: 205
Зарегистрирован: 17 июл 2012, 05:25

Re: Работа с Payments API.(as3,php)

Сообщение XELAD »

add0295
app_order_id вносить не нужно, нужно указать в самой БД, что эта графа- автоматический счетчик. А что-либо найти в БД поможет этот пример

Код: Выделить всё

mysql_query("SELECT * FROM some_table WHERE ID='$id'");
Графа counter это счетчик количества пришедших уведомлений от ВК типа order_status_change, по совместительству указатель необходимости начисления монет и тп.

Эта история вообще необходима для бОльшего контроля за перечислениями голосов/монет, а если без изысков, то своеобразную БД ведет сам ВК на странице Платежи.
add0295
Сообщения: 19
Зарегистрирован: 09 авг 2011, 14:46

Re: Работа с Payments API.(as3,php)

Сообщение add0295 »

А вот еще не понял проблему, когда контакт отправляет несколько одинаковых запросов, то есть типа сразу могут монеты по х2, х3 зачислится :)
Внести user_id, item, order_id, а также app_order_id в виде счетчика. ПЛЮС одна графа, где мы укажем, сколько уведомлений пришло от ВК (подробности ниже), сейчас укажем ноль.
Первый раз вносим в той графе вносим 0
И только если он равен нулю, прибавляем монеток в БД №2! И увеличиваем счетчик в той графе.
Но получается если запрос снова тот же, то будет снова в той графе 0, и все по кругу...
Или я что то не понял)
add0295
Сообщения: 19
Зарегистрирован: 09 авг 2011, 14:46

Re: Работа с Payments API.(as3,php)

Сообщение add0295 »

Вот как я сделал, в связи с тем, что не особо понимаю эту новую схему списывания голосов, хочу услышать ваше мнение:

1. когда у нас case 'get_item':

Код: Выделить всё

$query = mysql_query('INSERT INTO `'.$table_name.'` (`user_id`, `order_id`, `item`, `app_order_id`) VALUES ("'.$in_user_id.'","'.$in_order_id.'","'.$input['item'].'","'.'0'.'") ON DUPLICATE KEY UPDATE  `app_order_id` = (`app_order_id`+"'.'1'.'");');
Если повторный запрос будет, то просто плюсанет в app_order_id и следующий раз ничего не произойдет (ниже опишу что дальше у меня)
2. когда у нас уже case 'order_status_change':

Код: Выделить всё

$order_data = mysql_fetch_array(mysql_query('SELECT user_id,order_id,item,app_order_id FROM `'.$table_name.'` WHERE order_id="'.$order_id.'"'));
вытягиваем все переменные и сравниваем user_id, order_id с полученным ответом $input, если совпадает сравниваем если
app_order_id = 0, то

Код: Выделить всё

$query = mysql_query('INSERT INTO `'.$table_name.'` (`user_id`, `order_id`, `item`) VALUES ("'.$user_id.'","'.$order_id.'","'.$input['item'].'") ON DUPLICATE KEY UPDATE  `app_order_id` =  "'.'1'.'";'); 
и дальше добавляем монетки в другую таблицу БД.
Так норм будет? Особенно с этими долбаными повторными запросами... вообще не понимаю зачем они)
Так то все вроде работает:) Никакого же бага не должно быть?

З.Ы. сори, что так много сообщений в форум)
Casperovskii
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50

Re: Работа с Payments API.(as3,php)

Сообщение Casperovskii »

add0295
Повторные запросы нужны вот зачем: ты оплатил, и в этот момент слетел инет. В итоге запрос ушел, а игрок ответ не получил. Тут ему врубают инет и идет повторный запрос с тем же номером покупки. Тебе нужно уже не зачислять монетки юзеру, а просто вернуть номер покупки по твоей БД (не совершая повторных действий). Если сам проблему не решишь - скину свой код.
add0295
Сообщения: 19
Зарегистрирован: 09 авг 2011, 14:46

Re: Работа с Payments API.(as3,php)

Сообщение add0295 »

add0295 писал(а):Вот как я сделал, в связи с тем, что не особо понимаю эту новую схему списывания голосов, хочу услышать ваше мнение:

1. когда у нас case 'get_item':

Код: Выделить всё

$query = mysql_query('INSERT INTO `'.$table_name.'` (`user_id`, `order_id`, `item`, `app_order_id`) VALUES ("'.$in_user_id.'","'.$in_order_id.'","'.$input['item'].'","'.'0'.'") ON DUPLICATE KEY UPDATE  `app_order_id` = (`app_order_id`+"'.'1'.'");');
Если повторный запрос будет, то просто плюсанет в app_order_id и следующий раз ничего не произойдет (ниже опишу что дальше у меня)
2. когда у нас уже case 'order_status_change':

Код: Выделить всё

$order_data = mysql_fetch_array(mysql_query('SELECT user_id,order_id,item,app_order_id FROM `'.$table_name.'` WHERE order_id="'.$order_id.'"'));
вытягиваем все переменные и сравниваем user_id, order_id с полученным ответом $input, если совпадает сравниваем если
app_order_id = 0, то

Код: Выделить всё

$query = mysql_query('INSERT INTO `'.$table_name.'` (`user_id`, `order_id`, `item`) VALUES ("'.$user_id.'","'.$order_id.'","'.$input['item'].'") ON DUPLICATE KEY UPDATE  `app_order_id` =  "'.'1'.'";'); 
и дальше добавляем монетки в другую таблицу БД.
Сам повторные запросы не могу сделать, что бы проверить, по этому описал как все работает здесь и хочу узнать, будет ли так нормально работать? (это что дополнительно добавил, а так все с примера)
krimzon
Сообщения: 2
Зарегистрирован: 27 янв 2013, 16:11

Re: Работа с Payments API.(as3,php)

Сообщение krimzon »

Здравствуйте, сделал всё как написано. Но всё равно при нажатии на кнопку происходит длительное ожидание, после чего вылетает ошибка: повторите запрос позднее. Перевёл в UTF-8 не помогло. В чём может быть проблема? Помогите пожалуйста...
Fedya
Сообщения: 174
Зарегистрирован: 21 июл 2012, 19:56

Re: Работа с Payments API.(as3,php)

Сообщение Fedya »

У меня сегодня весь день было так, в логах ошибка

Код: Выделить всё

28: connect() timed out!
была.
А сейчас смотрю - работает, хотя ничего не менял

P.S. Спроси у тех. поддержки хостинга не попал ли твой IP в бан (У меня такое было)
krimzon
Сообщения: 2
Зарегистрирован: 27 янв 2013, 16:11

Re: Работа с Payments API.(as3,php)

Сообщение krimzon »

Fedya писал(а):У меня сегодня весь день было так, в логах ошибка
НОМЕРА СТРОК ВКЛ/ВЫКЛ | ПОКАЗАТЬ/СКРЫТЬ | ВЫДЕЛИТЬ ВСЁ
28: connect() timed out!
была.
А сейчас смотрю - работает, хотя ничего не менял
Тоже что то менял, несколько раз выдавалась ошибка 28. В итоге понял, что скорее всего это из-за сервера. Какой лучше полноценный домашний сервер себе поставить на первое время? Как я понял Homserv и Denwer не то что нужно, т.к. VK не может подключиться в режиме отладки. Или я что то не правильно делаю?
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Работа с Payments API.(as3,php)

Сообщение Александр »

krimzon писал(а):Как я понял Homserv и Denwer не то что нужно, т.к. VK не может подключиться в режиме отладки.
http://www.denwer.ru/faq/shared.html
axecutor
Сообщения: 11
Зарегистрирован: 29 июл 2012, 12:29

Re: Работа с Payments API.(as3,php)

Сообщение axecutor »

огромное спасибо!=)
Ответить