PageRenderTime 24ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/admin/controller/extension/payment/g2apay.php

https://bitbucket.org/mmahdy/opencart-modules-app
PHP | 302 lines | 229 code | 73 blank | 0 comment | 63 complexity | cb1837e85d5e30d9e12469dd0e0f72a9 MD5 | raw file
  1. <?php
  2. class ControllerExtensionPaymentG2APay extends Controller {
  3. private $error = array();
  4. public function index() {
  5. $this->load->language('extension/payment/g2apay');
  6. $this->document->setTitle($this->language->get('heading_title'));
  7. $this->load->model('setting/setting');
  8. if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
  9. $this->model_setting_setting->editSetting('payment_g2apay', $this->request->post);
  10. $this->session->data['complete'] = $this->language->get('text_complete');
  11. $this->response->redirect($this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true));
  12. }
  13. if (isset($this->error['warning'])) {
  14. $data['error_warning'] = $this->error['warning'];
  15. } else {
  16. $data['error_warning'] = '';
  17. }
  18. if (isset($this->error['username'])) {
  19. $data['error_username'] = $this->error['username'];
  20. } else {
  21. $data['error_username'] = '';
  22. }
  23. if (isset($this->error['secret'])) {
  24. $data['error_secret'] = $this->error['secret'];
  25. } else {
  26. $data['error_secret'] = '';
  27. }
  28. if (isset($this->error['api_hash'])) {
  29. $data['error_api_hash'] = $this->error['api_hash'];
  30. } else {
  31. $data['error_api_hash'] = '';
  32. }
  33. if (isset($this->request->post['payment_g2apay_order_status_id'])) {
  34. $data['payment_g2apay_order_status_id'] = $this->request->post['payment_g2apay_order_status_id'];
  35. } else {
  36. $data['payment_g2apay_order_status_id'] = $this->config->get('payment_g2apay_order_status_id');
  37. }
  38. if (isset($this->request->post['payment_g2apay_complete_status_id'])) {
  39. $data['payment_g2apay_complete_status_id'] = $this->request->post['payment_g2apay_complete_status_id'];
  40. } else {
  41. $data['payment_g2apay_complete_status_id'] = $this->config->get('payment_g2apay_complete_status_id');
  42. }
  43. if (isset($this->request->post['payment_g2apay_rejected_status_id'])) {
  44. $data['payment_g2apay_rejected_status_id'] = $this->request->post['payment_g2apay_rejected_status_id'];
  45. } else {
  46. $data['payment_g2apay_rejected_status_id'] = $this->config->get('payment_g2apay_rejected_status_id');
  47. }
  48. if (isset($this->request->post['payment_g2apay_cancelled_status_id'])) {
  49. $data['payment_g2apay_cancelled_status_id'] = $this->request->post['payment_g2apay_cancelled_status_id'];
  50. } else {
  51. $data['payment_g2apay_cancelled_status_id'] = $this->config->get('payment_g2apay_cancelled_status_id');
  52. }
  53. if (isset($this->request->post['payment_g2apay_pending_status_id'])) {
  54. $data['payment_g2apay_pending_status_id'] = $this->request->post['payment_g2apay_pending_status_id'];
  55. } else {
  56. $data['payment_g2apay_pending_status_id'] = $this->config->get('payment_g2apay_pending_status_id');
  57. }
  58. if (isset($this->request->post['payment_g2apay_refunded_status_id'])) {
  59. $data['payment_g2apay_refunded_status_id'] = $this->request->post['payment_g2apay_refunded_status_id'];
  60. } else {
  61. $data['payment_g2apay_refunded_status_id'] = $this->config->get('payment_g2apay_refunded_status_id');
  62. }
  63. if (isset($this->request->post['payment_g2apay_partially_refunded_status_id'])) {
  64. $data['payment_g2apay_partially_refunded_status_id'] = $this->request->post['payment_g2apay_partially_refunded_status_id'];
  65. } else {
  66. $data['payment_g2apay_partially_refunded_status_id'] = $this->config->get('payment_g2apay_partially_refunded_status_id');
  67. }
  68. $data['breadcrumbs'] = array();
  69. $data['breadcrumbs'][] = array(
  70. 'text' => $this->language->get('text_home'),
  71. 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)
  72. );
  73. $data['breadcrumbs'][] = array(
  74. 'text' => $this->language->get('text_extension'),
  75. 'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true)
  76. );
  77. $data['breadcrumbs'][] = array(
  78. 'text' => $this->language->get('heading_title'),
  79. 'href' => $this->url->link('extension/payment/g2apay', 'user_token=' . $this->session->data['user_token'], true)
  80. );
  81. $this->load->model('localisation/order_status');
  82. $data['order_statuses'] = $this->model_localisation_order_status->getOrderStatuses();
  83. $data['action'] = $this->url->link('extension/payment/g2apay', 'user_token=' . $this->session->data['user_token'], true);
  84. $data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true);
  85. if (isset($this->request->post['payment_g2apay_username'])) {
  86. $data['payment_g2apay_username'] = $this->request->post['payment_g2apay_username'];
  87. } else {
  88. $data['payment_g2apay_username'] = $this->config->get('payment_g2apay_username');
  89. }
  90. if (isset($this->request->post['payment_g2apay_secret'])) {
  91. $data['payment_g2apay_secret'] = $this->request->post['payment_g2apay_secret'];
  92. } else {
  93. $data['payment_g2apay_secret'] = $this->config->get('payment_g2apay_secret');
  94. }
  95. if (isset($this->request->post['payment_g2apay_api_hash'])) {
  96. $data['payment_g2apay_api_hash'] = $this->request->post['payment_g2apay_api_hash'];
  97. } else {
  98. $data['payment_g2apay_api_hash'] = $this->config->get('payment_g2apay_api_hash');
  99. }
  100. if (isset($this->request->post['payment_g2apay_environment'])) {
  101. $data['payment_g2apay_environment'] = $this->request->post['payment_g2apay_environment'];
  102. } else {
  103. $data['payment_g2apay_environment'] = $this->config->get('payment_g2apay_environment');
  104. }
  105. if (isset($this->request->post['payment_g2apay_total'])) {
  106. $data['payment_g2apay_total'] = $this->request->post['payment_g2apay_total'];
  107. } else {
  108. $data['payment_g2apay_total'] = $this->config->get('payment_g2apay_total');
  109. }
  110. if (isset($this->request->post['payment_g2apay_secret_token'])) {
  111. $data['payment_g2apay_secret_token'] = $this->request->post['payment_g2apay_secret_token'];
  112. } elseif ($this->config->get('payment_g2apay_secret_token')) {
  113. $data['payment_g2apay_secret_token'] = $this->config->get('payment_g2apay_secret_token');
  114. } else {
  115. $data['payment_g2apay_secret_token'] = sha1(uniqid(mt_rand(), 1));
  116. }
  117. $data['g2apay_ipn_url'] = HTTPS_CATALOG . 'index.php?route=extension/payment/g2apay/ipn&token=' . $data['payment_g2apay_secret_token'];
  118. if (isset($this->request->post['payment_g2apay_ipn_uri'])) {
  119. $data['payment_g2apay_ipn_uri'] = $this->request->post['payment_g2apay_ipn_uri'];
  120. } else {
  121. $data['payment_g2apay_ipn_uri'] = $this->config->get('payment_g2apay_ipn_uri');
  122. }
  123. $this->load->model('localisation/order_status');
  124. $data['order_statuses'] = $this->model_localisation_order_status->getOrderStatuses();
  125. if (isset($this->request->post['payment_g2apay_geo_zone_id'])) {
  126. $data['payment_g2apay_geo_zone_id'] = $this->request->post['payment_g2apay_geo_zone_id'];
  127. } else {
  128. $data['payment_g2apay_geo_zone_id'] = $this->config->get('payment_g2apay_geo_zone_id');
  129. }
  130. $this->load->model('localisation/geo_zone');
  131. $data['geo_zones'] = $this->model_localisation_geo_zone->getGeoZones();
  132. if (isset($this->request->post['payment_g2apay_status'])) {
  133. $data['payment_g2apay_status'] = $this->request->post['payment_g2apay_status'];
  134. } else {
  135. $data['payment_g2apay_status'] = $this->config->get('payment_g2apay_status');
  136. }
  137. if (isset($this->request->post['payment_g2apay_debug'])) {
  138. $data['payment_g2apay_debug'] = $this->request->post['payment_g2apay_debug'];
  139. } else {
  140. $data['payment_g2apay_debug'] = $this->config->get('payment_g2apay_debug');
  141. }
  142. if (isset($this->request->post['payment_g2apay_sort_order'])) {
  143. $data['payment_g2apay_sort_order'] = $this->request->post['payment_g2apay_sort_order'];
  144. } else {
  145. $data['payment_g2apay_sort_order'] = $this->config->get('payment_g2apay_sort_order');
  146. }
  147. $data['header'] = $this->load->controller('common/header');
  148. $data['column_left'] = $this->load->controller('common/column_left');
  149. $data['footer'] = $this->load->controller('common/footer');
  150. $this->response->setOutput($this->load->view('extension/payment/g2apay', $data));
  151. }
  152. public function order() {
  153. if ($this->config->get('payment_g2apay_status')) {
  154. $this->load->model('extension/payment/g2apay');
  155. $g2apay_order = $this->model_extension_payment_g2apay->getOrder($this->request->get['order_id']);
  156. if (!empty($g2apay_order)) {
  157. $this->load->language('extension/payment/g2apay');
  158. $g2apay_order['total_released'] = $this->model_extension_payment_g2apay->getTotalReleased($g2apay_order['g2apay_order_id']);
  159. $g2apay_order['total_formatted'] = $this->currency->format($g2apay_order['total'], $g2apay_order['currency_code'], false);
  160. $g2apay_order['total_released_formatted'] = $this->currency->format($g2apay_order['total_released'], $g2apay_order['currency_code'], false);
  161. $data['g2apay_order'] = $g2apay_order;
  162. $data['order_id'] = $this->request->get['order_id'];
  163. $data['user_token'] = $this->request->get['user_token'];
  164. return $this->load->view('extension/payment/g2apay_order', $data);
  165. }
  166. }
  167. }
  168. public function refund() {
  169. $this->load->language('extension/payment/g2apay');
  170. $json = array();
  171. if (isset($this->request->post['order_id']) && !empty($this->request->post['order_id'])) {
  172. $this->load->model('extension/payment/g2apay');
  173. $g2apay_order = $this->model_extension_payment_g2apay->getOrder($this->request->post['order_id']);
  174. $refund_response = $this->model_extension_payment_g2apay->refund($g2apay_order, $this->request->post['amount']);
  175. $this->model_extension_payment_g2apay->logger($refund_response);
  176. if ($refund_response == 'ok') {
  177. $this->model_extension_payment_g2apay->addTransaction($g2apay_order['g2apay_order_id'], 'refund', $this->request->post['amount'] * -1);
  178. $total_refunded = $this->model_extension_payment_g2apay->getTotalRefunded($g2apay_order['g2apay_order_id']);
  179. $total_released = $this->model_extension_payment_g2apay->getTotalReleased($g2apay_order['g2apay_order_id']);
  180. if ($total_released <= 0 && $g2apay_order['release_status'] == 1) {
  181. $this->model_extension_payment_g2apay->updateRefundStatus($g2apay_order['g2apay_order_id'], 1);
  182. $refund_status = 1;
  183. $json['msg'] = $this->language->get('text_refund_ok_order');
  184. } else {
  185. $refund_status = 0;
  186. $json['msg'] = $this->language->get('text_refund_ok');
  187. }
  188. $json['data'] = array();
  189. $json['data']['date_added'] = date("Y-m-d H:i:s");
  190. $json['data']['amount'] = $this->currency->format(($this->request->post['amount'] * -1), $g2apay_order['currency_code'], false);
  191. $json['data']['total_released'] = (float)$total_released;
  192. $json['data']['total_refunded'] = (float)$total_refunded;
  193. $json['data']['refund_status'] = $refund_status;
  194. $json['error'] = false;
  195. } else {
  196. $json['error'] = true;
  197. $json['msg'] = 'Unable to refund: ' . $refund_response;
  198. }
  199. } else {
  200. $json['error'] = true;
  201. $json['msg'] = 'Missing data';
  202. }
  203. $this->response->addHeader('Content-Type: application/json');
  204. $this->response->setOutput(json_encode($json));
  205. }
  206. public function install() {
  207. $this->load->model('extension/payment/g2apay');
  208. $this->model_extension_payment_g2apay->install();
  209. }
  210. public function uninstall() {
  211. $this->load->model('extension/payment/g2apay');
  212. $this->model_extension_payment_g2apay->uninstall();
  213. }
  214. protected function validate() {
  215. if (!$this->user->hasPermission('modify', 'extension/payment/g2apay')) {
  216. $this->error['warning'] = $this->language->get('error_permission');
  217. }
  218. if (!$this->request->post['payment_g2apay_username']) {
  219. $this->error['username'] = $this->language->get('error_username');
  220. }
  221. if (!$this->request->post['payment_g2apay_secret']) {
  222. $this->error['secret'] = $this->language->get('error_secret');
  223. }
  224. if (!$this->request->post['payment_g2apay_api_hash']) {
  225. $this->error['api_hash'] = $this->language->get('error_api_hash');
  226. }
  227. return !$this->error;
  228. }
  229. }