1: | <?php
|
2: | namespace Opencart\Catalog\Controller\Api\Sale;
|
3: | |
4: | |
5: | |
6: | |
7: |
|
8: | class PaymentMethod extends \Opencart\System\Engine\Controller {
|
9: | |
10: | |
11: |
|
12: | public function index(): void {
|
13: | $this->load->language('api/sale/payment_method');
|
14: |
|
15: | $json = [];
|
16: |
|
17: | if (!$this->cart->hasProducts() && empty($this->session->data['vouchers'])) {
|
18: | $json['error'] = $this->language->get('error_product');
|
19: | }
|
20: |
|
21: | if ($this->config->get('config_checkout_payment_address') && !isset($this->session->data['payment_address'])) {
|
22: | $json['error'] = $this->language->get('error_payment_address');
|
23: | }
|
24: |
|
25: | if (!$json) {
|
26: | $payment_address = [];
|
27: |
|
28: | if (isset($this->session->data['payment_address'])) {
|
29: | $payment_address = $this->session->data['payment_address'];
|
30: | } elseif ($this->config->get('config_checkout_shipping_address') && isset($this->session->data['shipping_address'])) {
|
31: | $payment_address = $this->session->data['shipping_address'];
|
32: | }
|
33: |
|
34: | $this->load->model('checkout/payment_method');
|
35: |
|
36: | $payment_methods = $this->model_checkout_payment_method->getMethods($payment_address);
|
37: |
|
38: | if ($payment_methods) {
|
39: | $json['payment_methods'] = $this->session->data['payment_methods'] = $payment_methods;
|
40: | } else {
|
41: | $json['error'] = $this->language->get('error_no_payment');
|
42: | }
|
43: | }
|
44: |
|
45: | $this->response->addHeader('Content-Type: application/json');
|
46: | $this->response->setOutput(json_encode($json));
|
47: | }
|
48: |
|
49: | |
50: | |
51: | |
52: | |
53: |
|
54: | public function save(): void {
|
55: | $this->load->language('api/sale/payment_method');
|
56: |
|
57: | $json = [];
|
58: |
|
59: |
|
60: | if ($this->config->get('config_checkout_payment_address') && !isset($this->session->data['payment_address'])) {
|
61: | $json['error'] = $this->language->get('error_payment_address');
|
62: | }
|
63: |
|
64: |
|
65: | if (isset($this->request->post['payment_method']) && isset($this->session->data['payment_methods'])) {
|
66: | $payment = explode('.', $this->request->post['payment_method']);
|
67: |
|
68: | if (!isset($payment[0]) || !isset($payment[1]) || !isset($this->session->data['payment_methods'][$payment[0]]['option'][$payment[1]])) {
|
69: | $json['error'] = $this->language->get('error_payment_method');
|
70: | }
|
71: | } else {
|
72: | $json['error'] = $this->language->get('error_payment_method');
|
73: | }
|
74: |
|
75: | if (!$json) {
|
76: | $this->session->data['payment_method'] = $this->session->data['payment_methods'][$payment[0]]['option'][$payment[1]];
|
77: |
|
78: | $json['success'] = $this->language->get('text_success');
|
79: | }
|
80: |
|
81: | $this->response->addHeader('Content-Type: application/json');
|
82: | $this->response->setOutput(json_encode($json));
|
83: | }
|
84: | }
|
85: | |