• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/cashbox/cashboxorangedata.php
  • Класс: BitrixSaleCashboxCashboxOrangeData
  • Вызов: CashboxOrangeData::send
private function send($url, $headers, $data = '')
{
	$context = $this->createStreamContext();

	$errNumber = '';
	$errString = '';
	$client = stream_socket_client($url, $errNumber, $errString, 5, STREAM_CLIENT_CONNECT, $context);

	$result = new Result();
	if ($client !== false)
	{
		Logger::addDebugInfo($headers.$data);

		fputs($client, $headers.$data);
		$response = stream_get_contents($client);
		fclose($client);

		Logger::addDebugInfo($response);

		[$responseHeaders, $content] = explode("rnrn", $response);
		$httpCode = $this->extractResponseStatus($responseHeaders);

		$result->addData(['http_code' => $httpCode, 'content' => $content]);

		if (
			$httpCode !== static::RESPONSE_HTTP_CODE_201
			&&
			$httpCode !== static::RESPONSE_HTTP_CODE_200
		)
		{
			$content = $this->decode($content);
			if (isset($content['errors']))
			{
				$error = implode("n", $content['errors']);
			}
			else
			{
				$error = LocalizationLoc::getMessage('SALE_CASHBOX_ORANGE_DATA_ERROR_RESPONSE_'.$httpCode);
				if (!$error)
				{
					$error = LocalizationLoc::getMessage('SALE_CASHBOX_ORANGE_DATA_ERROR_CHECK_PRINT');
				}
			}

			return $result->addError(new ErrorsError($error));
		}
	}
	else
	{
		$result->addError(
			new ErrorsError(
				LocalizationLoc::getMessage('SALE_CASHBOX_ORANGE_DATA_ERROR_SEND_QUERY')
			)
		);

		$error = new ErrorsError($errNumber.': '.$errString);
		Logger::addError($error->getMessage(), $this->getField('ID'));
	}

	return $result;
}