OpenCart 🇺🇦

Схема

public mixed expressReturn ( )

Аргументы

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

Описание

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

Исходный код

/**
 * This is the url when PayPal has completed the auth.
 *
 * It has no output, instead it sets the data and locates to checkout
 */
$this->load->model('payment/pp_express');
$data = array(
	'METHOD' => 'GetExpressCheckoutDetails',
	'TOKEN' => $this->session->data['paypal']['token'],
);

$result = $this->model_payment_pp_express->call($data);
$this->session->data['paypal']['payerid']   = $result['PAYERID'];
$this->session->data['paypal']['result']    = $result;

$this->session->data['comment'] = '';
if(isset($result['PAYMENTREQUEST_0_NOTETEXT'])) {
	$this->session->data['comment'] = $result['PAYMENTREQUEST_0_NOTETEXT'];
}

if($this->session->data['paypal']['guest'] == true) {

	$this->session->data['guest']['customer_group_id'] = $this->config->get('config_customer_group_id');
	$this->session->data['guest']['firstname'] = trim($result['FIRSTNAME']);
	$this->session->data['guest']['lastname'] = trim($result['LASTNAME']);
	$this->session->data['guest']['email'] = trim($result['EMAIL']);
	if(isset($result['PHONENUM'])) {
		$this->session->data['guest']['telephone'] = $result['PHONENUM'];
	} else {
		$this->session->data['guest']['telephone'] = '';
	}
	$this->session->data['guest']['fax'] = '';

	$this->session->data['guest']['payment']['firstname'] = trim($result['FIRSTNAME']);
	$this->session->data['guest']['payment']['lastname'] = trim($result['LASTNAME']);

	if(isset($result['BUSINESS'])) {
		$this->session->data['guest']['payment']['company'] = $result['BUSINESS'];
	} else {
		$this->session->data['guest']['payment']['company'] = '';
	}

	$this->session->data['guest']['payment']['company_id'] = '';
	$this->session->data['guest']['payment']['tax_id'] = '';

	if($this->cart->hasShipping()) {
		$shipping_name = explode(' ', trim($result['PAYMENTREQUEST_0_SHIPTONAME']));
		$shipping_first_name = $shipping_name[0];
		unset($shipping_name[0]);
		$shipping_last_name = implode(' ', $shipping_name);


		$this->session->data['guest']['payment']['address_1'] = $result['PAYMENTREQUEST_0_SHIPTOSTREET'];
		if(isset($result['PAYMENTREQUEST_0_SHIPTOSTREET2'])) {
			$this->session->data['guest']['payment']['address_2'] = $result['PAYMENTREQUEST_0_SHIPTOSTREET2'];
		} else {
			$this->session->data['guest']['payment']['address_2'] = '';
		}
		$this->session->data['guest']['payment']['postcode'] = $result['PAYMENTREQUEST_0_SHIPTOZIP'];
		$this->session->data['guest']['payment']['city'] = $result['PAYMENTREQUEST_0_SHIPTOCITY'];

		$this->session->data['guest']['shipping']['firstname'] = $shipping_first_name;
		$this->session->data['guest']['shipping']['lastname'] = $shipping_last_name;
		$this->session->data['guest']['shipping']['company'] = '';
		$this->session->data['guest']['shipping']['address_1'] = $result['PAYMENTREQUEST_0_SHIPTOSTREET'];
		if(isset($result['PAYMENTREQUEST_0_SHIPTOSTREET2'])) {
			$this->session->data['guest']['shipping']['address_2'] = $result['PAYMENTREQUEST_0_SHIPTOSTREET2'];
		} else {
			$this->session->data['guest']['shipping']['address_2'] = '';
		}
		$this->session->data['guest']['shipping']['postcode'] = $result['PAYMENTREQUEST_0_SHIPTOZIP'];
		$this->session->data['guest']['shipping']['city'] = $result['PAYMENTREQUEST_0_SHIPTOCITY'];

		$this->session->data['shipping_postcode'] = $result['PAYMENTREQUEST_0_SHIPTOZIP'];

		$country_info = $this->db->query("SELECT * FROM `" . DB_PREFIX . "country` WHERE `iso_code_2` = '" . $this->db->escape($result['PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE']) . "' AND `status` = '1' LIMIT 1")->row;

		if ($country_info) {
			$this->session->data['guest']['shipping']['country_id'] = $country_info['country_id'];
			$this->session->data['guest']['shipping']['country'] = $country_info['name'];
			$this->session->data['guest']['shipping']['iso_code_2'] = $country_info['iso_code_2'];
			$this->session->data['guest']['shipping']['iso_code_3'] = $country_info['iso_code_3'];
			$this->session->data['guest']['shipping']['address_format'] = $country_info['address_format'];
			$this->session->data['guest']['payment']['country_id'] = $country_info['country_id'];
			$this->session->data['guest']['payment']['country'] = $country_info['name'];
			$this->session->data['guest']['payment']['iso_code_2'] = $country_info['iso_code_2'];
			$this->session->data['guest']['payment']['iso_code_3'] = $country_info['iso_code_3'];
			$this->session->data['guest']['payment']['address_format'] = $country_info['address_format'];
			$this->session->data['shipping_country_id'] = $country_info['country_id'];
		} else {
			$this->session->data['guest']['shipping']['country_id'] = '';
			$this->session->data['guest']['shipping']['country'] = '';
			$this->session->data['guest']['shipping']['iso_code_2'] = '';
			$this->session->data['guest']['shipping']['iso_code_3'] = '';
			$this->session->data['guest']['shipping']['address_format'] = '';
			$this->session->data['guest']['payment']['country_id'] = '';
			$this->session->data['guest']['payment']['country'] = '';
			$this->session->data['guest']['payment']['iso_code_2'] = '';
			$this->session->data['guest']['payment']['iso_code_3'] = '';
			$this->session->data['guest']['payment']['address_format'] = '';
			$this->session->data['shipping_country_id'] = '';
		}

		if (isset($result['PAYMENTREQUEST_0_SHIPTOSTATE'])) {
			$returned_shipping_zone = $result['PAYMENTREQUEST_0_SHIPTOSTATE'];
		} else {
			$returned_shipping_zone = '';
		}

		$zone_info = $this->db->query("SELECT * FROM `" . DB_PREFIX . "zone` WHERE (`name` = '" . $this->db->escape($returned_shipping_zone) . "' OR `code` = '" . $this->db->escape($returned_shipping_zone) . "') AND `status` = '1' AND `country_id` = '" . (int)$country_info['country_id'] . "' LIMIT 1")->row;

		if ($zone_info) {
			$this->session->data['guest']['shipping']['zone'] = $zone_info['name'];
			$this->session->data['guest']['shipping']['zone_code'] = $zone_info['code'];
			$this->session->data['guest']['shipping']['zone_id'] = $zone_info['zone_id'];
			$this->session->data['guest']['payment']['zone'] = $zone_info['name'];
			$this->session->data['guest']['payment']['zone_code'] = $zone_info['code'];
			$this->session->data['guest']['payment']['zone_id'] = $zone_info['zone_id'];
			$this->session->data['shipping_zone_id'] = $zone_info['zone_id'];
		} else {
			$this->session->data['guest']['shipping']['zone'] = '';
			$this->session->data['guest']['shipping']['zone_code'] = '';
			$this->session->data['guest']['shipping']['zone_id'] = '';
			$this->session->data['guest']['payment']['zone'] = '';
			$this->session->data['guest']['payment']['zone_code'] = '';
			$this->session->data['guest']['payment']['zone_id'] = '';
			$this->session->data['shipping_zone_id'] = '';
		}

		$this->session->data['guest']['shipping_address'] = true;
	} else {
		$this->session->data['guest']['payment']['address_1'] = '';
		$this->session->data['guest']['payment']['address_2'] = '';
		$this->session->data['guest']['payment']['postcode'] = '';
		$this->session->data['guest']['payment']['city'] = '';
		$this->session->data['guest']['payment']['country_id'] = '';
		$this->session->data['guest']['payment']['country'] = '';
		$this->session->data['guest']['payment']['iso_code_2'] = '';
		$this->session->data['guest']['payment']['iso_code_3'] = '';
		$this->session->data['guest']['payment']['address_format'] = '';
		$this->session->data['guest']['payment']['zone'] = '';
		$this->session->data['guest']['payment']['zone_code'] = '';
		$this->session->data['guest']['payment']['zone_id'] = '';
		$this->session->data['guest']['shipping_address'] = false;
	}

	$this->session->data['account'] = 'guest';

	unset($this->session->data['shipping_method']);
	unset($this->session->data['shipping_methods']);
	unset($this->session->data['payment_method']);
	unset($this->session->data['payment_methods']);
} else {
	unset($this->session->data['guest']);
	/**
	 * if the user is logged in, add the address to the account and set the ID.
	 */

	if($this->cart->hasShipping()) {
		$this->load->model('account/address');

		$addresses = $this->model_account_address->getAddresses();

		/**
		 * Compare all of the user addresses and see if there is a match
		 */
		$match = false;
		foreach($addresses as $address) {
			if(trim(strtolower($address['address_1'])) == trim(strtolower($result['PAYMENTREQUEST_0_SHIPTOSTREET'])) && trim(strtolower($address['postcode'])) == trim(strtolower($result['PAYMENTREQUEST_0_SHIPTOZIP']))) {
				$match = true;

				$this->session->data['payment_address_id'] = $address['address_id'];
				$this->session->data['payment_country_id'] = $address['country_id'];
				$this->session->data['payment_zone_id'] = $address['zone_id'];

				$this->session->data['shipping_address_id'] = $address['address_id'];
				$this->session->data['shipping_country_id'] = $address['country_id'];
				$this->session->data['shipping_zone_id'] = $address['zone_id'];
				$this->session->data['shipping_postcode'] = $address['postcode'];

				break;
			}
		}

		/**
		 * If there is no address match add the address and set the info.
		 */
		if($match == false) {

			$shipping_name = explode(' ', trim($result['PAYMENTREQUEST_0_SHIPTONAME']));
			$shipping_first_name = $shipping_name[0];
			unset($shipping_name[0]);
			$shipping_last_name = implode(' ', $shipping_name);

			$country_info = $this->db->query("SELECT * FROM `" . DB_PREFIX . "country` WHERE `iso_code_2` = '" . $this->db->escape($result['PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE']) . "' AND `status` = '1' LIMIT 1")->row;
			$zone_info = $this->db->query("SELECT * FROM `" . DB_PREFIX . "zone` WHERE `name` = '" . $this->db->escape($result['PAYMENTREQUEST_0_SHIPTOSTATE']) . "' AND `status` = '1' AND `country_id` = '" . (int)$country_info['country_id'] . "'")->row;

			$address_data= array(
				'firstname' => $shipping_first_name,
				'lastname' => $shipping_last_name,
				'company' => '',
				'company_id' => '',
				'tax_id' => '',
				'address_1' => $result['PAYMENTREQUEST_0_SHIPTOSTREET'],
				'address_2' => (isset($result['PAYMENTREQUEST_0_SHIPTOSTREET2']) ? $result['PAYMENTREQUEST_0_SHIPTOSTREET2'] : ''),
				'postcode' => $result['PAYMENTREQUEST_0_SHIPTOZIP'],
				'city' => $result['PAYMENTREQUEST_0_SHIPTOCITY'],
				'zone_id' => (isset($zone_info['zone_id']) ? $zone_info['zone_id'] : 0),
				'country_id' => (isset($country_info['country_id']) ? $country_info['country_id'] : 0),
			);

			$address_id = $this->model_account_address->addAddress($address_data);

			$this->session->data['payment_address_id'] = $address_id;
			$this->session->data['payment_country_id'] = $address_data['country_id'];
			$this->session->data['payment_zone_id'] = $address_data['zone_id'];

			$this->session->data['shipping_address_id'] = $address_id;
			$this->session->data['shipping_country_id'] = $address_data['country_id'];
			$this->session->data['shipping_zone_id'] = $address_data['zone_id'];
			$this->session->data['shipping_postcode'] = $address_data['postcode'];
		}
	} else {
		$this->session->data['payment_address_id'] = '';
		$this->session->data['payment_country_id'] = '';
		$this->session->data['payment_zone_id'] = '';
	}
}


$this->redirect($this->url->link('payment/pp_express/expressConfirm', '', 'SSL'));