Не работает оплата в приложении

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)

Не работает оплата в приложении

Сообщение stepan05 » 17 дек 2013, 04:24

Привет всем, такая проблема, когда покупаю валюту в приложении например за 1 голос. Жму оплатить и мне после долгой оплаты пишет: Мы ожидаем подтверждение от приложения. Если оно не будет получено в течение часа, голоса будут возвращены на Ваш счёт. Через 1 час голос возвратился. Пробовал несколько раз и толку 0. Скажите как решить эту проблему?
stepan05

 
Автор темы
Сообщения: 146
Зарегистрирован: 15 авг 2012, 09:43
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



Re: Не работает оплата в приложении

Сообщение Casperovskii » 17 дек 2013, 10:26

Сразу вопрос: ваше приложение или нет?
Если не ваше - то никак. Если ваше - то смотреть, что за скрипт отвечает за оплату и ответ серверу.
Casperovskii

 
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50
Благодарил (а): 11 раз.
Поблагодарили: 43 раз.

Re: Не работает оплата в приложении

Сообщение stepan05 » 17 дек 2013, 10:29

приложение мое. Тестовая оплата для тестеров работает. Все зачисляется
Вот логи платежей:
  1. 05:27:45    Рабочий  Ответ  null
  2. 05:27:44    Рабочий  Запрос    app_id=2020942&date=1387243269&item=item9&item_id=9&item_photo_url=https://dod-apps.ru/all/img/piar_order.png&item_price=1&item_title=Место в vip-блоке&notification_type=order_status_change&order_id=7844322&receiver_id=199871311&status=chargeable&user_id=199871311
  3. 05:27:12    Тестовый    Ответ  {"response":{"order_id":385703, "app_order_id":"489"}}
  4. 05:27:12    Тестовый    Запрос    app_id=2020942&date=1387243624&item=item4&item_id=4&item_photo_url=https://dod-apps.ru/all/img/sheet_order.png&item_price=50&item_title=250 золота&notification_type=order_status_change_test&order_id=385703&receiver_id=214402965&status=chargeable&user_id=214402965
stepan05

 
Автор темы
Сообщения: 146
Зарегистрирован: 15 авг 2012, 09:43
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.

Re: Не работает оплата в приложении

Сообщение Casperovskii » 17 дек 2013, 10:31

stepan05
А что мне с логов то? Как видишь сам: рабочий ответ null. М.б. сам обработчик не заточен под рабочие ответы?
Casperovskii

 
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50
Благодарил (а): 11 раз.
Поблагодарили: 43 раз.

Re: Не работает оплата в приложении

Сообщение stepan05 » 17 дек 2013, 11:11

вот файл payment, то есть путь оплаты:
  1. <?php
  2. header("Content-Type: application/json; encoding=utf-8");
  3.  
  4. $secret_key = 'тут мой ключ'; // Защищенный ключ приложения
  5. require 'init.php';
  6.  
  7. $input = $_POST;
  8.  
  9. // Проверка подписи
  10. $sig = $input['sig'];
  11. unset($input['sig']);
  12. ksort($input);
  13. $str = '';
  14. foreach ($input as $k => $v) {
  15.   $str .= $k.'='.$v;
  16. }
  17. $input['item'] = addslashes($input['item']);
  18. $input['item'] = htmlspecialchars($input['item']);
  19. $input['item'] = mysql_escape_string($input['item']);
  20.  
  21. $input['notification_type'] = addslashes($input['notification_type']);
  22. $input['notification_type'] = htmlspecialchars($input['notification_type']);
  23. $input['notification_type'] = mysql_escape_string($input['notification_type']);
  24.  
  25. $input['status'] = addslashes($input['status']);
  26. $input['status'] = htmlspecialchars($input['status']);
  27. $input['status'] = mysql_escape_string($input['status']);
  28.  
  29. $server = "https://dod-apps.ru/all/img/";
  30.  
  31.  
  32. if ($sig != md5($str.$secret_key)) {
  33.   $response['error'] = array(
  34.     'error_code' => 10,
  35.     'error_msg' => 'Несовпадение вычисленной и переданной подписи запроса.',
  36.     'critical' => true
  37.   );
  38. } else {
  39.   if(!mysql_connect($db_host,$db_user,$db_pass)) exit('not_connect');
  40.   mysql_select_db($db_name);
  41.   // Подпись правильная
  42.   switch ($input['notification_type']) {
  43.     case 'get_item_test':
  44.       // Получение информации о товаре
  45.       $item = $input['item']; // наименование товара
  46.  
  47.       if ($item == 'item1') {
  48.         $response['response'] = array(
  49.           'item_id' => 1,
  50.           'title' => '30 золота',
  51.           'photo_url' => $server.'sheet_order.png',
  52.           'price' => 1
  53.         );
  54.       } elseif ($item == 'item2') {
  55.         $response['response'] = array(
  56.           'item_id' => 2,
  57.           'title' => '100 золота',
  58.           'photo_url' => $server.'sheet_order.png',
  59.           'price' => 3
  60.         );
  61.       } elseif ($item == 'item3') {
  62.         $response['response'] = array(
  63.           'item_id' => 3,
  64.           'title' => '400 золота',
  65.           'photo_url' => $server.'sheet_order.png',
  66.           'price' => 10
  67.         );
  68.       } elseif ($item == 'item4') {
  69.         $response['response'] = array(
  70.           'item_id' => 4,
  71.           'title' => '2500 золота',
  72.           'photo_url' => $server.'sheet_order.png',
  73.           'price' => 50
  74.         );
  75.       } elseif ($item == 'item5') {
  76.         $response['response'] = array(
  77.           'item_id' => 5,
  78.           'title' => '300 морковок',
  79.           'photo_url' => $server.'drop_order.png',
  80.           'price' => 1
  81.         );
  82.       } elseif ($item == 'item6') {
  83.         $response['response'] = array(
  84.           'item_id' => 6,
  85.           'title' => 'Акция! 1500 морковок',
  86.           'photo_url' => $server.'drop_order.png',
  87.           'price' => 3
  88.         );
  89.       } elseif ($item == 'item7') {
  90.         $response['response'] = array(
  91.           'item_id' => 7,
  92.           'title' => '4000 морковок',
  93.           'photo_url' => $server.'drop_order.png',
  94.           'price' => 10
  95.         );
  96.       } elseif ($item == 'item8') {
  97.         $response['response'] = array(
  98.           'item_id' => 8,
  99.           'title' => '25000 морковок',
  100.           'photo_url' => $server.'drop_order.png',
  101.           'price' => 50
  102.         );
  103.       } elseif ($item == 'item9') {
  104.         $response['response'] = array(
  105.           'item_id' => 9,
  106.           'title' => 'Место в vip-блоке',
  107.           'photo_url' => $server.'piar_order.png',
  108.           'price' => 1
  109.         );
  110.       } else {
  111.         $response['error'] = array(
  112.           'error_code' => 20,
  113.           'error_msg' => 'Товара не существует.',
  114.           'critical' => true
  115.         );
  116.       }
  117.       $q = "INSERT INTO `buys`(`order_id`,`user_id`,`status`,`date`) VALUES(".intval($input['order_id']).",".intval($input['user_id']).",0,".time().")";
  118.       mysql_query($q);
  119.       break;
  120.  
  121. case 'get_item':
  122.       // Получение информации о товаре в тестовом режиме
  123.       $item = $input['item']; // наименование товара
  124.  
  125.       if ($item == 'item1') {
  126.         $response['response'] = array(
  127.           'item_id' => 1,
  128.           'title' => '30 золота',
  129.           'photo_url' => 'https://dod-apps.ru/all/img/sheet_order.png',
  130.           'price' => 1
  131.         );
  132.       } elseif ($item == 'item2') {
  133.         $response['response'] = array(
  134.           'item_id' => 2,
  135.           'title' => '100 золота',
  136.           'photo_url' => 'https://dod-apps.ru/all/img/sheet_order.png',
  137.           'price' => 3
  138.         );
  139.       } elseif ($item == 'item3') {
  140.         $response['response'] = array(
  141.           'item_id' => 3,
  142.           'title' => '400 золота',
  143.           'photo_url' => 'https://dod-apps.ru/all/img/sheet_order.png',
  144.           'price' => 10
  145.         );
  146.       } elseif ($item == 'item4') {
  147.         $response['response'] = array(
  148.           'item_id' => 4,
  149.           'title' => '2500 золота',
  150.           'photo_url' => 'https://dod-apps.ru/all/img/sheet_order.png',
  151.           'price' => 50
  152.         );
  153.       } elseif ($item == 'item5') {
  154.         $response['response'] = array(
  155.           'item_id' => 5,
  156.           'title' => '300 морковок',
  157.           'photo_url' => 'https://dod-apps.ru/all/img/drop_order.png',
  158.           'price' => 1
  159.         );
  160.       } elseif ($item == 'item6') {
  161.         $response['response'] = array(
  162.           'item_id' => 6,
  163.           'title' => 'Акция! 1500 морковок',
  164.           'photo_url' => 'https://dod-apps.ru/all/img/drop_order.png',
  165.           'price' => 3
  166.         );
  167.       } elseif ($item == 'item7') {
  168.         $response['response'] = array(
  169.           'item_id' => 7,
  170.           'title' => '4000 морковок',
  171.           'photo_url' => 'https://dod-apps.ru/all/img/drop_order.png',
  172.           'price' => 10
  173.         );
  174.       } elseif ($item == 'item8') {
  175.         $response['response'] = array(
  176.           'item_id' => 8,
  177.           'title' => '25000 морковок',
  178.           'photo_url' => 'https://dod-apps.ru/all/img/drop_order.png',
  179.           'price' => 50
  180.         );
  181.       } elseif ($item == 'item9') {
  182.         $response['response'] = array(
  183.           'item_id' => 9,
  184.           'title' => 'Место в vip-блоке',
  185.           'photo_url' => 'https://dod-apps.ru/all/img/piar_order.png',
  186.           'price' => 1
  187.         );
  188.       } else {
  189.         $response['error'] = array(
  190.           'error_code' => 20,
  191.           'error_msg' => 'Товара не существует.',
  192.           'critical' => true
  193.         );
  194.       }
  195.       $q = "INSERT INTO `buys`(`order_id`,`user_id`,`status`,`date`) VALUES(".intval($input['order_id']).",".intval($input['user_id']).",0,".time().")";
  196.       mysql_query($q);
  197.       break;
  198. /*
  199. case 'order_status_change':
  200.       // Изменение статуса заказа
  201.       if ($input['status'] == 'chargeable') {
  202.         $order_id = intval($input['order_id']);
  203.         $user_id = intval($input['user_id']);
  204.         $item = $input['item'];
  205.         $item_price = intval($input['item_price']);
  206.        
  207.         $prices = array(1,3,10,50,1,3,10,50,1);
  208.         for($i=1;$i<10;$i++) {
  209.             if($item == 'item'.$i && $item_price != $prices[$i-1]) {
  210.                 $response['error'] = array(
  211.                     'error_code' => 21,
  212.                     'error_msg' => 'Неверная цена товара.',
  213.                     'critical' => true
  214.                 );
  215.                 break;
  216.             }
  217.         }
  218.        $q = "SELECT * FROM `buys` WHERE `order_id` = ".$order_id." AND `user_id` = ".$user_id;
  219.        $res = mysql_query($q);
  220.        if(mysql_num_rows($res) == 0) {
  221.            $response['error'] = array(
  222.                  'error_code' => 22,
  223.                  'error_msg' => 'Нет такого заказа',
  224.                  'critical' => true
  225.             );
  226.             break;
  227.        }
  228.        
  229.        $arr = array(array(1,'sheets',30),array(3,'sheets',100),array(10,'sheets',400),array(50,'sheets',2500),
  230.                array(1,'drops',300),array(3,'drops',1500),array(10,'drops',4000),array(50,'drops',25000),
  231.                array(1));
  232.                
  233.        $itt = intval(substr($item,4,2));
  234.        $f = mysql_fetch_array($res);
  235.        if($f['status'] == 0 && $itt != 9) {
  236.             $q = "UPDATE `users` SET `".$arr[$itt-1][1]."` = ".$arr[$itt-1][1]."+".$arr[$itt-1][2].",`spent_votes` = spent_votes+".$arr[$itt-1][0]." WHERE `uid` = ".$user_id;
  237.             mysql_query($q);
  238.             $q = "UPDATE `buys` SET `status` = 1 WHERE `order_id` = ".$order_id;
  239.             mysql_query($q);
  240.        }
  241.        if($itt == 9) {
  242.             $q = "INSERT INTO `vip_place`(`uid`,`time`) VALUES(".$user_id.",".time().")";
  243.             mysql_query($q);
  244.             $q = "UPDATE `users` SET `drops` = drops + 50 WHERE `uid` = ".$user_id;
  245.             mysql_query($q);
  246.        }
  247.        
  248.        
  249.       $app_order_id = $f['app_order_id']; // Получающийся у вас идентификатор заказа.
  250.  
  251.       $response['response'] = array(
  252.           'order_id' => $order_id,
  253.           'app_order_id' => $app_order_id,
  254.         );
  255.       } else {
  256.         $response['error'] = array(
  257.           'error_code' => 100,
  258.           'error_msg' => 'Передано непонятно что вместо chargeable.',
  259.           'critical' => true
  260.         );
  261.       }
  262.       break; */
  263.  
  264. case 'order_status_change_test':
  265.       // Изменение статуса заказа
  266.       if ($input['status'] == 'chargeable') {
  267.         $order_id = intval($input['order_id']);
  268.         $user_id = intval($input['user_id']);
  269.         $item = $input['item'];
  270.         $item_price = intval($input['item_price']);
  271.        
  272.         $prices = array(1,3,10,50,1,3,10,50,1);
  273.         for($i=1;$i<10;$i++) {
  274.             if($item == 'item'.$i && $item_price != $prices[$i-1]) {
  275.                 $response['error'] = array(
  276.                     'error_code' => 21,
  277.                     'error_msg' => 'Неверная цена товара.',
  278.                     'critical' => true
  279.                 );
  280.                 break;
  281.             }
  282.         }
  283.        $q = "SELECT * FROM `buys` WHERE `order_id` = ".$order_id." AND `user_id` = ".$user_id;
  284.        $res = mysql_query($q);
  285.        if(mysql_num_rows($res) == 0) {
  286.            $response['error'] = array(
  287.                  'error_code' => 22,
  288.                  'error_msg' => 'Нет такого заказа',
  289.                  'critical' => true
  290.             );
  291.             break;
  292.        }
  293.        
  294.        $arr = array(array(1,'sheets',30),array(3,'sheets',100),array(10,'sheets',400),array(50,'sheets',2500),
  295.                array(1,'drops',300),array(3,'drops',1500),array(10,'drops',4000),array(50,'drops',25000),
  296.                array(1));
  297.                
  298.        $itt = intval(substr($item,4,2));
  299.        $f = mysql_fetch_array($res);
  300.        if($f['status'] == 0 && $itt != 9) {
  301.             $q = "UPDATE `users` SET `".$arr[$itt-1][1]."` = ".$arr[$itt-1][1]."+".$arr[$itt-1][2].",`spent_votes` = spent_votes+".$arr[$itt-1][0]." WHERE `uid` = ".$user_id;
  302.             mysql_query($q);
  303.             $q = "UPDATE `buys` SET `status` = 1 WHERE `order_id` = ".$order_id;
  304.             mysql_query($q);
  305.        }
  306.        if($itt == 9) {
  307.             $q = "INSERT INTO `vip_place`(`uid`,`time`) VALUES(".$user_id.",".time().")";
  308.             mysql_query($q);
  309.             $q = "UPDATE `users` SET `drops` = drops + 50 WHERE `uid` = ".$user_id;
  310.             mysql_query($q);
  311.        }
  312.        
  313.        
  314.       $app_order_id = $f['app_order_id']; // Получающийся у вас идентификатор заказа.
  315.  
  316.       $response['response'] = array(
  317.           'order_id' => $order_id,
  318.           'app_order_id' => $app_order_id,
  319.         );
  320.       } else {
  321.         $response['error'] = array(
  322.           'error_code' => 100,
  323.           'error_msg' => 'Передано непонятно что вместо chargeable.',
  324.           'critical' => true
  325.         );
  326.       }
  327.       break;
  328.   }
  329. }
  330.  
  331. echo json_encode($response);
  332. ?>
stepan05

 
Автор темы
Сообщения: 146
Зарегистрирован: 15 авг 2012, 09:43
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.

Re: Не работает оплата в приложении

Сообщение Casperovskii » 17 дек 2013, 12:58

stepan05
Ну дак ясен хрен - форма order_status_change почему-то закомменчена. А для тестогового юзверя - нет. Почему бы ей и не работать?..
Casperovskii

 
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50
Благодарил (а): 11 раз.
Поблагодарили: 43 раз.

Re: Не работает оплата в приложении

Сообщение stepan05 » 17 дек 2013, 13:09

раскоментировал строку, теперь не работает оплата. пишет: Ваш запрос не был обработан. Попробуйте повторить его позднее.
stepan05

 
Автор темы
Сообщения: 146
Зарегистрирован: 15 авг 2012, 09:43
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.

Re: Не работает оплата в приложении

Сообщение Casperovskii » 17 дек 2013, 14:15

Строку? 0_о Там же ЦЕЛЫЙ БЛОК в комментарий внесен. Не тупи!
Casperovskii

 
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50
Благодарил (а): 11 раз.
Поблагодарили: 43 раз.

Re: Не работает оплата в приложении

Сообщение stepan05 » 17 дек 2013, 14:55

Сделал, тоже самое:
  1. <?php
  2. header("Content-Type: application/json; encoding=utf-8");
  3.  
  4. $secret_key = 'MhqurKEulfOVEYwvBQi1'; // Защищенный ключ приложения
  5. require 'init.php';
  6.  
  7. $input = $_POST;
  8.  
  9. // Проверка подписи
  10. $sig = $input['sig'];
  11. unset($input['sig']);
  12. ksort($input);
  13. $str = '';
  14. foreach ($input as $k => $v) {
  15.   $str .= $k.'='.$v;
  16. }
  17. $input['item'] = addslashes($input['item']);
  18. $input['item'] = htmlspecialchars($input['item']);
  19. $input['item'] = mysql_escape_string($input['item']);
  20.  
  21. $input['notification_type'] = addslashes($input['notification_type']);
  22. $input['notification_type'] = htmlspecialchars($input['notification_type']);
  23. $input['notification_type'] = mysql_escape_string($input['notification_type']);
  24.  
  25. $input['status'] = addslashes($input['status']);
  26. $input['status'] = htmlspecialchars($input['status']);
  27. $input['status'] = mysql_escape_string($input['status']);
  28.  
  29. $server = "https://dod-apps.ru/all/img/";
  30.  
  31.  
  32. if ($sig != md5($str.$secret_key)) {
  33.   $response['error'] = array(
  34.     'error_code' => 10,
  35.     'error_msg' => 'Несовпадение вычисленной и переданной подписи запроса.',
  36.     'critical' => true
  37.   );
  38. } else {
  39.   if(!mysql_connect($db_host,$db_user,$db_pass)) exit('not_connect');
  40.   mysql_select_db($db_name);
  41.   // Подпись правильная
  42.   switch ($input['notification_type']) {
  43.     case 'get_item_test':
  44.       // Получение информации о товаре
  45.       $item = $input['item']; // наименование товара
  46.  
  47.       if ($item == 'item1') {
  48.         $response['response'] = array(
  49.           'item_id' => 1,
  50.           'title' => '30 золота',
  51.           'photo_url' => $server.'sheet_order.png',
  52.           'price' => 1
  53.         );
  54.       } elseif ($item == 'item2') {
  55.         $response['response'] = array(
  56.           'item_id' => 2,
  57.           'title' => '100 золота',
  58.           'photo_url' => $server.'sheet_order.png',
  59.           'price' => 3
  60.         );
  61.       } elseif ($item == 'item3') {
  62.         $response['response'] = array(
  63.           'item_id' => 3,
  64.           'title' => '400 золота',
  65.           'photo_url' => $server.'sheet_order.png',
  66.           'price' => 10
  67.         );
  68.       } elseif ($item == 'item4') {
  69.         $response['response'] = array(
  70.           'item_id' => 4,
  71.           'title' => '2500 золота',
  72.           'photo_url' => $server.'sheet_order.png',
  73.           'price' => 50
  74.         );
  75.       } elseif ($item == 'item5') {
  76.         $response['response'] = array(
  77.           'item_id' => 5,
  78.           'title' => '300 морковок',
  79.           'photo_url' => $server.'drop_order.png',
  80.           'price' => 1
  81.         );
  82.       } elseif ($item == 'item6') {
  83.         $response['response'] = array(
  84.           'item_id' => 6,
  85.           'title' => 'Акция! 1500 морковок',
  86.           'photo_url' => $server.'drop_order.png',
  87.           'price' => 3
  88.         );
  89.       } elseif ($item == 'item7') {
  90.         $response['response'] = array(
  91.           'item_id' => 7,
  92.           'title' => '4000 морковок',
  93.           'photo_url' => $server.'drop_order.png',
  94.           'price' => 10
  95.         );
  96.       } elseif ($item == 'item8') {
  97.         $response['response'] = array(
  98.           'item_id' => 8,
  99.           'title' => '25000 морковок',
  100.           'photo_url' => $server.'drop_order.png',
  101.           'price' => 50
  102.         );
  103.       } elseif ($item == 'item9') {
  104.         $response['response'] = array(
  105.           'item_id' => 9,
  106.           'title' => 'Место в vip-блоке',
  107.           'photo_url' => $server.'piar_order.png',
  108.           'price' => 1
  109.         );
  110.       } else {
  111.         $response['error'] = array(
  112.           'error_code' => 20,
  113.           'error_msg' => 'Товара не существует.',
  114.           'critical' => true
  115.         );
  116.       }
  117.       $q = "INSERT INTO `buys`(`order_id`,`user_id`,`status`,`date`) VALUES(".intval($input['order_id']).",".intval($input['user_id']).",0,".time().")";
  118.       mysql_query($q);
  119.       break;
  120.  
  121. case 'get_item':
  122.       // Получение информации о товаре в тестовом режиме
  123.       $item = $input['item']; // наименование товара
  124.  
  125.       if ($item == 'item1') {
  126.         $response['response'] = array(
  127.           'item_id' => 1,
  128.           'title' => '30 золота',
  129.           'photo_url' => 'https://dod-apps.ru/all/img/sheet_order.png',
  130.           'price' => 1
  131.         );
  132.       } elseif ($item == 'item2') {
  133.         $response['response'] = array(
  134.           'item_id' => 2,
  135.           'title' => '100 золота',
  136.           'photo_url' => 'https://dod-apps.ru/all/img/sheet_order.png',
  137.           'price' => 3
  138.         );
  139.       } elseif ($item == 'item3') {
  140.         $response['response'] = array(
  141.           'item_id' => 3,
  142.           'title' => '400 золота',
  143.           'photo_url' => 'https://dod-apps.ru/all/img/sheet_order.png',
  144.           'price' => 10
  145.         );
  146.       } elseif ($item == 'item4') {
  147.         $response['response'] = array(
  148.           'item_id' => 4,
  149.           'title' => '2500 золота',
  150.           'photo_url' => 'https://dod-apps.ru/all/img/sheet_order.png',
  151.           'price' => 50
  152.         );
  153.       } elseif ($item == 'item5') {
  154.         $response['response'] = array(
  155.           'item_id' => 5,
  156.           'title' => '300 морковок',
  157.           'photo_url' => 'https://dod-apps.ru/all/img/drop_order.png',
  158.           'price' => 1
  159.         );
  160.       } elseif ($item == 'item6') {
  161.         $response['response'] = array(
  162.           'item_id' => 6,
  163.           'title' => 'Акция! 1500 морковок',
  164.           'photo_url' => 'https://dod-apps.ru/all/img/drop_order.png',
  165.           'price' => 3
  166.         );
  167.       } elseif ($item == 'item7') {
  168.         $response['response'] = array(
  169.           'item_id' => 7,
  170.           'title' => '4000 морковок',
  171.           'photo_url' => 'https://dod-apps.ru/all/img/drop_order.png',
  172.           'price' => 10
  173.         );
  174.       } elseif ($item == 'item8') {
  175.         $response['response'] = array(
  176.           'item_id' => 8,
  177.           'title' => '25000 морковок',
  178.           'photo_url' => 'https://dod-apps.ru/all/img/drop_order.png',
  179.           'price' => 50
  180.         );
  181.       } elseif ($item == 'item9') {
  182.         $response['response'] = array(
  183.           'item_id' => 9,
  184.           'title' => 'Место в vip-блоке',
  185.           'photo_url' => 'https://dod-apps.ru/all/img/piar_order.png',
  186.           'price' => 1
  187.         );
  188.       } else {
  189.         $response['error'] = array(
  190.           'error_code' => 20,
  191.           'error_msg' => 'Товара не существует.',
  192.           'critical' => true
  193.         );
  194.       }
  195.       $q = "INSERT INTO `buys`(`order_id`,`user_id`,`status`,`date`) VALUES(".intval($input['order_id']).",".intval($input['user_id']).",0,".time().")";
  196.       mysql_query($q);
  197.       break;
  198.  
  199. case 'order_status_change':
  200.       // Изменение статуса заказа
  201.       if ($input['status'] == 'chargeable') {
  202.         $order_id = intval($input['order_id']);
  203.         $user_id = intval($input['user_id']);
  204.         $item = $input['item'];
  205.         $item_price = intval($input['item_price']);
  206.        
  207.         $prices = array(1,3,10,50,1,3,10,50,1);
  208.         for($i=1;$i<10;$i++) {
  209.             if($item == 'item'.$i && $item_price != $prices[$i-1]) {
  210.                 $response['error'] = array(
  211.                     'error_code' => 21,
  212.                     'error_msg' => 'Неверная цена товара.',
  213.                     'critical' => true
  214.                 );
  215.                 break;
  216.             }
  217.         }
  218.        $q = "SELECT * FROM `buys` WHERE `order_id` = ".$order_id." AND `user_id` = ".$user_id;
  219.        $res = mysql_query($q);
  220.        if(mysql_num_rows($res) == 0) {
  221.            $response['error'] = array(
  222.                  'error_code' => 22,
  223.                  'error_msg' => 'Нет такого заказа',
  224.                  'critical' => true
  225.             );
  226.             break;
  227.        }
  228.        
  229.        $arr = array(array(1,'sheets',30),array(3,'sheets',100),array(10,'sheets',400),array(50,'sheets',2500),
  230.                array(1,'drops',300),array(3,'drops',1500),array(10,'drops',4000),array(50,'drops',25000),
  231.                array(1));
  232.                
  233.        $itt = intval(substr($item,4,2));
  234.        $f = mysql_fetch_array($res);
  235.        if($f['status'] == 0 && $itt != 9) {
  236.             $q = "UPDATE `users` SET `".$arr[$itt-1][1]."` = ".$arr[$itt-1][1]."+".$arr[$itt-1][2].",`spent_votes` = spent_votes+".$arr[$itt-1][0]." WHERE `uid` = ".$user_id;
  237.             mysql_query($q);
  238.             $q = "UPDATE `buys` SET `status` = 1 WHERE `order_id` = ".$order_id;
  239.             mysql_query($q);
  240.        }
  241.        if($itt == 9) {
  242.             $q = "INSERT INTO `vip_place`(`uid`,`time`) VALUES(".$user_id.",".time().")";
  243.             mysql_query($q);
  244.             $q = "UPDATE `users` SET `drops` = drops + 50 WHERE `uid` = ".$user_id;
  245.             mysql_query($q);
  246.        }
  247.        
  248.        
  249.       $app_order_id = $f['app_order_id']; // Получающийся у вас идентификатор заказа.
  250.  
  251.       $response['response'] = array(
  252.           'order_id' => $order_id,
  253.           'app_order_id' => $app_order_id,
  254.         );
  255.       } else {
  256.         $response['error'] = array(
  257.           'error_code' => 100,
  258.           'error_msg' => 'Передано непонятно что вместо chargeable.',
  259.           'critical' => true
  260.         );
  261.       }
  262.       break; */
  263.  
  264. case 'order_status_change_test':
  265.       // Изменение статуса заказа
  266.       if ($input['status'] == 'chargeable') {
  267.         $order_id = intval($input['order_id']);
  268.         $user_id = intval($input['user_id']);
  269.         $item = $input['item'];
  270.         $item_price = intval($input['item_price']);
  271.        
  272.         $prices = array(1,3,10,50,1,3,10,50,1);
  273.         for($i=1;$i<10;$i++) {
  274.             if($item == 'item'.$i && $item_price != $prices[$i-1]) {
  275.                 $response['error'] = array(
  276.                     'error_code' => 21,
  277.                     'error_msg' => 'Неверная цена товара.',
  278.                     'critical' => true
  279.                 );
  280.                 break;
  281.             }
  282.         }
  283.        $q = "SELECT * FROM `buys` WHERE `order_id` = ".$order_id." AND `user_id` = ".$user_id;
  284.        $res = mysql_query($q);
  285.        if(mysql_num_rows($res) == 0) {
  286.            $response['error'] = array(
  287.                  'error_code' => 22,
  288.                  'error_msg' => 'Нет такого заказа',
  289.                  'critical' => true
  290.             );
  291.             break;
  292.        }
  293.        
  294.        $arr = array(array(1,'sheets',30),array(3,'sheets',100),array(10,'sheets',400),array(50,'sheets',2500),
  295.                array(1,'drops',300),array(3,'drops',1500),array(10,'drops',4000),array(50,'drops',25000),
  296.                array(1));
  297.                
  298.        $itt = intval(substr($item,4,2));
  299.        $f = mysql_fetch_array($res);
  300.        if($f['status'] == 0 && $itt != 9) {
  301.             $q = "UPDATE `users` SET `".$arr[$itt-1][1]."` = ".$arr[$itt-1][1]."+".$arr[$itt-1][2].",`spent_votes` = spent_votes+".$arr[$itt-1][0]." WHERE `uid` = ".$user_id;
  302.             mysql_query($q);
  303.             $q = "UPDATE `buys` SET `status` = 1 WHERE `order_id` = ".$order_id;
  304.             mysql_query($q);
  305.        }
  306.        if($itt == 9) {
  307.             $q = "INSERT INTO `vip_place`(`uid`,`time`) VALUES(".$user_id.",".time().")";
  308.             mysql_query($q);
  309.             $q = "UPDATE `users` SET `drops` = drops + 50 WHERE `uid` = ".$user_id;
  310.             mysql_query($q);
  311.        }
  312.        
  313.        
  314.       $app_order_id = $f['app_order_id']; // Получающийся у вас идентификатор заказа.
  315.  
  316.       $response['response'] = array(
  317.           'order_id' => $order_id,
  318.           'app_order_id' => $app_order_id,
  319.         );
  320.       } else {
  321.         $response['error'] = array(
  322.           'error_code' => 100,
  323.           'error_msg' => 'Передано непонятно что вместо chargeable.',
  324.           'critical' => true
  325.         );
  326.       }
  327.       break;
  328.   }
  329. }
  330.  
  331. echo json_encode($response);
  332. ?>
stepan05

 
Автор темы
Сообщения: 146
Зарегистрирован: 15 авг 2012, 09:43
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.

Re: Не работает оплата в приложении

Сообщение stepan05 » 17 дек 2013, 15:10

аа все сделал, спасибо за помощь!
stepan05

 
Автор темы
Сообщения: 146
Зарегистрирован: 15 авг 2012, 09:43
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.

След.

Вернуться в Создание IFrame-приложений ВКонтакте



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

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

cron