@WalkersRei

Fatal error: Cannot use object of type stdClass as array?

Вылезает ошибка:
Fatal error: Cannot use object of type stdClass as array in /var/www/u0788916/data/www/gdonate.ru/terminal.php on line 34

Вот код:
<?php

$QueryType = $_GET['QueryType'];
$TransactionId = $_GET['TransactionId'];
$Account = $_GET['Account'];
$TransactionDate = $_GET['TransactionDate'];
$Amount = $_GET['Amount'];
$RevertId = $_GET['RevertId'];
$RevertDate = $_GET['RevertDate'];
$Comment = $_GET['Comment'];
$TransactionExt = $_GET['TransactionExt'];

//?QueryType=check&TransactionId=1
//?QueryType=pay&TransactionId=1&TransactionExt=1&Amount=100


$url 	= "demo.abills.net.ua:9443"; 	//  Указываете адрес биллинга Abills
$user 	= "abills";						//	Указываете логин от административного аккаунта
$passwd = "demo";						//	Указываете пароль от админнистративного аккаунта
$api 	= "1523615231263123";			//  Указываете API ключ от Abills	

switch ($QueryType) {
	case 'check':
		/*echo 	'<?xml version="1.0" encoding="UTF-8"?>
				<Response>
			 	<TransactionId>'.$TransactionId.'</TransactionId>
			 	<ResultCode>0</ResultCode>
			 	<Comment></Comment>
				</Response>';*/
			$status = file_get_contents('https://'.$url.'/admin/index.cgi?qindex=15&UID='.$Account.'&SUMMARY_SHOW=1&EXPORT=1&API_KEY='.$api);
			$check_status = json_decode($status);
			//$active = $check_status[0]->CONTENT->Статус;
			//$error = $check_status->ERROR;
            if($check_status[0]->CONTENT->Статус == 'Активно'){
			$xml = new XMLWriter(); //создаем новый экземпляр класса XMLWriter
			$xml->openMemory(); //использование памяти для вывода строки
			$xml->startDocument(); //установка версии XML в первом теге документа
			$xml->startElement("Response"); //создание корневого узла
			$xml->writeElement("TransactionId", $TransactionId); //ID платежа на стороне терминала
			$xml->writeElement("ResultCode", "0"); //Статус для оповещения терминала
			//$xml->writeElement("Comment", $Comment); //Комментарий при желание
			$xml->endElement(); //закрытие корневого элемента
			echo $xml->outputMemory(); //завершение записи в XML 
			}elseif($check_status[0]->CONTENT->Статус == 'Отключено'){
			$xml = new XMLWriter(); //создаем новый экземпляр класса XMLWriter
			$xml->openMemory(); //использование памяти для вывода строки
			$xml->startDocument(); //установка версии XML в первом теге документа
			$xml->startElement("Response"); //создание корневого узла
			$xml->writeElement("TransactionId", $TransactionId); //ID платежа на стороне терминала
			$xml->writeElement("ResultCode", "21"); //Статус для оповещения терминала
			//$xml->writeElement("Comment", $Comment); //запись элемента
			$xml->endElement(); //закрытие корневого элемента
			echo $xml->outputMemory(); //завершение записи в XML 				
			}elseif($check_status->ERROR == 'Undefined UID'){
			$xml = new XMLWriter(); //создаем новый экземпляр класса XMLWriter
			$xml->openMemory(); //использование памяти для вывода строки
			$xml->startDocument(); //установка версии XML в первом теге документа
			$xml->startElement("Response"); //создание корневого узла
			$xml->writeElement("TransactionId", $TransactionId); //ID платежа на стороне терминала
			$xml->writeElement("ResultCode", "24"); //Статус для оповещения терминала
			//$xml->writeElement("Comment", $Comment); //запись элемента
			$xml->endElement(); //закрытие корневого элемента
			echo $xml->outputMemory(); //завершение записи в XML 	
			}
		break;
	
	case 'pay':
		/*echo '<?xml version="1.0" encoding="UTF-8"?>
				<Response>
				<TransactionId>'.$TransactionId.'</TransactionId>
 				<TransactionExt>'.$TransactionExt.'</TransactionExt>
 				<Amount>'.$Amount.'</Amount>
 				<ResultCode>0</ResultCode>
			</Response>';*/
			$xml = new XMLWriter(); //создаем новый экземпляр класса XMLWriter
			$xml->openMemory(); //использование памяти для вывода строки
			$xml->startDocument(); //установка версии XML в первом теге документа
			$xml->startElement("Response"); //создание корневого узла
			$xml->writeElement("TransactionId", $TransactionId);//ID платежа на стороне терминала
			$xml->writeElement("TransactionExt", $TransactionExt); //ID платежа на стороне провайдера
			$xml->writeElement("Amount", $Amount); //Сумма для зачиления
			$xml->writeElement("ResultCode", "0"); //Статус для оповещения терминала
			$xml->endElement(); //закрытие корневого элемента
			echo $xml->outputMemory(); //завершение записи в XML 			
		file_get_contents('https://'.$url.'/admin/index.cgi?qindex=2&UID='.$Account.'&xml=1&DESCRIBE=Терминал+№'.$TransactionId.'&header=1&SUM='.$Amount.'&add=1&user='.$user.'&passwd='.$passwd.'');
		break;

	case 'cancel':
		/*echo '<?xml version="1.0" encoding="UTF-8"?>
				<Response>
 				<TransactionId>'.$TransactionId.'</TransactionId>
 				<RevertId>'.$RevertId.'</RevertId>
 				<TransactionExt>'.$TransactionExt.'</TransactionExt>
 				<Amount>'.$Amount.'</Amount>
 				<ResultCode>0</ResultCode>
			</Response>';*/
			$xml = new XMLWriter(); //создаем новый экземпляр класса XMLWriter
			$xml->openMemory(); //использование памяти для вывода строки
			$xml->startDocument(); //установка версии XML в первом теге документа
			$xml->startElement("Response"); //создание корневого узла
			$xml->writeElement("TransactionId", $TransactionId);
			$xml->writeElement("RevertId", $RevertId);
			$xml->writeElement("TransactionExt", $TransactionExt); //запись элемента
			$xml->writeElement("Amount", $Amount); //запись элемента
			$xml->writeElement("ResultCode", "0"); //запись элемента
			$xml->endElement(); //закрытие корневого элемента
			echo $xml->outputMemory(); //завершение записи в XML 	

		break;

	default:

		break;
}
  • Вопрос задан
  • 145 просмотров
Решения вопроса 1
TommyV888
@TommyV888 Куратор тега PHP
-
Вы текст ошибки читали?
Когда вам приходит ошибка вы сначала пытаетесь получить 0 элемент и его свойства:
if($check_status[0]->CONTENT->Статус == 'Активно'){

А затем, уже проверяете на наличие ошибки:
}elseif($check_status->ERROR == 'Undefined UID'){
Вам стоит перенести проверку на ошибку в начало, или используя empty проверять существует ли 0 элемент
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы