1: <?php
2: namespace Opencart\Catalog\Model\Checkout;
3: /**
4: * Class PaymentMethod
5: *
6: * @package Opencart\Catalog\Model\Checkout
7: */
8: class PaymentMethod extends \Opencart\System\Engine\Controller {
9: /**
10: * Get Methods
11: *
12: * @param array<string, mixed> $payment_address
13: *
14: * @return array<string, mixed>
15: */
16: public function getMethods(array $payment_address = []): array {
17: $method_data = [];
18:
19: $this->load->model('setting/extension');
20:
21: $results = $this->model_setting_extension->getExtensionsByType('payment');
22:
23: foreach ($results as $result) {
24: if ($this->config->get('payment_' . $result['code'] . '_status')) {
25: $this->load->model('extension/' . $result['extension'] . '/payment/' . $result['code']);
26:
27: if (is_callable([$this->{'model_extension_' . $result['extension'] . '_payment_' . $result['code']}, 'getMethods'])) {
28: $payment_methods = $this->{'model_extension_' . $result['extension'] . '_payment_' . $result['code']}->getMethods($payment_address);
29:
30: if ($payment_methods) {
31: $method_data[$result['code']] = $payment_methods;
32: }
33: }
34: }
35: }
36:
37: $sort_order = [];
38:
39: foreach ($method_data as $key => $value) {
40: $sort_order[$key] = $value['sort_order'];
41: }
42:
43: array_multisort($sort_order, SORT_ASC, $method_data);
44:
45: return $method_data;
46: }
47: }
48: