Тема: [Вконтакте] payments
Показать сообщение отдельно
Старый 30.03.2015, 21:54
Golovorot вне форума Посмотреть профиль Отправить личное сообщение для Golovorot Найти все сообщения от Golovorot
  № 6  
Ответить с цитированием
Golovorot

Регистрация: Sep 2012
Сообщений: 101
Код AS3:
	private function paymentsGo(e:MouseEvent):void {
			VK.callMethod('showOrderBox', {type:'votes', item:'Алмаз', votes:golosa});
		}
		private function onSuccess(data:Object):void {
			var uv:URLVariables = new URLVariables();
			uv["votes"] 	= golosa;
			uv["id"] 	=    Main.id;
			uv["hash"] 		= Main.auth_key;
			uv["action"]	= 12;
			uv["hash1"] = MD5.encrypt(Main.id + "_" + golosa);
			var req:REQ = new REQ(uv);
			req.addEventListener(REQ.COMPLETE, completeReqHandler);
		}
		private function completeReqHandler(e:Event):void {
			e.currentTarget.removeEventListener(REQ.COMPLETE, completeReqHandler);
			var ur:URLVariables = new URLVariables(e.currentTarget.data);
			if (ur.req == "true") {
				Main.diamond = Main.diamond + (golosa * 15);
			}else {
				Main.setMessage(Main.write("errors", "unknown_error"));
			}
		}
		private function onError(data: Object):void {
			paySet.resultTxt.text = data.error_msg;
			Main.setMessage(Main.write("errors", "unknown_error"));
		}
		private function onCanc(data:Object):void {
			Main.setMessage(Main.write("errors", "unknown_error"));
		}
Вот as3 код. Однако, через раз не присылает ответ

PHP код:
$sig $input['sig'];
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':
      
// Получение информации о товаре
      
$item $input['item']; // наименование товара
 
if ($item == 'item1') {
        
$response['response'] = array(
          
'item_id' => 1//id товара
          
'title' => 'Алмаз'//наименование
          
'photo_url' => ''//фотография товара,если оставить поле пустым,то будет выведена иконка приложения
          
'price' => //цена товара в голосах
        
);
      }
      break;
 
case 
'get_item':
      
// Получение информации о товаре в тестовом режиме
      
$item $input['item'];
      if (
$item == 'item1') {
        
$response['response'] = array(
          
'item_id' => 1//id товара
          
'title' => 'Алмаз'//наименование
          
'photo_url' => ''//фотография товара,если оставить поле пустым,то будет выведена иконка приложения
          
'price' => //цена товара в голосах
        
);
      }
      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);
?> 
вот php