shop.balmet.com

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

firstdata_remote.php (6119B)


      1 <?php
      2 class ControllerExtensionPaymentFirstdataRemote extends Controller {
      3 	public function index() {
      4 		$this->load->language('extension/payment/firstdata_remote');
      5 		$this->load->model('extension/payment/firstdata_remote');
      6 
      7 		if ($this->config->get('firstdata_remote_card_storage') == 1 && $this->customer->isLogged()) {
      8 			$data['card_storage'] = 1;
      9 			$data['stored_cards'] = $this->model_extension_payment_firstdata_remote->getStoredCards();
     10 		} else {
     11 			$data['card_storage'] = 0;
     12 			$data['stored_cards'] = array();
     13 		}
     14 
     15 		$data['accepted_cards'] = $this->config->get('firstdata_remote_cards_accepted');
     16 
     17 		$data['months'] = array();
     18 
     19 		for ($i = 1; $i <= 12; $i++) {
     20 			$data['months'][] = array(
     21 				'text'  => strftime('%B', mktime(0, 0, 0, $i, 1, 2000)),
     22 				'value' => sprintf('%02d', $i)
     23 			);
     24 		}
     25 
     26 		$today = getdate();
     27 
     28 		$data['year_expire'] = array();
     29 
     30 		for ($i = $today['year']; $i < $today['year'] + 11; $i++) {
     31 			$data['year_expire'][] = array(
     32 				'text'  => strftime('%Y', mktime(0, 0, 0, 1, 1, $i)),
     33 				'value' => strftime('%y', mktime(0, 0, 0, 1, 1, $i))
     34 			);
     35 		}
     36 
     37 		return $this->load->view('extension/payment/firstdata_remote', $data);
     38 	}
     39 
     40 	public function send() {
     41 		$this->load->model('checkout/order');
     42 		$this->load->model('extension/payment/firstdata_remote');
     43 		$this->load->language('extension/payment/firstdata_remote');
     44 
     45 		$address_codes = array(
     46 			'PPX' => $this->language->get('text_address_ppx'),
     47 			'YYY' => $this->language->get('text_address_yyy'),
     48 			'YNA' => $this->language->get('text_address_yna'),
     49 			'NYZ' => $this->language->get('text_address_nyz'),
     50 			'NNN' => $this->language->get('text_address_nnn'),
     51 			'YPX' => $this->language->get('text_address_ypx'),
     52 			'PYX' => $this->language->get('text_address_pyx'),
     53 			'XXU' => $this->language->get('text_address_xxu')
     54 		);
     55 
     56 		$cvv_codes = array(
     57 			'M' => $this->language->get('text_card_code_m'),
     58 			'N' => $this->language->get('text_card_code_n'),
     59 			'P' => $this->language->get('text_card_code_p'),
     60 			'S' => $this->language->get('text_card_code_s'),
     61 			'U' => $this->language->get('text_card_code_u'),
     62 			'X' => $this->language->get('text_card_code_x'),
     63 			'NONE' => $this->language->get('text_card_code_blank')
     64 		);
     65 
     66 		if (!isset($this->request->post['cc_choice']) || (isset($this->request->post['cc_choice']) && $this->request->post['cc_choice'] == 'new')) {
     67 			if ($this->request->post['cc_number'] == '') {
     68 				$json['error'] = $this->language->get('error_card_number');
     69 			}
     70 
     71 			if ($this->request->post['cc_name'] == '') {
     72 				$json['error'] = $this->language->get('error_card_name');
     73 			}
     74 		}
     75 
     76 		if (strlen($this->request->post['cc_cvv2']) != 3 && strlen($this->request->post['cc_cvv2']) != 4) {
     77 			$json['error'] = $this->language->get('error_card_cvv');
     78 		}
     79 
     80 		if (empty($json['error'])) {
     81 			$order_id = $this->session->data['order_id'];
     82 			$order_info = $this->model_checkout_order->getOrder($order_id);
     83 
     84 			$capture_result = $this->model_extension_payment_firstdata_remote->capturePayment($this->request->post, $order_id);
     85 
     86 			$message = '';
     87 
     88 			if (isset($capture_result['transaction_result']) && strtoupper($capture_result['transaction_result']) == 'APPROVED') {
     89 				$json['success'] = $this->url->link('checkout/success');
     90 
     91 				$message .= $this->language->get('text_result') . $capture_result['transaction_result'] . '<br />';
     92 				$message .= $this->language->get('text_avs') . $address_codes[$capture_result['avs']] . ' (' . $capture_result['avs'] . ')<br />';
     93 
     94 				if (!empty($capture_result['ccv'])) {
     95 					$message .= $this->language->get('text_card_code_verify') . $cvv_codes[$capture_result['ccv']] . ' (' . $capture_result['ccv'] . ')<br />';
     96 				}
     97 
     98 				$message .= $this->language->get('text_approval_code') . $capture_result['approval_code'] . '<br />';
     99 				$message .= $this->language->get('text_reference_number') . $capture_result['reference_number'] . '<br />';
    100 				$message .= $this->language->get('text_card_brand') . $capture_result['brand'] . '<br />';
    101 				$message .= $this->language->get('text_card_number_ref') . $capture_result['card_number_ref'] . '<br />';
    102 				$message .= $this->language->get('text_response_code') . $capture_result['response_code'] . '<br />';
    103 
    104 				$fd_order_id = $this->model_extension_payment_firstdata_remote->addOrder($order_info, $capture_result);
    105 
    106 				if ($this->config->get('firstdata_remote_auto_settle') == 1) {
    107 					$this->model_extension_payment_firstdata_remote->addTransaction($fd_order_id, 'payment', $order_info);
    108 
    109 					$this->model_checkout_order->addOrderHistory($order_id, $this->config->get('firstdata_remote_order_status_success_settled_id'), $message, false);
    110 				} else {
    111 					$this->model_extension_payment_firstdata_remote->addTransaction($fd_order_id, 'auth');
    112 
    113 					$this->model_checkout_order->addOrderHistory($order_id, $this->config->get('firstdata_remote_order_status_success_unsettled_id'), $message, false);
    114 				}
    115 			} else {
    116 				if (isset($capture_result['error']) && !empty($capture_result['error'])) {
    117 					$json['error'] = $capture_result['error'];
    118 				} else {
    119 					$json['error'] = $this->language->get('error_failed');
    120 				}
    121 
    122 				if (isset($capture_result['fault']) && !empty($capture_result['fault'])) {
    123 					$message .= $this->language->get('text_fault') . $capture_result['fault'] . '<br />';
    124 				}
    125 
    126 				$message .= $this->language->get('text_result') . $capture_result['transaction_result'] . '<br />';
    127 				$message .= $this->language->get('text_error') . $capture_result['error'] . '<br />';
    128 				$message .= $this->language->get('text_card_brand') . $capture_result['brand'] . '<br />';
    129 				$message .= $this->language->get('text_card_number_ref') . $capture_result['card_number_ref'] . '<br />';
    130 
    131 				$this->model_extension_payment_firstdata_remote->addHistory($order_id, $this->config->get('firstdata_remote_order_status_decline_id'), $message);
    132 			}
    133 		}
    134 
    135 		$this->response->addHeader('Content-Type: application/json');
    136 		$this->response->setOutput(json_encode($json));
    137 	}
    138 }