sagepay_us.php (3923B)
1 <?php 2 class ControllerExtensionPaymentSagepayUS extends Controller { 3 public function index() { 4 $this->load->language('extension/payment/sagepay_us'); 5 6 $data['text_credit_card'] = $this->language->get('text_credit_card'); 7 $data['text_loading'] = $this->language->get('text_loading'); 8 9 $data['entry_cc_owner'] = $this->language->get('entry_cc_owner'); 10 $data['entry_cc_number'] = $this->language->get('entry_cc_number'); 11 $data['entry_cc_expire_date'] = $this->language->get('entry_cc_expire_date'); 12 $data['entry_cc_cvv2'] = $this->language->get('entry_cc_cvv2'); 13 14 $data['button_confirm'] = $this->language->get('button_confirm'); 15 16 $data['months'] = array(); 17 18 for ($i = 1; $i <= 12; $i++) { 19 $data['months'][] = array( 20 'text' => strftime('%B', mktime(0, 0, 0, $i, 1, 2000)), 21 'value' => sprintf('%02d', $i) 22 ); 23 } 24 25 $today = getdate(); 26 27 $data['year_expire'] = array(); 28 29 for ($i = $today['year']; $i < $today['year'] + 11; $i++) { 30 $data['year_expire'][] = array( 31 'text' => strftime('%Y', mktime(0, 0, 0, 1, 1, $i)), 32 'value' => strftime('%Y', mktime(0, 0, 0, 1, 1, $i)) 33 ); 34 } 35 36 return $this->load->view('extension/payment/sagepay_us', $data); 37 } 38 39 public function send() { 40 $this->load->model('checkout/order'); 41 42 $order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']); 43 44 $url = 'https://www.sagepayments.net/cgi-bin/eftbankcard.dll?transaction'; 45 46 $data = 'm_id=' . $this->config->get('payment_sagepay_us_merchant_id'); 47 $data .= '&m_key=' . $this->config->get('payment_sagepay_us_merchant_key'); 48 $data .= '&T_amt=' . urlencode($this->currency->format($order_info['total'], $order_info['currency_code'], 1.00000, false)); 49 $data .= '&T_ordernum=' . $this->session->data['order_id']; 50 $data .= '&C_name=' . urlencode($this->request->post['cc_owner']); 51 $data .= '&C_address=' . urlencode($order_info['payment_address_1']); 52 $data .= '&C_state=' . urlencode($order_info['payment_zone']); 53 $data .= '&C_city=' . urlencode($order_info['payment_city']); 54 $data .= '&C_cardnumber=' . urlencode($this->request->post['cc_number']); 55 $data .= '&C_exp=' . urlencode($this->request->post['cc_expire_date_month'] . substr($this->request->post['cc_expire_date_year'], '2')); 56 $data .= '&C_cvv=' . urlencode($this->request->post['cc_cvv2']); 57 $data .= '&C_zip=' . urlencode($order_info['payment_postcode']); 58 $data .= '&C_email=' . urlencode($order_info['email']); 59 $data .= '&T_code=02'; 60 61 $ch = curl_init(); 62 63 curl_setopt($ch, CURLOPT_URL, $url); 64 curl_setopt($ch, CURLOPT_POST, 1); 65 curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 66 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 67 68 $response = curl_exec($ch); 69 70 curl_close($ch); 71 72 $json = array(); 73 74 if ($response[1] == 'A') { 75 $message = 'Approval Indicator: ' . $response[1] . "\n"; 76 $message .= 'Approval/Error Code: ' . substr($response, 2, 6) . "\n"; 77 $message .= 'Approval/Error Message: ' . substr($response, 8, 32) . "\n"; 78 $message .= 'Front-End Indicator: ' . substr($response, 40, 2) . "\n"; 79 $message .= 'CVV Indicator: ' . $response[42] . "\n"; 80 $message .= 'AVS Indicator: ' . $response[43] . "\n"; 81 $message .= 'Risk Indicator: ' . substr($response, 44, 2) . "\n"; 82 $message .= 'Reference: ' . substr($response, 46, 10) . "\n"; 83 $message .= 'Order Number: ' . substr($response, strpos($response, chr(28)) + 1, strrpos($response, chr(28) - 1)) . "\n"; 84 85 $this->model_checkout_order->addOrderHistory($this->session->data['order_id'], $this->config->get('payment_sagepay_us_order_status_id'), $message, false); 86 87 $json['redirect'] = $this->url->link('checkout/success'); 88 } else { 89 $json['error'] = substr($response, 8, 32); 90 } 91 92 $this->response->addHeader('Content-Type: application/json'); 93 $this->response->setOutput(json_encode($json)); 94 } 95 }