W
W
WalkersRei2019-11-14 17:20:59
PHP
WalkersRei, 2019-11-14 17:20:59

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

An error pops up:
Fatal error: Cannot use object of type stdClass as array in /var/www/u0788916/data/www/gdonate.ru/terminal.php on line 34
Here is the code:

<?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;
}

Answer the question

In order to leave comments, you need to log in

1 answer(s)
I
Ilya Loginov, 2019-11-14
@WalkersRei

Did you read the text of the error?
When you get an error, you first try to get the 0 element and its properties:
And then, already check for an error: You should move the error check to the beginning, or use empty to check if the 0 element exists

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question