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 }