• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/paysystem/applepay.php
  • Класс: BitrixSalePaySystemApplePay
  • Вызов: ApplePay::sendRequest
private function sendRequest($url, array $params = array()): ServiceResult
{
	$result = new ServiceResult();

	$httpClient = new MainWebHttpClient();
	foreach ($this->getHeaders() as $name => $value)
	{
		$httpClient->setHeader($name, $value);
	}

	$httpClient->setContextOptions($this->getContextOptions($this->applePayCert));

	$postData = null;
	if ($params)
	{
		$postData = static::encode($params);
	}

	Logger::addDebugInfo("ApplePay: request data: ".$postData);

	$response = $httpClient->post($url, $postData);
	if ($response === false)
	{
		$errors = $httpClient->getError();
		foreach ($errors as $code => $message)
		{
			$result->addError(new MainError($message, $code));
		}

		return $result;
	}

	Logger::addDebugInfo("ApplePay: response data: ".$response);

	if ($response = static::decode($response))
	{
		$httpStatus = $httpClient->getStatus();
		if ($httpStatus !== self::HTTP_RESPONSE_CODE_OK)
		{
			if (isset($response["statusMessage"]))
			{
				$result->addError(
					new MainError(
						Loc::getMessage(
							"SALE_APPLE_PAY_HTTP_STATUS_MESSAGE",
							[
								"#HTTP_STATUS#" => $httpStatus,
								"#STATUS_MESSAGE#" => $response["statusMessage"],
							]
						)
					)
				);
			}
			else
			{
				$result->addError(
					new MainError(
						Loc::getMessage(
							"SALE_APPLE_PAY_HTTP_STATUS_CODE",
							[
								"#HTTP_STATUS#" => $httpStatus,
							]
						)
					)
				);
			}
		}

		$result->setData($response);
	}

	return $result;
}