OpenCart 🇺🇦

Схема

public mixed callback ( )

Аргументы

Аргумент Возможный тип Описание
У метода нет аргументов

Описание

Метод пока еще не документирован.

Исходный код

if (isset($this->session->data['order_id'])) {
	if ($this->config->get('sagepay_direct_test') == 'live') {
		$url = 'https://live.sagepay.com/gateway/service/direct3dcallback.vsp';
	} elseif ($this->config->get('sagepay_direct_test') == 'test') {
		$url = 'https://test.sagepay.com/gateway/service/direct3dcallback.vsp';		
	} elseif ($this->config->get('sagepay_direct_test') == 'sim') {
		$url = 'https://test.sagepay.com/Simulator/VSPDirectCallback.asp';
	} 	

	$curl = curl_init($url);

	curl_setopt($curl, CURLOPT_PORT, 443);
	curl_setopt($curl, CURLOPT_HEADER, 0);
	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($curl, CURLOPT_FORBID_REUSE, 1);
	curl_setopt($curl, CURLOPT_FRESH_CONNECT, 1);
	curl_setopt($curl, CURLOPT_POST, 1);
	curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($this->request->post));

	$response = curl_exec($curl);

	curl_close($curl);

	$data = array();

	$response_info = explode(chr(10), $response);

	foreach ($response_info as $string) {
		if (strpos($string, '=')) {
			$parts = explode('=', $string, 2);

			$data[trim($parts[0])] = trim($parts[1]);
		}
	}

	if ($data['Status'] == 'OK' || $data['Status'] == 'AUTHENTICATED' || $data['Status'] == 'REGISTERED') {
		$this->load->model('checkout/order');

		$this->model_checkout_order->confirm($this->session->data['order_id'], $this->config->get('config_order_status_id'));

		$message = '';

		if (isset($data['TxAuthNo'])) {
			$message .= 'TxAuthNo: ' . $data['TxAuthNo'] . "\n";
		}

		if (isset($data['AVSCV2'])) {
			$message .= 'AVSCV2: ' . $data['AVSCV2'] . "\n";
		}

		if (isset($data['AddressResult'])) {
			$message .= 'AddressResult: ' . $data['AddressResult'] . "\n";
		}

		if (isset($data['PostCodeResult'])) {
			$message .= 'PostCodeResult: ' . $data['PostCodeResult'] . "\n";
		}

		if (isset($data['CV2Result'])) {
			$message .= 'CV2Result: ' . $data['CV2Result'] . "\n";
		}

		if (isset($data['3DSecureStatus'])) {
			$message .= '3DSecureStatus: ' . $data['3DSecureStatus'] . "\n";
		}

		if (isset($data['CAVV'])) {
			$message .= 'CAVV: ' . $data['CAVV'] . "\n";
		}

		$this->model_checkout_order->update($this->session->data['order_id'], $this->config->get('sagepay_direct_order_status_id'), $message, false);	

		$this->redirect($this->url->link('checkout/success'));
	} else {
		$this->session->data['error'] = $data['StatusDetail'];

		$this->redirect($this->url->link('checkout/checkout', '', 'SSL'));
	}
} else {
	$this->redirect($this->url->link('account/login', '', 'SSL'));
}