PageRenderTime 42ms CodeModel.GetById 13ms RepoModel.GetById 1ms app.codeStats 0ms

/httpdocs/catalog/controller/payment/bankart_slovenia.php

https://gitlab.com/jo0054/bankart-opencart
PHP | 298 lines | 208 code | 57 blank | 33 comment | 26 complexity | 7a9e2e533638b608f451cc58c68da811 MD5 | raw file
  1. <?php
  2. require_once DIR_APPLICATION . 'controller/payment/bankart_slovenia.e24PaymentPipe.php';
  3. class ControllerPaymentBankartSlovenia extends Controller {
  4. protected function index() {
  5. $this->load->model('checkout/order');
  6. $order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']);
  7. $this->language->load('payment/bankart_slovenia');
  8. //Calculate number of instalments available
  9. $amount = $this->currency->format($order_info['total'], $this->config->get('bankart_slovenia_currency_id'), '', false);
  10. $min_inst_amount = $this->config->get('bankart_slovenia_minimum_instalment');
  11. $max_instalments = floor($amount/$min_inst_amount);
  12. $this->data['max_instalments'] = $max_instalments;
  13. $this->data['text_select_inst'] = $this->language->get('text_select_inst');
  14. $this->data['button_confirm'] = $this->language->get('button_confirm');
  15. $this->data['button_back'] = $this->language->get('button_back');
  16. $this->id = 'payment';
  17. if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/payment/bankart_slovenia.tpl')) {
  18. $this->template = $this->config->get('config_template') . '/template/payment/bankart_slovenia.tpl';
  19. } else {
  20. $this->template = 'default/template/payment/bankart_slovenia.tpl';
  21. }
  22. $this->render();
  23. }
  24. public function generateURL() {
  25. $this->load->model('checkout/order');
  26. $order_info = $this->model_checkout_order->getOrder($this->request->post['order_id']);
  27. $paymentPipe = new e24PaymentPipe();
  28. $paymentPipe->setResourcePath(DIR_ROOT);
  29. $paymentPipe->setAlias(trim($this->config->get('bankart_slovenia_terminal_alias')));
  30. $paymentPipe->setAction('4');
  31. $paymentPipe->setAmt($this->currency->format($order_info['total'], $this->config->get('bankart_slovenia_currency_id'), '', false));
  32. $paymentPipe->setCurrency(978);
  33. $paymentPipe->setLanguage($this->config->get('bankart_slovenia_language'));
  34. $paymentPipe->setResponseURL(HTTPS_SERVER . 'bankart_callback.php');
  35. $paymentPipe->setErrorURL(HTTPS_SERVER . 'bankart_error.php');
  36. $orderDetails = '';
  37. $cartProducts = $this->cart->getProducts();
  38. foreach ($cartProducts as $cartProduct) {
  39. $orderDetails .= $cartProduct['quantity'] . "x " . $cartProduct['name'] . "\n";
  40. if(!empty($cartProduct['option'])) {
  41. foreach($cartProduct['option'] as $cartOptions) {
  42. $orderDetails.= " - " . $cartOptions['name'] . ': ' . $cartOptions['option_value'] . "\n";
  43. }
  44. }
  45. }
  46. $paymentPipe->setUdf1($this->request->post['instalments']);
  47. //$paymentPipe->setUdf2(urlencode($orderDetails));
  48. //$paymentPipe->setUdf3('Order ID: ' . $this->session->data['order_id']);
  49. $paymentPipe->setTrackId($this->request->post['order_id'] . "-" . md5(uniqid()));
  50. if ($paymentPipe->performPaymentInitialization() != $paymentPipe->SUCCESS) {
  51. $this->log->write("Bankart Slovenia Error: " . print_r($paymentPipe->getErrorMsg(), true));
  52. echo "<script type='text/javascript'>alert('" . print_r($paymentPipe->getErrorMsg(), true) . "');</script>";
  53. $this->redirect($this->url->link('checkout/checkout', '' ,'SSL'));
  54. } else {
  55. //Save order in database
  56. $order_details = array(
  57. 'paymentID' => $paymentPipe->getPaymentID(),
  58. 'currency' => $paymentPipe->getCurrency(),
  59. 'amount' => $paymentPipe->getAmt(),
  60. 'orderDetails' => $orderDetails,
  61. 'trackID' => $paymentPipe->getTrackID(),
  62. 'tranDate' => date('d.m.Y H:i:s'),
  63. 'name' => $order_info['payment_firstname'] . " " . $order_info['payment_lastname'],
  64. 'addr1' => $order_info['payment_address_1'],
  65. 'addr2' => $order_info['payment_address_2'],
  66. 'addr3' => '',
  67. 'city' => $order_info['payment_city'],
  68. 'state' => $order_info['payment_zone'],
  69. 'postalCode' => $order_info['payment_postcode'],
  70. 'result' => '',
  71. 'auth' => '',
  72. 'ref' => '',
  73. 'tranID' => '',
  74. 'postDate' => '',
  75. 'udf1' => $paymentPipe->getUdf1(),
  76. 'udf2' => $paymentPipe->getUdf2(),
  77. 'udf3' => $paymentPipe->getUdf3(),
  78. 'udf4' => $paymentPipe->getUdf4(),
  79. 'udf5' => $paymentPipe->getUdf5(),
  80. 'responseCode' => '',
  81. 'errMsg' => '',
  82. 'errText' => '',
  83. 'customerIP' => $this->getRealIpAddr(),
  84. 'eci' => $order_info['payment_postcode']
  85. );
  86. $this->load->model('payment/bankart_slovenia');
  87. $this->model_payment_bankart_slovenia->addOrder($order_details);
  88. //$this->data['payment_url'] = str_replace("&amp;", "&", $paymentPipe->getPaymentPage()) . "PaymentID=" . $paymentPipe->getPaymentId();
  89. $data['paymenturl'] = str_replace("&amp;", "&", $paymentPipe->getPaymentPage()) . "PaymentID=" . $paymentPipe->getPaymentId();
  90. $this->redirect($data['paymenturl']);
  91. }
  92. }
  93. protected function getRealIpAddr() {
  94. if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
  95. $ip=$_SERVER['HTTP_CLIENT_IP'];
  96. }
  97. elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  98. $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
  99. } else {
  100. $ip=$_SERVER['REMOTE_ADDR'];
  101. }
  102. return $ip;
  103. }
  104. public function complete() {
  105. $this->load->model('payment/bankart_slovenia');
  106. $order_details = $this->model_payment_bankart_slovenia->getOrder($this->session->data['order_id']);
  107. if($order_details['result'] == "APPROVED") {
  108. $this->redirect($this->url->link('checkout/success', '' , 'SSL'));
  109. } else {
  110. if(!empty($order_details['errMsg'])) {
  111. $this->redirect($this->url->link('payment/bankart_slovenia/error', 'errText=' . $order_details['errText'], 'SSL'));
  112. } else {
  113. $this->redirect($this->url->link('payment/bankart_slovenia/error', '' , 'SSL'));
  114. }
  115. }
  116. }
  117. public function callback() {
  118. //if cURL call confirm order else redirect to success or error and checkout again page
  119. if(!empty($_POST)) {
  120. header("HTTP/1.1 200 OK");
  121. $this->load->model('checkout/order');
  122. $order_id = explode('-', $_POST['trackid']);
  123. $order_info = $this->model_checkout_order->getOrder($order_id[0]);
  124. //Check if approved if so confirm/update and redirect to success else send to error message page with error
  125. if($_POST['result'] == 'APPROVED') {
  126. $comment = "Payment ID: " . $_POST['result'] . "\n" .
  127. "Response Code: " . $_POST['responsecode'] . "\n" .
  128. "CVV2 Response: " . $_POST['cvv2response'];
  129. if(!$order_info['order_status_id']) {
  130. $this->model_checkout_order->confirm($order_id[0], $this->config->get('bankart_slovenia_order_status_id'), $comment, true);
  131. } else {
  132. $this->model_checkout_order->update($order_id[0], $this->config->get('bankart_slovenia_order_status_id'), $comment, true);
  133. }
  134. $this->load->model('payment/bankart_slovenia');
  135. if (isset($_POST['Error'])) {
  136. $errMsg = $_POST['Error'];
  137. $errText = $_POST['ErrorText'];
  138. } else {
  139. $errMsg = '';
  140. $errText = '';
  141. }
  142. $order_details = array(
  143. 'paymentid' => $_POST['paymentid'],
  144. 'result' => $_POST['result'],
  145. 'auth' => $_POST['auth'],
  146. 'ref' => $_POST['ref'],
  147. 'tranID' => $_POST['tranid'],
  148. 'postDate' => $_POST['postdate'],
  149. 'trackid' => $_POST['trackid'],
  150. 'udf1' => $_POST['udf1'],
  151. 'responsecode' => $_POST['responsecode'],
  152. 'cvv2response' => $_POST['cvv2response'],
  153. 'eci' => $_POST['eci'],
  154. 'errMsg' => $errMsg,
  155. 'errText' => $errText
  156. );
  157. $this->model_payment_bankart_slovenia->updateOrder($order_details);
  158. echo "APPROVED";
  159. } else {
  160. /*$comment = "Result: " . $_POST['result'] . "\n" .
  161. "Response Code: " . $_POST['responsecode'] . "\n";
  162. if(!$order_info['order_status_id']) {
  163. $this->model_checkout_order->confirm($order_id[0], $this->config->get('bankart_slovenia_declined_order_status_id'), $comment, false);
  164. } else {
  165. $this->model_checkout_order->update($order_id[0], $this->config->get('bankart_slovenia_declined_order_status_id'), $comment, false);
  166. }
  167. $this->load->model('payment/bankart_slovenia');
  168. $order_details = array(
  169. 'paymentid' => $_POST['paymentid'],
  170. 'result' => $_POST['result'],
  171. 'auth' => $_POST['auth'],
  172. 'ref' => $_POST['ref'],
  173. 'tranid' => $_POST['tranid'],
  174. 'postdate' => $_POST['postdate'],
  175. 'trackid' => $_POST['trackid'],
  176. 'udf1' => $_POST['udf1'],
  177. 'responsecode' => $_POST['responsecode'],
  178. 'cvv2response' => $_POST['cvv2response'],
  179. 'eci' => $_POST['eci'],
  180. 'errMsg' => $errMsg,
  181. 'errText' => $errText
  182. );*/
  183. $this->model_payment_bankart_slovenia->updateOrder($order_details);
  184. echo "DECLINED";
  185. }
  186. } else {
  187. $this->log->write("Bankart Slovenia Callback Error");
  188. }
  189. }
  190. public function error() {
  191. $this->language->load('payment/bankart_slovenia');
  192. $this->data['breadcrumbs'] = array();
  193. $this->data['breadcrumbs'][] = array(
  194. 'href' => $this->url->link('common/home'),
  195. 'text' => $this->language->get('text_home'),
  196. 'separator' => false
  197. );
  198. $this->data['breadcrumbs'][] = array(
  199. 'href' => $this->url->link('checkout/cart'),
  200. 'text' => $this->language->get('text_basket'),
  201. 'separator' => $this->language->get('text_separator')
  202. );
  203. $this->data['breadcrumbs'][] = array(
  204. 'href' => $this->url->link('checkout/checkout', '', 'SSL'),
  205. 'text' => $this->language->get('text_checkout'),
  206. 'separator' => $this->language->get('text_separator')
  207. );
  208. $this->data['breadcrumbs'][] = array(
  209. 'href' => $this->url->link('payment/bankart_slovenia/error'),
  210. 'text' => $this->language->get('text_error'),
  211. 'separator' => $this->language->get('text_separator')
  212. );
  213. $this->data['heading_title'] = $this->language->get('heading_error');
  214. $this->document->setTitle($this->language->get('heading_error'));
  215. if(isset($this->request->get['errText'])) {
  216. $this->data['text_error_message'] = $this->language->get('text_error_message') . "<br /><p>" . $this->request->get['errText'] . "</p>";
  217. } else {
  218. $this->data['text_error_message'] = $this->language->get('text_error_message');
  219. }
  220. $this->data['button_continue'] = $this->language->get('button_continue');
  221. $this->data['continue'] = $this->url->link('checkout/checkout');
  222. if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/payment/bankart_slovenia_error.tpl')) {
  223. $this->template = $this->config->get('config_template') . '/template/payment/bankart_slovenia_error.tpl';
  224. } else {
  225. $this->template = 'default/template/payment/bankart_slovenia_error.tpl';
  226. }
  227. $this->children = array(
  228. 'common/column_left',
  229. 'common/column_right',
  230. 'common/content_top',
  231. 'common/content_bottom',
  232. 'common/footer',
  233. 'common/header'
  234. );
  235. $this->response->setOutput($this->render());
  236. }
  237. }
  238. ?>