• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/delivery/tracking/rus_post.php
  • Класс: BitrixSaleDeliveryTrackingRusPostSingle
  • Вызов: RusPostSingle::sendRequest
public function sendRequest($requestData)
{
	$result = new Result();

	if(mb_strtolower(SITE_CHARSET) != 'utf-8')
		$requestData = Encoding::convertEncoding($requestData, SITE_CHARSET, 'UTF-8');

	$httpRes = $this->httpClient->post(self::$url, $requestData);
	$errors = $this->httpClient->getError();

	if (!$httpRes && !empty($errors))
	{
		$strError = "";

		foreach($errors as $errorCode => $errMes)
			$strError .= $errorCode.": ".$errMes;

		$result->addError(new Error($strError));
	}
	else
	{
		$status = $this->httpClient->getStatus();

		if(mb_strtolower(SITE_CHARSET) != 'utf-8')
			$httpRes = Encoding::convertEncoding($httpRes, 'UTF-8', SITE_CHARSET);

		$objXML = new CDataXML();
		$objXML->LoadString($httpRes);
		$data = $objXML->GetArray();
		$result->addData($data);

		if ($status != 200)
		{
			$result->addError(new Error(Loc::getMessage('SALE_DELIVERY_TRACKING_RUS_POST_ERROR_HTTP_STATUS').': '.$status));

			if(!empty($data['Envelope']['#']['Body'][0]['#']['Fault'][0]['#']['Reason'][0]['#']['Text'][0]['#']))
				$result->addError(new Error($data['Envelope']['#']['Body'][0]['#']['Fault'][0]['#']['Reason'][0]['#']['Text'][0]['#']));

			if(!empty($data['Envelope']['#']['Body'][0]['#']['Fault'][0]['#']['Detail'][0]['#']['AuthorizationFaultReason'][0]['#']))
				$result->addError(new Error($data['Envelope']['#']['Body'][0]['#']['Fault'][0]['#']['Detail'][0]['#']['AuthorizationFaultReason'][0]['#']));
		}
	}

	return $result;
}