shop.balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

amazon_pay.php (9143B)


      1 <?php
      2 class ControllerExtensionModuleAmazonPay extends Controller {
      3 	public function index() {
      4 
      5 		$this->load->model('extension/payment/amazon_login_pay');
      6 
      7 		if ($this->config->get('payment_amazon_login_pay_status') && $this->config->get('amazon_pay_status') && !empty($this->request->server['HTTPS']) && !($this->config->get('payment_amazon_login_pay_minimum_total') > 0 && $this->config->get('payment_amazon_login_pay_minimum_total') > $this->cart->getSubTotal())) {
      8 			// capital L in Amazon cookie name is required, do not alter for coding standards
      9 			if (!$this->customer->isLogged() && isset($this->request->cookie['amazon_Login_state_cache'])) {
     10 				setcookie('amazon_Login_state_cache', '', time() - 4815162342);
     11 			}
     12 
     13 			$amazon_payment_js = $this->model_extension_payment_amazon_login_pay->getWidgetJs();
     14 			$this->document->addScript($amazon_payment_js);
     15 
     16 			$data['payment_amazon_login_pay_client_id'] = $this->config->get('payment_amazon_login_pay_client_id');
     17 
     18 			if ($this->config->get('payment_amazon_login_pay_test') == 'sandbox') {
     19 				$data['payment_amazon_login_pay_test'] = true;
     20 			}
     21 
     22 			$data['amazon_pay_return_url'] = $this->url->link('extension/module/amazon_pay/login', '', true);
     23 
     24 			if ($this->config->get('amazon_pay_button_type')) {
     25 				$data['amazon_pay_button_type'] = $this->config->get('amazon_pay_button_type');
     26 			} else {
     27 				$data['amazon_pay_button_type'] = 'PwA';
     28 			}
     29 
     30 			if ($this->config->get('amazon_pay_button_colour')) {
     31 				$data['amazon_pay_button_colour'] = $this->config->get('amazon_pay_button_colour');
     32 			} else {
     33 				$data['amazon_pay_button_colour'] = 'Gold';
     34 			}
     35 
     36 			if ($this->config->get('amazon_pay_button_size')) {
     37 				$data['amazon_pay_button_size'] = $this->config->get('amazon_pay_button_size');
     38 			} else {
     39 				$data['amazon_pay_button_size'] = 'medium';
     40 			}
     41 
     42 			if ($this->config->get('payment_amazon_login_pay_language')) {
     43 				$data['payment_amazon_login_pay_language'] = $this->config->get('payment_amazon_login_pay_language');
     44 			} else {
     45 				$data['payment_amazon_login_pay_language'] = 'en-US';
     46 			}
     47 
     48 			return $this->load->view('extension/module/amazon_pay', $data);
     49 		}
     50 	}
     51 
     52 	public function login() {
     53 		$this->load->model('extension/payment/amazon_login_pay');
     54 		$this->load->model('account/customer');
     55 		$this->load->model('account/customer_group');
     56 		$this->load->language('extension/payment/amazon_login_pay');
     57 
     58 		unset($this->session->data['lpa']);
     59 		unset($this->session->data['access_token']);
     60 
     61 		if (isset($this->request->get['access_token'])) {
     62 			$this->session->data['access_token'] = $this->request->get['access_token'];
     63 			$user = $this->model_extension_payment_amazon_login_pay->getUserInfo($this->request->get['access_token']);
     64 		} else {
     65 			$user = array();
     66 		}
     67 
     68 		if ((array)$user) {
     69 			if (isset($user->error)) {
     70 				$this->model_extension_payment_amazon_login_pay->logger($user->error . ': ' . $user->error_description);
     71 				$this->session->data['lpa']['error'] = $this->language->get('error_login');
     72 				$this->response->redirect($this->url->link('extension/payment/amazon_login_pay/loginFailure', '', true));
     73 			}
     74 
     75 			if ($this->customer->isLogged() && $this->customer->getEmail() != $user->email) {
     76 				$this->session->data['lpa']['error'] = sprintf($this->language->get('error_login_email'), $this->config->get('config_name'));
     77 				$this->response->redirect($this->url->link('extension/payment/amazon_login_pay/loginFailure', '', true));
     78 			} elseif ($this->customer->isLogged()) {
     79 				$this->model_extension_payment_amazon_login_pay->logger('isLogged');
     80 				$this->response->redirect($this->url->link('extension/payment/amazon_login_pay/address', '', true));
     81 			}
     82 
     83 			$customer_info = $this->model_account_customer->getCustomerByEmail($user->email);
     84 			$this->model_extension_payment_amazon_login_pay->logger($user);
     85 
     86 			if ($this->config->get('payment_amazon_login_pay_checkout') == 'guest') {
     87 				$full_name = explode(' ', $user->name);
     88 				$last_name = array_pop($full_name);
     89 				$first_name = implode(' ', $full_name);
     90 				$this->session->data['account'] = 'guest';
     91 				$this->session->data['guest']['customer_group_id'] = $this->config->get('config_customer_group_id');
     92 				$this->session->data['guest']['firstname'] = $first_name;
     93 				$this->session->data['guest']['lastname'] = $last_name;
     94 				$this->session->data['guest']['email'] = $user->email;
     95 				$this->session->data['guest']['telephone'] = '';
     96 				$this->response->redirect($this->url->link('extension/payment/amazon_login_pay/address', '', true));
     97 			} else if ($customer_info) {
     98 				if ($this->validate($user->email)) {
     99 					unset($this->session->data['guest']);
    100 
    101 					$this->load->model('account/address');
    102 
    103 					if ($this->config->get('config_tax_customer') == 'payment') {
    104 						$payment_address = $this->model_account_address->getAddress($this->customer->getAddressId());
    105 						if($payment_address){
    106 							$this->session->data['payment_address'] = $payment_address;
    107 						}
    108 					}
    109 
    110 					if ($this->config->get('config_tax_customer') == 'shipping') {
    111 						$shipping_address = $this->model_account_address->getAddress($this->customer->getAddressId());
    112 						if($shipping_address){
    113 							$this->session->data['shipping_address'] = $shipping_address;
    114 						}
    115 					}
    116 
    117 					$this->model_extension_payment_amazon_login_pay->logger('Customer logged in - ID: ' . $customer_info['customer_id'] . ', Email: ' . $customer_info['email']);
    118 				} else {
    119 					$this->model_extension_payment_amazon_login_pay->logger('Could not login to - ID: ' . $customer_info['customer_id'] . ', Email: ' . $customer_info['email']);
    120 					$this->session->data['lpa']['error'] = $this->language->get('error_login');
    121 					$this->response->redirect($this->url->link('extension/payment/amazon_login_pay/loginFailure', '', true));
    122 				}
    123 
    124 				$this->response->redirect($this->url->link('extension/payment/amazon_login_pay/address', '', true));
    125 			} else {
    126 				$country_id = 0;
    127 				$zone_id = 0;
    128 
    129 				$full_name = explode(' ', $user->name);
    130 				$last_name = array_pop($full_name);
    131 				$first_name = implode(' ', $full_name);
    132 
    133 				$data = array(
    134 					'customer_group_id' => (int)$this->config->get('config_customer_group_id'),
    135 					'firstname' => $first_name,
    136 					'lastname' => $last_name,
    137 					'email' => $user->email,
    138 					'telephone' => '',
    139 					'password' => uniqid(rand(), true),
    140 					'company' => '',
    141 					'address_1' => '',
    142 					'address_2' => '',
    143 					'city' => '',
    144 					'postcode' => '',
    145 					'country_id' => (int)$country_id,
    146 					'zone_id' => (int)$zone_id,
    147 				);
    148 
    149 				$customer_id = $this->model_extension_payment_amazon_login_pay->addCustomer($data);
    150 
    151 				$this->model_extension_payment_amazon_login_pay->logger('Customer ID created: ' . $customer_id);
    152 
    153 				if ($this->validate($user->email)) {
    154 					unset($this->session->data['guest']);
    155 
    156 					$this->load->model('account/address');
    157 
    158 					if ($this->config->get('config_tax_customer') == 'payment') {
    159 						$payment_address = $this->model_account_address->getAddress($this->customer->getAddressId());
    160 						if($payment_address){
    161 							$this->session->data['payment_address'] = $payment_address;
    162 						}
    163 					}
    164 
    165 					if ($this->config->get('config_tax_customer') == 'shipping') {
    166 						$shipping_address = $this->model_account_address->getAddress($this->customer->getAddressId());
    167 						if($shipping_address){
    168 							$this->session->data['shipping_address'] = $shipping_address;
    169 						}
    170 					}
    171 
    172 					$this->model_extension_payment_amazon_login_pay->logger('Customer logged in - ID: ' . $customer_id . ', Email: ' . $user->email);
    173 					$this->response->redirect($this->url->link('extension/payment/amazon_login_pay/address', '', true));
    174 				} else {
    175 					$this->model_extension_payment_amazon_login_pay->logger('Could not login to - ID: ' . $customer_id . ', Email: ' . $user->email);
    176 					$this->session->data['lpa']['error'] = $this->language->get('error_login');
    177 					$this->response->redirect($this->url->link('extension/payment/amazon_login_pay/loginFailure', '', true));
    178 				}
    179 			}
    180 		} else {
    181 
    182 			$this->session->data['lpa']['error'] = $this->language->get('error_login');
    183 			$this->response->redirect($this->url->link('extension/payment/amazon_login_pay/loginFailure', '', true));
    184 		}
    185 	}
    186 
    187 	public function logout() {
    188 		unset($this->session->data['lpa']);
    189 		unset($this->session->data['access_token']);
    190 
    191 		// capital L in Amazon cookie name is required, do not alter for coding standards
    192 		if (isset($this->request->cookie['amazon_Login_state_cache'])) {
    193 			setcookie('amazon_Login_state_cache', '', time() - 4815162342);
    194 		}
    195 	}
    196 
    197 	protected function validate($email) {
    198 		if (!$this->customer->login($email, '', true)) {
    199 			$this->error['warning'] = $this->language->get('error_login');
    200 		}
    201 
    202 		$customer_info = $this->model_account_customer->getCustomerByEmail($email);
    203 
    204 		if ($customer_info && !$customer_info['status']) {
    205 			$this->error['warning'] = $this->language->get('error_approved');
    206 		}
    207 
    208 		return !$this->error;
    209 	}
    210 
    211 }