Страница 3 из 5

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

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

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

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

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

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

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

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

Добавлено: 06 янв 2013, 01:31
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'.'";'); 
и дальше добавляем монетки в другую таблицу БД.
Так норм будет? Особенно с этими долбаными повторными запросами... вообще не понимаю зачем они)
Так то все вроде работает:) Никакого же бага не должно быть?

З.Ы. сори, что так много сообщений в форум)

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

Добавлено: 06 янв 2013, 10:24
Casperovskii
add0295
Повторные запросы нужны вот зачем: ты оплатил, и в этот момент слетел инет. В итоге запрос ушел, а игрок ответ не получил. Тут ему врубают инет и идет повторный запрос с тем же номером покупки. Тебе нужно уже не зачислять монетки юзеру, а просто вернуть номер покупки по твоей БД (не совершая повторных действий). Если сам проблему не решишь - скину свой код.

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

Добавлено: 06 янв 2013, 12:26
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'.'";'); 
и дальше добавляем монетки в другую таблицу БД.
Сам повторные запросы не могу сделать, что бы проверить, по этому описал как все работает здесь и хочу узнать, будет ли так нормально работать? (это что дополнительно добавил, а так все с примера)

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

Добавлено: 27 янв 2013, 16:18
krimzon
Здравствуйте, сделал всё как написано. Но всё равно при нажатии на кнопку происходит длительное ожидание, после чего вылетает ошибка: повторите запрос позднее. Перевёл в UTF-8 не помогло. В чём может быть проблема? Помогите пожалуйста...

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

Добавлено: 27 янв 2013, 20:17
Fedya
У меня сегодня весь день было так, в логах ошибка

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

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

P.S. Спроси у тех. поддержки хостинга не попал ли твой IP в бан (У меня такое было)

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

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

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

Добавлено: 29 янв 2013, 22:11
Александр
krimzon писал(а):Как я понял Homserv и Denwer не то что нужно, т.к. VK не может подключиться в режиме отладки.
http://www.denwer.ru/faq/shared.html

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

Добавлено: 01 фев 2013, 18:19
axecutor
огромное спасибо!=)