• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/cashbox/cashboxrobokassa.php
  • Класс: BitrixSaleCashboxCashboxRobokassa
  • Вызов: CashboxRobokassa::send
protected function send(string $url, SalePayment $payment, array $fields, string $method = self::SEND_METHOD_HTTP_POST): SaleResult
{
	$result = new SaleResult();

	$startupHash = self::cutSign(
		base64_encode(
			self::formatSign(
				self::encode($fields)
			)
		)
	);

	$sign = self::cutSign(
		base64_encode(
			md5($startupHash . $this->getPaySystemSetting($payment, 'ROBOXCHANGE_SHOPPASSWORD'))
		)
	);

	Logger::addDebugInfo(__CLASS__ . ': request data fields: ' . self::encode($fields));
	Logger::addDebugInfo(__CLASS__ . ': request data: ' . $startupHash . '.' . $sign);

	$httpClient = new MainWebHttpClient();
	$response = $httpClient->post($url, $startupHash . '.' . $sign);
	if ($response === false)
	{
		$result->addError(new MainError(MainLocalizationLoc::getMessage('SALE_CASHBOX_ROBOKASSA_ERROR_EMPTY_RESPONSE')));

		$errors = $httpClient->getError();
		foreach ($errors as $code => $message)
		{
			$result->addError(new MainError($message, $code));
		}

		return $result;
	}

	Logger::addDebugInfo(__CLASS__ . ': response data: ' . $response);

	$response = static::decode($response);
	if (!$response)
	{
		$result->addError(new MainError(MainLocalizationLoc::getMessage('SALE_CASHBOX_ROBOKASSA_ERROR_DECODE_RESPONSE')));
		return $result;
	}

	$result->setData($response);

	return $result;
}