From ca5b0e7463daee86f8febadded8099212405d2ef Mon Sep 17 00:00:00 2001 From: jineshpv Date: Fri, 10 Nov 2023 15:11:17 +0530 Subject: [PATCH] Enhanced Compatibility: Compatible with PHP 8.1 & Opencart 4.0.2.x (tested with v4.0.2.3), Updated Mastercard API Version to 73, Added Payment Capture Option, Added Refund Option, Added Partial Refund Option --- .gitattributes | 3 - .gitignore | 2 - CHANGELOG.md | 8 + Makefile | 3 +- README.md | 83 ++ .../payment/mpgs_hosted_checkout.php | 481 -------- .../payment/mpgs_hosted_checkout.php | 60 - .../payment/mpgs_hosted_checkout.twig | 365 ------ .../payment/mpgs_hosted_checkout.php | 1090 ----------------- .../extension/payment/mpgs_3dsecure_form.twig | 48 - .../payment/mpgs_hosted_checkout.twig | 54 - .../payment/mpgs_hosted_session.twig | 370 ------ composer.json | 3 + docs/3ds.png | Bin 0 -> 45673 bytes docs/capture.png | Bin 0 -> 47192 bytes docs/confirm.png | Bin 0 -> 72967 bytes docs/embeded_page.png | Bin 0 -> 67973 bytes docs/gateway_selection.png | Bin 0 -> 82159 bytes docs/redirect_page.png | Bin 0 -> 93245 bytes docs/refunds.png | Bin 0 -> 47582 bytes src/admin/controller/payment/mastercard.php | 881 +++++++++++++ .../language/en-gb/payment/mastercard.php | 33 +- src/admin/model/payment/mastercard.php | 160 +++ .../admin}/view/image/payment/mastercard.png | Bin .../admin/view/javascript}/custom.js | 71 +- src/admin/view/stylesheet/mastercard.css | 37 + .../view/template/payment/mastercard.twig | 366 ++++++ .../template/payment/mastercard_order.twig | 314 +++++ .../payment/mgps_hosted_checkout_mail.twig | 49 + src/catalog/controller/payment/mastercard.php | 944 ++++++++++++++ .../language/en-gb/payment/mastercard.php | 127 +- .../catalog/model/payment/mastercard.php | 132 +- src/catalog/view/javascript/mgps.js | 36 + .../view/stylesheet/embedded-payment-form.css | 41 + .../payment/mgps_hosted_authorize_mail.twig | 43 + .../payment/mgps_hosted_checkout.twig | 121 ++ src/install.json | 7 + 37 files changed, 3348 insertions(+), 2584 deletions(-) delete mode 100644 .gitattributes delete mode 100644 .gitignore create mode 100644 CHANGELOG.md create mode 100644 README.md delete mode 100644 admin/controller/extension/payment/mpgs_hosted_checkout.php delete mode 100644 admin/model/extension/payment/mpgs_hosted_checkout.php delete mode 100644 admin/view/template/extension/payment/mpgs_hosted_checkout.twig delete mode 100644 catalog/controller/extension/payment/mpgs_hosted_checkout.php delete mode 100644 catalog/view/theme/default/template/extension/payment/mpgs_3dsecure_form.twig delete mode 100644 catalog/view/theme/default/template/extension/payment/mpgs_hosted_checkout.twig delete mode 100644 catalog/view/theme/default/template/extension/payment/mpgs_hosted_session.twig create mode 100644 composer.json create mode 100644 docs/3ds.png create mode 100644 docs/capture.png create mode 100644 docs/confirm.png create mode 100644 docs/embeded_page.png create mode 100644 docs/gateway_selection.png create mode 100644 docs/redirect_page.png create mode 100644 docs/refunds.png create mode 100755 src/admin/controller/payment/mastercard.php rename admin/language/en-gb/extension/payment/mpgs_hosted_checkout.php => src/admin/language/en-gb/payment/mastercard.php (69%) mode change 100644 => 100755 create mode 100755 src/admin/model/payment/mastercard.php rename {admin => src/admin}/view/image/payment/mastercard.png (100%) rename {admin/view/javascript/mpgs-hosted-checkout => src/admin/view/javascript}/custom.js (55%) mode change 100644 => 100755 create mode 100755 src/admin/view/stylesheet/mastercard.css create mode 100755 src/admin/view/template/payment/mastercard.twig create mode 100755 src/admin/view/template/payment/mastercard_order.twig create mode 100755 src/admin/view/template/payment/mgps_hosted_checkout_mail.twig create mode 100755 src/catalog/controller/payment/mastercard.php rename catalog/language/en-gb/extension/payment/mpgs_hosted_checkout.php => src/catalog/language/en-gb/payment/mastercard.php (97%) mode change 100644 => 100755 rename catalog/model/extension/payment/mpgs_hosted_checkout.php => src/catalog/model/payment/mastercard.php (64%) mode change 100644 => 100755 create mode 100755 src/catalog/view/javascript/mgps.js create mode 100755 src/catalog/view/stylesheet/embedded-payment-form.css create mode 100755 src/catalog/view/template/payment/mgps_hosted_authorize_mail.twig create mode 100755 src/catalog/view/template/payment/mgps_hosted_checkout.twig create mode 100755 src/install.json diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 7aec5b1..0000000 --- a/.gitattributes +++ /dev/null @@ -1,3 +0,0 @@ -.gitattributes export-ignore -.gitignore export-ignore -Makefile export-ignore diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 241e560..0000000 --- a/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* - diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..9ee4f6c --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,8 @@ +# Changelog +All notable changes to this project will be documented in this file. + +## [1.3.0] - 2023-11-07 +### Changed +- Compatible with PHP 8.1 & Opencart 4.0.2.x (tested with v4.0.2.3). +- Updated Mastercard API Version to 73. +- Added Refund, Partail Refund Options. \ No newline at end of file diff --git a/Makefile b/Makefile index b2c7ec0..62b1ad1 100644 --- a/Makefile +++ b/Makefile @@ -1,2 +1,3 @@ all: - git archive HEAD -o ./opencart-mastercard.ocmod.zip + @echo "Creating package: Mastercard.ocmod.zip" + @git archive HEAD:src --format=zip -o mastercard.ocmod.zip diff --git a/README.md b/README.md new file mode 100644 index 0000000..b8a4ab4 --- /dev/null +++ b/README.md @@ -0,0 +1,83 @@ +# Mastercard Payment Gateway Services for OpenCart + +This plugin adds Mastercard Payment Gateway Services as a payment option on your OpenCart checkout page. + +## System Requirments + +The latest release of the plugin has the following system requirements: + +- PHP version 8.0 or higher is mandatory. +- OpenCart version 4.0.2.3 or later is required. However, we strongly recommend using the latest available version of OpenCart for optimal performance. + +## Documentation + +Click here to access the documentation: https://mpgs.fingent.wiki/target/opencart-mastercard-payment-gateway-services/installation/ + +## Support + +For customer support: https://mpgsfgs.atlassian.net/servicedesk/customer/portals + +## Compatibility + +Version v1.3.0 +- Enhanced Compatibility: Compatible with PHP 8.1 & Opencart 4.0.2.x (tested with v4.0.2.3). +- Updated Mastercard API Version to 73. +- Added Payment Capture Option. +- Added Refund Option. +- Added Partial Refund Option. + +## Installation +1. Make a backup of your site before applying new mods etc. +2. Go to Admin → Extensions → Installer and upload the downloaded .ocmod.zip file. +3. After uploading the OpenCart Module, you'll find it in the 'Installed Extensions' list. Simply use the '+' button to install the module. +4. Navigate to the "Payments" section by going to Admin → Extensions and choosing "Payments" from the extension type dropdown. +5. Search for the extension labeled "Mastercard Payment Extension" in the list and activate the module installation by clicking the plus symbol. + +## Configuration +Please proceed with the following actions to configure the payment method: + +1. Log in to your OpenCart administration application. +2. Go to Extension > Extensions. +3. From the extension type filter, choose Payments. +4. Scroll down until you find the 'Mastercard Payment Gateway Services' extension, and click on the Edit button. +5. Fill up the forms with all required fields. +6. After completing all required fields, click the 'Save' button to save the configurations. Once the form is successfully saved, it will redirect you to the 'Extensions' page. + + +## Hosted Payments + +### Payment Gateway Selection + +Choose 'Pay Using Mastercard Payment Gateway Services' from the list. + +![Hosted Payments Button](docs/gateway_selection.png "Payment Gateway Selection") + +Clicking the 'Confirm Order' button triggers the secure payment form, where customers can safely enter their card information. + +![Hosted Payments Button](docs/confirm.png "Confirm Order") + + +### Redirect Payment Page + +Users will be directed to a secure page to enter their card details. + +![Hosted Payments Checkout View](docs/redirect_page.png "Redirect Page View") + + +### Embedded Payment Form + +A secure payment form is presented directly on the checkout page, allowing customers to input their card details and submit the form to place an order. + +![Embedded Payments Checkout View](docs/embeded_page.png "Embedded Payments Checkout View") + +### Capture Transaction + +To capture the order, navigate to the 'Mastercard Payment Gateway Services' within the 'History' section on the order details page, and then click the "Capture" button. + +![Embedded Payments Checkout View](docs/capture.png "Mastercard Capture Order") + +### Refund / Partial Refund Transactions + +When the order has been captured successfully, the "Refund" and "Partial Refund" buttons will be visible to the admin on the order details page. + +![Embedded Payments Checkout View](docs/refunds.png "Embedded Payments Checkout View") \ No newline at end of file diff --git a/admin/controller/extension/payment/mpgs_hosted_checkout.php b/admin/controller/extension/payment/mpgs_hosted_checkout.php deleted file mode 100644 index 03bc91f..0000000 --- a/admin/controller/extension/payment/mpgs_hosted_checkout.php +++ /dev/null @@ -1,481 +0,0 @@ -load->language('extension/payment/mpgs_hosted_checkout'); - $this->load->model('extension/payment/mpgs_hosted_checkout'); - - $this->document->setTitle($this->language->get('heading_title')); - - $this->load->model('setting/setting'); - - if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { - - $this->model_setting_setting->editSetting('payment_mpgs_hosted_checkout', $this->request->post); - - $this->session->data['success'] = $this->language->get('text_success'); - - $this->response->redirect($this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true)); - } - - $this->document->addScript('view/javascript/mpgs-hosted-checkout/custom.js'); - - if (isset($this->error['live_merchant_id'])) { - $data['error_live_merchant_id'] = $this->error['live_merchant_id']; - } else { - $data['error_live_merchant_id'] = ''; - } - - if (isset($this->error['live_api_password'])) { - $data['error_live_api_password'] = $this->error['live_api_password']; - } else { - $data['error_live_api_password'] = ''; - } - - if (isset($this->error['test_merchant_id'])) { - $data['error_test_merchant_id'] = $this->error['test_merchant_id']; - } else { - $data['error_test_merchant_id'] = ''; - } - - if (isset($this->error['test_api_password'])) { - $data['error_test_api_password'] = $this->error['test_api_password']; - } else { - $data['error_test_api_password'] = ''; - } - - if (isset($this->error['credentials_validation'])) { - $data['error_credentials_validation'] = $this->error['credentials_validation']; - } else { - $data['error_credentials_validation'] = ''; - } - - $data['breadcrumbs'] = []; - - $data['breadcrumbs'][] = [ - 'text' => $this->language->get('text_home'), - 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true) - ]; - - $data['breadcrumbs'][] = [ - 'text' => $this->language->get('text_extension'), - 'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true) - ]; - - $data['breadcrumbs'][] = [ - 'text' => $this->language->get('heading_title'), - 'href' => $this->url->link('extension/payment/mpgs_hosted_checkout', 'user_token=' . $this->session->data['user_token'], true) - ]; - - $data['action'] = $this->url->link('extension/payment/mpgs_hosted_checkout', 'user_token=' . $this->session->data['user_token'], true); - $data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true); - - $data['module_version'] = self::MODULE_VERSION; - $data['api_version'] = self::API_VERSION; - - if (isset($this->request->post['payment_mpgs_hosted_checkout_status'])) { - $data['payment_mpgs_hosted_checkout_status'] = $this->request->post['payment_mpgs_hosted_checkout_status']; - } else { - $data['payment_mpgs_hosted_checkout_status'] = $this->config->get('payment_mpgs_hosted_checkout_status'); - } - - if (isset($this->request->post['payment_mpgs_hosted_checkout_initial_transaction'])) { - $data['payment_mpgs_hosted_checkout_initial_transaction'] = $this->request->post['payment_mpgs_hosted_checkout_initial_transaction']; - } else { - $data['payment_mpgs_hosted_checkout_initial_transaction'] = $this->config->get('payment_mpgs_hosted_checkout_initial_transaction') ? : 'authorize'; - } - - if (isset($this->request->post['payment_mpgs_hosted_checkout_title'])) { - $data['payment_mpgs_hosted_checkout_title'] = $this->request->post['payment_mpgs_hosted_checkout_title']; - } else { - $data['payment_mpgs_hosted_checkout_title'] = $this->config->get('payment_mpgs_hosted_checkout_title') ? : 'Pay using Mastercard Payment Gateway Services'; - } - - if (isset($this->request->post['payment_mpgs_hosted_checkout_live_merchant_id'])) { - $data['payment_mpgs_hosted_checkout_live_merchant_id'] = $this->request->post['payment_mpgs_hosted_checkout_live_merchant_id']; - } else { - $data['payment_mpgs_hosted_checkout_live_merchant_id'] = $this->config->get('payment_mpgs_hosted_checkout_live_merchant_id'); - } - - if (isset($this->request->post['payment_mpgs_hosted_checkout_live_api_password'])) { - $data['payment_mpgs_hosted_checkout_live_api_password'] = $this->request->post['payment_mpgs_hosted_checkout_live_api_password']; - } else { - $data['payment_mpgs_hosted_checkout_live_api_password'] = $this->config->get('payment_mpgs_hosted_checkout_live_api_password'); - } - - if (isset($this->request->post['payment_mpgs_hosted_checkout_test_merchant_id'])) { - $data['payment_mpgs_hosted_checkout_test_merchant_id'] = $this->request->post['payment_mpgs_hosted_checkout_test_merchant_id']; - } else { - $data['payment_mpgs_hosted_checkout_test_merchant_id'] = $this->config->get('payment_mpgs_hosted_checkout_test_merchant_id'); - } - - if (isset($this->request->post['payment_mpgs_hosted_checkout_test_api_password'])) { - $data['payment_mpgs_hosted_checkout_test_api_password'] = $this->request->post['payment_mpgs_hosted_checkout_test_api_password']; - } else { - $data['payment_mpgs_hosted_checkout_test_api_password'] = $this->config->get('payment_mpgs_hosted_checkout_test_api_password'); - } - - if (isset($this->request->post['payment_mpgs_hosted_checkout_live_notification_secret'])) { - $data['payment_mpgs_hosted_checkout_live_notification_secret'] = $this->request->post['payment_mpgs_hosted_checkout_live_notification_secret']; - } else { - $data['payment_mpgs_hosted_checkout_live_notification_secret'] = $this->config->get('payment_mpgs_hosted_checkout_live_notification_secret'); - } - - if (isset($this->request->post['payment_mpgs_hosted_checkout_test_notification_secret'])) { - $data['payment_mpgs_hosted_checkout_test_notification_secret'] = $this->request->post['payment_mpgs_hosted_checkout_test_notification_secret']; - } else { - $data['payment_mpgs_hosted_checkout_test_notification_secret'] = $this->config->get('payment_mpgs_hosted_checkout_test_notification_secret'); - } - - if (isset($this->request->post['payment_mpgs_hosted_checkout_api_gateway'])) { - $data['payment_mpgs_hosted_checkout_api_gateway'] = $this->request->post['payment_mpgs_hosted_checkout_api_gateway']; - } else { - $data['payment_mpgs_hosted_checkout_api_gateway'] = $this->config->get('payment_mpgs_hosted_checkout_api_gateway') ? : 'api_eu'; - } - - if (isset($this->request->post['payment_mpgs_hosted_checkout_api_gateway_other'])) { - $data['payment_mpgs_hosted_checkout_api_gateway_other'] = $this->request->post['payment_mpgs_hosted_checkout_api_gateway_other']; - } else { - $data['payment_mpgs_hosted_checkout_api_gateway_other'] = $this->config->get('payment_mpgs_hosted_checkout_api_gateway_other'); - } - - if (isset($this->request->post['payment_mpgs_hosted_checkout_test'])) { - $data['payment_mpgs_hosted_checkout_test'] = $this->request->post['payment_mpgs_hosted_checkout_test']; - } else { - $data['payment_mpgs_hosted_checkout_test'] = $this->config->get('payment_mpgs_hosted_checkout_test'); - } - - if (isset($this->request->post['payment_mpgs_hosted_checkout_integration_model'])) { - $data['payment_mpgs_hosted_checkout_integration_model'] = $this->request->post['payment_mpgs_hosted_checkout_integration_model']; - } else { - $data['payment_mpgs_hosted_checkout_integration_model'] = $this->config->get('payment_mpgs_hosted_checkout_integration_model') ? : 'hostedcheckout'; - } - - if (isset($this->request->post['payment_mpgs_hosted_checkout_hc_type'])) { - $data['payment_mpgs_hosted_checkout_hc_type'] = $this->request->post['payment_mpgs_hosted_checkout_hc_type']; - } else { - $data['payment_mpgs_hosted_checkout_hc_type'] = $this->config->get('payment_mpgs_hosted_checkout_hc_type') ? : 'redirect'; - } - - if (isset($this->request->post['payment_mpgs_hosted_checkout_saved_cards'])) { - $data['payment_mpgs_hosted_checkout_saved_cards'] = $this->request->post['payment_mpgs_hosted_checkout_saved_cards']; - } else { - $data['payment_mpgs_hosted_checkout_saved_cards'] = ($this->config->get('payment_mpgs_hosted_checkout_saved_cards') === '0') ? '0' : '1'; - } - - if (isset($this->request->post['payment_mpgs_hosted_checkout_send_line_items'])) { - $data['payment_mpgs_hosted_checkout_send_line_items'] = $this->request->post['payment_mpgs_hosted_checkout_send_line_items']; - } else { - $data['payment_mpgs_hosted_checkout_send_line_items'] = $this->config->get('payment_mpgs_hosted_checkout_send_line_items'); - } - - if (isset($this->request->post['payment_mpgs_hosted_checkout_sort_order'])) { - $data['payment_mpgs_hosted_checkout_sort_order'] = $this->request->post['payment_mpgs_hosted_checkout_sort_order']; - } else { - $data['payment_mpgs_hosted_checkout_sort_order'] = $this->config->get('payment_mpgs_hosted_checkout_sort_order'); - } - - if (isset($this->request->post['payment_mpgs_hosted_checkout_debug'])) { - $data['payment_mpgs_hosted_checkout_debug'] = $this->request->post['payment_mpgs_hosted_checkout_debug']; - } else { - $data['payment_mpgs_hosted_checkout_debug'] = $this->config->get('payment_mpgs_hosted_checkout_debug'); - } - - if (isset($this->request->post['payment_mpgs_hosted_checkout_order_id_prefix'])) { - $data['payment_mpgs_hosted_checkout_order_id_prefix'] = $this->request->post['payment_mpgs_hosted_checkout_order_id_prefix']; - } else { - $data['payment_mpgs_hosted_checkout_order_id_prefix'] = $this->config->get('payment_mpgs_hosted_checkout_order_id_prefix'); - } - - if (isset($this->request->post['payment_mpgs_hosted_checkout_approved_status_id'])) { - $data['payment_mpgs_hosted_checkout_approved_status_id'] = $this->request->post['payment_mpgs_hosted_checkout_approved_status_id']; - } else { - $data['payment_mpgs_hosted_checkout_approved_status_id'] = $this->config->get('payment_mpgs_hosted_checkout_approved_status_id') ? : '2'; - } - - if (isset($this->request->post['payment_mpgs_hosted_checkout_declined_status_id'])) { - $data['payment_mpgs_hosted_checkout_declined_status_id'] = $this->request->post['payment_mpgs_hosted_checkout_declined_status_id']; - } else { - $data['payment_mpgs_hosted_checkout_declined_status_id'] = $this->config->get('payment_mpgs_hosted_checkout_declined_status_id') ? : '8'; - } - - if (isset($this->request->post['payment_mpgs_hosted_checkout_pending_status_id'])) { - $data['payment_mpgs_hosted_checkout_pending_status_id'] = $this->request->post['payment_mpgs_hosted_checkout_pending_status_id']; - } else { - $data['payment_mpgs_hosted_checkout_pending_status_id'] = $this->config->get('payment_mpgs_hosted_checkout_pending_status_id') ? : '1'; - } - - if (isset($this->request->post['payment_mpgs_hosted_checkout_risk_review_status_id'])) { - $data['payment_mpgs_hosted_checkout_risk_review_status_id'] = $this->request->post['payment_mpgs_hosted_checkout_risk_review_status_id']; - } else { - $data['payment_mpgs_hosted_checkout_risk_review_status_id'] = $this->config->get('payment_mpgs_hosted_checkout_risk_review_status_id') ? : '1'; - } - - if (isset($this->request->post['payment_mpgs_hosted_checkout_risk_declined_status_id'])) { - $data['payment_mpgs_hosted_checkout_risk_declined_status_id'] = $this->request->post['payment_mpgs_hosted_checkout_risk_declined_status_id']; - } else { - $data['payment_mpgs_hosted_checkout_risk_declined_status_id'] = $this->config->get('payment_mpgs_hosted_checkout_risk_declined_status_id') ? : '8'; - } - - $this->load->model('localisation/order_status'); - - $data['order_statuses'] = $this->model_localisation_order_status->getOrderStatuses(); - - $data['header'] = $this->load->controller('common/header'); - $data['column_left'] = $this->load->controller('common/column_left'); - $data['footer'] = $this->load->controller('common/footer'); - - $this->response->setOutput($this->load->view('extension/payment/mpgs_hosted_checkout', $data)); - } - - /** - * @return bool - */ - protected function validate() - { - if (!$this->user->hasPermission('modify', 'extension/payment/mpgs_hosted_checkout')) { - $this->error['warning'] = $this->language->get('error_permission'); - } - - if ($this->request->post['payment_mpgs_hosted_checkout_test']) { - if (!$this->request->post['payment_mpgs_hosted_checkout_test_merchant_id']) { - $this->error['test_merchant_id'] = $this->language->get('error_test_merchant_id'); - } elseif (!empty($this->request->post['payment_mpgs_hosted_checkout_test_merchant_id'])) { - $testMerchantId = $this->request->post['payment_mpgs_hosted_checkout_test_merchant_id']; - if (stripos($testMerchantId, 'TEST') === FALSE) { - $this->error['test_merchant_id'] = $this->language->get('error_test_merchant_id_prefix'); - } - } - if (!$this->request->post['payment_mpgs_hosted_checkout_test_api_password']) { - $this->error['test_api_password'] = $this->language->get('error_test_api_password'); - } - } else { - if (!$this->request->post['payment_mpgs_hosted_checkout_live_merchant_id']) { - $this->error['live_merchant_id'] = $this->language->get('error_live_merchant_id'); - } elseif (!empty($this->request->post['payment_mpgs_hosted_checkout_live_merchant_id'])) { - $liveMerchantId = $this->request->post['payment_mpgs_hosted_checkout_live_merchant_id']; - if (stripos($liveMerchantId, 'TEST') !== FALSE) { - $this->error['live_merchant_id'] = $this->language->get('error_live_merchant_id_prefix'); - } - } - if (!$this->request->post['payment_mpgs_hosted_checkout_live_api_password']) { - $this->error['live_api_password'] = $this->language->get('error_live_api_password'); - } - } - - if (!$this->error) { - $response = $this->paymentOptionsInquiry(); - - if (isset($response['result']) && $response['result'] === 'ERROR') { - if (isset($response['error']['explanation']) && $response['error']['explanation'] == 'Invalid credentials.') { - $this->error['credentials_validation'] = $this->language->get('error_credentials_validation'); - } else { - $this->error['credentials_validation'] = sprintf('%s: %s', $response['error']['cause'], $response['error']['explanation']); - } - } - } - - return !$this->error; - } - - public function install() - { - $this->load->model('extension/payment/mpgs_hosted_checkout'); - $this->model_extension_payment_mpgs_hosted_checkout->createTable(); - $this->hook_events(); - } - - public function uninstall() - { - $this->load->model('extension/payment/mpgs_hosted_checkout'); - $this->model_extension_payment_mpgs_hosted_checkout->dropTable(); - $this->model_extension_payment_mpgs_hosted_checkout->removeEvents(); - } - - public function hook_events() - { - $this->load->model('extension/payment/mpgs_hosted_checkout'); - - $this->model_extension_payment_mpgs_hosted_checkout->removeEvents(); - $this->model_extension_payment_mpgs_hosted_checkout->addEvents(); - } - - public function paymentOptionsInquiry() - { - $uri = $this->getApiUri() . '/paymentOptionsInquiry'; - $response = $this->apiRequest('GET', $uri); - - return $response; - } - - /** - * @param $apiGateway - * @return string - */ - public function getGatewayUri($apiGateway) - { - $gatewayUrl = ''; - if ($apiGateway === self::API_AMERICA) { - $gatewayUrl = 'https://na-gateway.mastercard.com/'; - } elseif ($apiGateway === self::API_EUROPE) { - $gatewayUrl = 'https://eu-gateway.mastercard.com/'; - } elseif ($apiGateway === self::API_ASIA) { - $gatewayUrl = 'https://ap-gateway.mastercard.com/'; - } elseif ($apiGateway === self::API_MTF) { - $gatewayUrl = 'https://mtf.gateway.mastercard.com/'; - } elseif ($apiGateway === self::API_OTHER) { - $url = $this->config->get('payment_mpgs_hosted_checkout_api_gateway_other'); - if (!empty($url)) { - if (substr($url, -1) !== '/') { - $url = $url . '/'; - } - } - $gatewayUrl = $url; - } - - return $gatewayUrl; - } - - /** - * @return string - */ - public function getApiUri() - { - $apiGateway = $this->request->post['payment_mpgs_hosted_checkout_api_gateway']; - return $this->getGatewayUri($apiGateway) . 'api/rest/version/' . self::API_VERSION . '/merchant/' . $this->getMerchantId(); - } - - /** - * @return mixed - */ - public function getMerchantId() - { - if ($this->request->post['payment_mpgs_hosted_checkout_test']) { - return $this->request->post['payment_mpgs_hosted_checkout_test_merchant_id']; - } else { - return $this->request->post['payment_mpgs_hosted_checkout_live_merchant_id']; - } - } - - /** - * @return mixed - */ - public function getApiPassword() - { - if ($this->request->post['payment_mpgs_hosted_checkout_test']) { - return $this->request->post['payment_mpgs_hosted_checkout_test_api_password']; - } else { - return $this->request->post['payment_mpgs_hosted_checkout_live_api_password']; - } - } - - /** - * @return mixed - */ - public function isTestModeEnabled() - { - return $this->request->post['payment_mpgs_hosted_checkout_test']; - } - - /** - * @return bool - */ - public function isDebugModeEnabled() - { - if ($this->isTestModeEnabled()) { - return $this->request->post['payment_mpgs_hosted_checkout_debug'] === '1'; - } - return false; - } - - /** - * @param $method - * @param $uri - * @param array $data - * @return mixed - */ - public function apiRequest($method, $uri, $data = []) - { - $userId = 'merchant.' . $this->getMerchantId(); - - $requestLog = 'Send Request: "' . $method . ' ' . $uri . '" '; - if (!empty($data)) { - $requestLog .= json_encode(['request' => $data]); - } - $this->log($requestLog); - - $curl = curl_init(); - switch ($method){ - case 'POST': - curl_setopt($curl, CURLOPT_POST, 1); - if (!empty($data)) { - curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); - } - break; - case 'PUT': - curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT'); - if (!empty($data)) { - curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); - } - break; - default: - break; - } - - curl_setopt($curl, CURLOPT_URL, $uri); - curl_setopt($curl, CURLOPT_USERPWD, $userId . ':' . $this->getApiPassword()); - curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); - - $output = curl_exec($curl); - $httpResponseCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); - curl_close($curl); - - $responseText = 'Receive Response: "' . $httpResponseCode . '" for the request: "' . $method . ' ' . $uri . '" '; - $responseText .= json_encode(['response' => json_decode($output)]); - $this->log($responseText); - - return json_decode($output, true); - } - - /** - * @param $message - */ - public function log($message) - { - if ($this->isDebugModeEnabled()) { - $this->debugLog = new Log(self::DEBUG_LOG_FILENAME); - $this->debugLog->write($message); - } - } -} diff --git a/admin/model/extension/payment/mpgs_hosted_checkout.php b/admin/model/extension/payment/mpgs_hosted_checkout.php deleted file mode 100644 index f001622..0000000 --- a/admin/model/extension/payment/mpgs_hosted_checkout.php +++ /dev/null @@ -1,60 +0,0 @@ -db->query(" - CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "mpgs_hpf_token` ( - `hpf_token_id` INT(11) unsigned NOT NULL AUTO_INCREMENT, - `customer_id` INT(11) NOT NULL, - `token` VARCHAR(50) NOT NULL, - `created_at` DATETIME NOT NULL, - PRIMARY KEY (`hpf_token_id`), - KEY `customer_id` (`customer_id`) - ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; - "); - } - - public function dropTable() - { - $this->db->query("DROP TABLE IF EXISTS `" . DB_PREFIX . "mpgs_hpf_token`"); - } - - public function addEvents() - { - $this->load->model('setting/event'); - - $events = [ - 'catalog/controller/checkout/checkout/before' => 'extension/payment/mpgs_hosted_checkout/init', - ]; - - foreach ($events as $trigger => $action) { - $this->model_setting_event->addEvent('payment_mpgs_hosted_checkout', $trigger, $action, 1, 0); - } - } - - public function removeEvents() - { - $this->load->model('setting/event'); - $this->model_setting_event->deleteEventByCode('payment_mpgs_hosted_checkout'); - } -} diff --git a/admin/view/template/extension/payment/mpgs_hosted_checkout.twig b/admin/view/template/extension/payment/mpgs_hosted_checkout.twig deleted file mode 100644 index 944d133..0000000 --- a/admin/view/template/extension/payment/mpgs_hosted_checkout.twig +++ /dev/null @@ -1,365 +0,0 @@ -{# - Copyright (c) 2020 Mastercard - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - #} - -{{ header }}{{ column_left }} -
- -
- {% if error_warning %} -
{{ error_warning }} - -
- {% endif %} - {% if error_credentials_validation %} -
{{ error_credentials_validation }} - -
- {% endif %} -
-
-

{{ text_edit }}

-
-
- {% if retrieve_success == 1 %} -
{{ text_retrieve }}
- {% endif %} -
-
{{ entry_module_version }} {{ module_version }}
-
{{ entry_api_version }} {{ api_version }}
-
-
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
-
-
- -
- -
-
-
- -
- - {% if error_live_merchant_id %} -
{{ error_live_merchant_id }}
- {% endif %} -
-
- -
- -
- - {% if error_live_api_password %} -
{{ error_live_api_password }}
- {% endif %} -
-
-
- -
- - {% if error_test_merchant_id %} -
{{ error_test_merchant_id }}
- {% endif %} -
-
-
- -
- - {% if error_test_api_password %} -
{{ error_test_api_password }}
- {% endif %} -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
-
-
-
-
-
-
-{{ footer }} diff --git a/catalog/controller/extension/payment/mpgs_hosted_checkout.php b/catalog/controller/extension/payment/mpgs_hosted_checkout.php deleted file mode 100644 index fd4c0e6..0000000 --- a/catalog/controller/extension/payment/mpgs_hosted_checkout.php +++ /dev/null @@ -1,1090 +0,0 @@ -load->language('extension/payment/mpgs_hosted_checkout'); - $this->load->model('extension/payment/mpgs_hosted_checkout'); - - $gatewayUri = $this->model_extension_payment_mpgs_hosted_checkout->getGatewayUri(); - $apiVersion = $this->model_extension_payment_mpgs_hosted_checkout->getApiVersion(); - $integrationModel = $this->model_extension_payment_mpgs_hosted_checkout->getIntegrationModel(); - - if (!empty($this->session->data['order_id']) && !empty($this->session->data['currency']) && !empty($this->session->data['payment_address'])) { - try { - if ($integrationModel === 'hostedcheckout') { - $built = $this->buildCheckoutSession(); - if ($built === true) { - $data['configured_variables'] = json_encode($this->configureHostedCheckout()); - } - } elseif ($integrationModel === 'hostedsession'){ - $this->getOrderItemsTaxAndTotals(); - $gatewayOrderId = $this->getOrderPrefix($this->session->data['order_id']); - $response = $this->createSession($gatewayOrderId, $this->orderAmount); - if ($response['result'] === 'SUCCESS') { - $data['session_id'] = $response['session']['id']; - $data['session_version'] = $response['session']['version']; - $data['merchant_id'] = $response['merchant']; - $data['ws_version'] = $this->model_extension_payment_mpgs_hosted_checkout->getApiVersion(); - $data['order_id'] = $gatewayOrderId; - $data['currency'] = $this->session->data['currency']; - $data['amount'] = $this->orderAmount; - } - $data['update_session_action'] = $this->url->link('extension/payment/mpgs_hosted_checkout/updateSession', 'order_id=' . $gatewayOrderId, true); - $data['form_action'] = $this->url->link('extension/payment/mpgs_hosted_checkout/saveHostedSessionPayment', 'order_id=' . $gatewayOrderId . '&amount=' . $this->orderAmount, true); - } - } catch (Exception $e) { - $data['error_session'] = $e->getMessage(); - } - } - - if (empty($data['error_session'])) { - if ($integrationModel === 'hostedcheckout') { - $data['hosted_checkout_js'] = $gatewayUri . 'checkout/version/' . $apiVersion . '/checkout.js'; - $data['checkout_interaction'] = $this->config->get('payment_mpgs_hosted_checkout_hc_type'); - $data['completeCallback'] = $this->url->link('extension/payment/mpgs_hosted_checkout/processHostedCheckout', '', true); - $data['cancelCallback'] = $this->url->link('extension/payment/mpgs_hosted_checkout/cancelCallback', '', true); - } else { - if ($this->customer->isLogged()) { - $data['savedCards'] = $this->getTokenizeCards($this->customer->getId()); - $data['text_save_card'] = $this->language->get('text_save_card'); - } else { - $data['savedCards'] = []; - } - - // Entry - $data['entry_cc_number'] = $this->language->get('entry_cc_number'); - $data['entry_expiry_month'] = $this->language->get('entry_expiry_month'); - $data['entry_expiry_year'] = $this->language->get('entry_expiry_year'); - $data['entry_security_code'] = $this->language->get('entry_security_code'); - $data['entry_cardholder_name'] = $this->language->get('entry_cardholder_name'); - $data['text_credit_card'] = $this->language->get('text_credit_card'); - - // Error - $data['error_card_number'] = $this->language->get('error_card_number'); - $data['error_expiry_month'] = $this->language->get('error_expiry_month'); - $data['error_expiry_year'] = $this->language->get('error_expiry_year'); - $data['error_security_code'] = $this->language->get('error_security_code'); - $data['error_payment_declined_3ds'] = $this->language->get('error_payment_declined_3ds'); - $data['error_payment_general'] = $this->language->get('error_payment_general'); - - $data['isSavedCardsEnabled'] = $this->model_extension_payment_mpgs_hosted_checkout->isSavedCardsEnabled(); - $data['isNotGuest'] = !isset($this->session->data['guest']) ? true : false; - } - } - - if ($integrationModel === 'hostedcheckout') { - return $this->load->view('extension/payment/mpgs_hosted_checkout', $data); - } else { - return $this->load->view('extension/payment/mpgs_hosted_session', $data); - } - } - - /** - * @param $route - */ - public function init($route) - { - $allowed = ['checkout/checkout']; - - if (!in_array($route, $allowed)) { - return; - } - - $this->load->model('extension/payment/mpgs_hosted_checkout'); - - $gatewayUri = $this->model_extension_payment_mpgs_hosted_checkout->getGatewayUri(); - $apiVersion = $this->model_extension_payment_mpgs_hosted_checkout->getApiVersion(); - $integrationModel = $this->model_extension_payment_mpgs_hosted_checkout->getIntegrationModel(); - $apiUsername = $this->model_extension_payment_mpgs_hosted_checkout->getMerchantId(); - - if ($integrationModel === 'hostedsession') { - $hostedSessionJs = $gatewayUri . 'form/version/' . $apiVersion . '/merchant/' . $apiUsername . '/session.js'; - $this->document->addScript($hostedSessionJs); - $threeDsApiVersion = $this->model_extension_payment_mpgs_hosted_checkout->threeDSApiVersion(); - $threeDsJS = $gatewayUri . 'static/threeDS/' . $threeDsApiVersion . '/three-ds.min.js'; - $this->document->addScript($threeDsJS); - } - } - - /** - * @return bool - * @throws Exception - */ - public function buildCheckoutSession() - { - $this->load->model('extension/payment/mpgs_hosted_checkout'); - $this->model_extension_payment_mpgs_hosted_checkout->clearCheckoutSession(); - - $requestData = [ - 'apiOperation' => 'CREATE_CHECKOUT_SESSION', - 'partnerSolutionId' => $this->model_extension_payment_mpgs_hosted_checkout->buildPartnerSolutionId(), - 'order' => array_merge($this->getOrder(), $this->getOrderItemsTaxAndTotals()), - 'interaction' => $this->getInteraction(), - 'billing' => $this->getBillingAddress(), - 'customer' => $this->getCustomer() - ]; - - if (!empty($this->getShippingAddress())) { - $requestData = array_merge($requestData, ['shipping' => $this->getShippingAddress()]); - } - - $uri = $this->model_extension_payment_mpgs_hosted_checkout->getApiUri() . '/session'; - $response = $this->model_extension_payment_mpgs_hosted_checkout->apiRequest('POST', $uri, $requestData); - - if (!empty($response['result']) && $response['result'] === 'SUCCESS') { - if ($this->model_extension_payment_mpgs_hosted_checkout->getIntegrationModel() === 'hostedcheckout') { - $this->session->data['mpgs_hosted_checkout'] = $response; - } else { - $this->session->data['mpgs_hosted_session'] = $response; - } - return true; - } elseif (!empty($response['result']) && $response['result'] === 'ERROR') { - throw new Exception(json_encode($response['error'])); - } - - return false; - } - - /** - * @return mixed - */ - protected function getInteraction() - { - $this->load->model('extension/payment/mpgs_hosted_checkout'); - - $integration['merchant']['name'] = $this->config->get('config_name'); - $integration['operation'] = $this->model_extension_payment_mpgs_hosted_checkout->getPaymentAction(); - $integration['returnUrl'] = $this->url->link('extension/payment/mpgs_hosted_checkout/processHostedCheckout', '', true); - $integration['displayControl']['shipping'] = 'HIDE'; - $integration['displayControl']['billingAddress'] = 'HIDE'; - $integration['displayControl']['orderSummary'] = 'HIDE'; - $integration['displayControl']['paymentConfirmation'] = 'HIDE'; - $integration['displayControl']['customerEmail'] = 'HIDE'; - - return $integration; - } - - /** - * @return mixed - */ - protected function getOrder() - { - $orderId = $this->getOrderPrefix($this->session->data['order_id']); - $orderData['id'] = $orderId; - $orderData['reference'] = $orderId; - $orderData['currency'] = $this->session->data['currency']; - $orderData['description'] = 'Ordered goods'; - $orderData['notificationUrl'] = $this->url->link('extension/payment/mpgs_hosted_checkout/callback', '', true); - - return $orderData; - } - - /** - * Order items, tax and order totals - * - * @return array - */ - protected function getOrderItemsTaxAndTotals() - { - $orderData = []; - $sendLineItems = $this->config->get('payment_mpgs_hosted_checkout_send_line_items'); - if ($sendLineItems) { - $this->load->model('catalog/product'); - foreach ($this->cart->getProducts() as $product) { - $productModel = $this->model_catalog_product->getProduct($product['product_id']); - - $items = []; - if ($productModel['manufacturer']) { - $items['brand'] = utf8_substr($productModel['manufacturer'], 0, 127); - } - - $description = []; - foreach ($product['option'] as $option) { - if ($option['type'] != 'file') { - $value = isset($option['value']) ? $option['value'] : ''; - } else { - $uploadInfo = $this->model_tool_upload->getUploadByCode($option['value']); - - if ($uploadInfo) { - $value = $uploadInfo['name']; - } else { - $value = ''; - } - } - $description[] = $option['name'] . ':' . (utf8_strlen($value) > 20 ? utf8_substr($value, 0, - 20) . '..' : $value); - } - if (!empty($description)) { - $items['description'] = utf8_substr(implode(', ', $description), 0, 127); - } elseif ($product['model']) { - $items['description'] = utf8_substr($product['model'], 0, 127); - } - $items['name'] = utf8_substr($product['name'], 0, 127); - $items['quantity'] = $product['quantity']; - if ($product['model']) { - $items['sku'] = utf8_substr($product['model'], 0, 127); - } - $items['unitPrice'] = round($product['price'], 2); - - $orderData['item'][] = $items; - } - } - - /** Tax, Shipping, Discount and Order Total */ - $totals = []; - $taxes = $this->cart->getTaxes(); - $total = 0; - - // Because __call can not keep var references so we put them into an array. - $totalData = [ - 'totals' => &$totals, - 'taxes' => &$taxes, - 'total' => &$total - ]; - - $this->load->model('setting/extension'); - - // Display prices - $sorOrder = []; - $results = $this->model_setting_extension->getExtensions('total'); - - foreach ($results as $key => $value) { - $sorOrder[$key] = $this->config->get('total_' . $value['code'] . '_sort_order'); - } - - array_multisort($sorOrder, SORT_ASC, $results); - - foreach ($results as $result) { - if ($this->config->get('total_' . $result['code'] . '_status')) { - $this->load->model('extension/total/' . $result['code']); - - // We have to put the totals in an array so that they pass by reference. - $this->{'model_extension_total_' . $result['code']}->getTotal($totalData); - } - - $sorOrder = []; - foreach ($totals as $key => $value) { - $sorOrder[$key] = $value['sort_order']; - } - - array_multisort($sorOrder, SORT_ASC, $totals); - } - - $skipTotals = [ - 'sub_total', - 'total', - 'tax' - ]; - - $formattedTotal = round($total, 2); - $subTotal = 0; - $tax = 0; - $taxInfo = []; - $shipping = 0; - - foreach ($totals as $key => $value) { - $formattedValue = round($value['value'], 2); - - if ($value['code'] == 'sub_total') { - $subTotal += $formattedValue; - } - - if ($value['code'] == 'tax') { - $tax += $formattedValue; - $taxInfo[] = [ - 'amount' => $formattedValue, - 'type' => $value['title'] - ]; - } - - if (!in_array($value['code'], $skipTotals)) { - $shipping += $formattedValue; - } - } - - $finalTotal = $subTotal + $tax + $shipping; - if ($finalTotal == $formattedTotal) { - $this->orderAmount = $formattedTotal; - $orderData['amount'] = $formattedTotal; - if ($sendLineItems) { - $orderData['itemAmount'] = $subTotal; - $orderData['shippingAndHandlingAmount'] = $shipping; - $orderData['taxAmount'] = $tax; - } - } - - /** Order Tax Details */ - if (!empty($taxInfo) && $sendLineItems) { - $orderData['tax'] = $taxInfo; - } - - return $orderData; - } - - /** - * @return array - */ - protected function getBillingAddress() - { - $billingAddress = []; - $paymentAddress = $this->session->data['payment_address']; - - if (!empty($paymentAddress['city'])) { - $billingAddress['address']['city'] = utf8_substr($paymentAddress['city'], 0, 100); - } - - if (!empty($paymentAddress['company'])) { - $billingAddress['address']['company'] = $paymentAddress['company']; - } - - if (!empty($paymentAddress['iso_code_3'])) { - $billingAddress['address']['country'] = $paymentAddress['iso_code_3']; - } - - if (!empty($paymentAddress['postcode'])) { - $billingAddress['address']['postcodeZip'] = utf8_substr($paymentAddress['postcode'], 0, 10); - } - - if (!empty($paymentAddress['zone'])) { - $billingAddress['address']['stateProvince'] = utf8_substr($paymentAddress['zone'], 0, 20); - } - - if (!empty($paymentAddress['address_1'])) { - $billingAddress['address']['street'] = utf8_substr($paymentAddress['address_1'], 0, 100); - } - - if (!empty($paymentAddress['address_2'])) { - $billingAddress['address']['street2'] = utf8_substr($paymentAddress['address_2'], 0, 100); - } - - return $billingAddress; - } - - /** - * @return array - */ - protected function getShippingAddress() - { - $shippingAddress = []; - if (isset($this->session->data['shipping_address'])) { - $shippingAddressData = $this->session->data['shipping_address']; - - if (!empty($shippingAddressData['city'])) { - $shippingAddress['address']['city'] = utf8_substr($shippingAddressData['city'], 0, 100); - } - - if (!empty($shippingAddressData['company'])) { - $shippingAddress['address']['company'] = $shippingAddressData['company']; - } - - if (!empty($shippingAddressData['iso_code_3'])) { - $shippingAddress['address']['country'] = $shippingAddressData['iso_code_3']; - } - - if (!empty($shippingAddressData['postcode'])) { - $shippingAddress['address']['postcodeZip'] = utf8_substr($shippingAddressData['postcode'], 0, 10); - } - - if (!empty($shippingAddressData['zone'])) { - $shippingAddress['address']['stateProvince'] = utf8_substr($shippingAddressData['zone'], 0, 20); - } - - if (!empty($shippingAddressData['address_1'])) { - $shippingAddress['address']['street'] = utf8_substr($shippingAddressData['address_1'], 0, 100); - } - - if (!empty($shippingAddressData['address_2'])) { - $shippingAddress['address']['street2'] = utf8_substr($shippingAddressData['address_2'], 0, 100); - } - - if (!empty($shippingAddressData['firstname'])) { - $shippingAddress['contact']['firstName'] = utf8_substr($shippingAddressData['firstname'], 0, 50); - } - - if (!empty($shippingAddressData['lastname'])) { - $shippingAddress['contact']['lastName'] = utf8_substr($shippingAddressData['lastname'], 0, 50); - } - - if ($this->customer->isLogged()) { - $this->load->model('account/customer'); - - $customerModel = $this->model_account_customer->getCustomer($this->customer->getId()); - - $shippingAddress['contact']['email'] = $customerModel['email']; - $shippingAddress['contact']['phone'] = utf8_substr($customerModel['telephone'], 0, 20); - - } else { - $guestUser = $this->session->data['guest']; - - $shippingAddress['contact']['email'] = $guestUser['email']; - $shippingAddress['contact']['phone'] = utf8_substr($guestUser['telephone'], 0, 20); - - } - } - - return $shippingAddress; - } - - /** - * @return array - */ - protected function getCustomer() - { - $customerData = []; - if ($this->customer->isLogged()) { - $this->load->model('account/customer'); - - $customerModel = $this->model_account_customer->getCustomer($this->customer->getId()); - - $customerData['firstName'] = utf8_substr($customerModel['firstname'], 0, 50); - $customerData['lastName'] = utf8_substr($customerModel['lastname'], 0, 50); - $customerData['email'] = $customerModel['email']; - $customerData['phone'] = utf8_substr($customerModel['telephone'], 0, 20); - } elseif (isset($this->session->data['guest'])) { - $guestUser = $this->session->data['guest']; - - $customerData['firstName'] = utf8_substr($guestUser['firstname'], 0, 50); - $customerData['lastName'] = utf8_substr($guestUser['lastname'], 0, 50); - $customerData['email'] = $guestUser['email']; - $customerData['phone'] = utf8_substr($guestUser['telephone'], 0, 20); - } - - return $customerData; - } - - /** - * Process Hosted Checkout Payment Method - */ - public function processHostedCheckout() - { - $this->load->language('extension/payment/mpgs_hosted_checkout'); - $this->load->model('extension/payment/mpgs_hosted_checkout'); - - $requestIndicator = $this->request->get['resultIndicator']; - $mpgsSuccessIndicator = $this->session->data['mpgs_hosted_checkout']['successIndicator']; - $orderId = $this->getOrderPrefix($this->session->data['order_id']); - - try { - if ($mpgsSuccessIndicator !== $requestIndicator) { - throw new Exception($this->language->get('error_indicator_mismatch')); - } - - $retrievedOrder = $this->retrieveOrder($orderId); - if ($retrievedOrder['result'] !== 'SUCCESS') { - throw new Exception($this->language->get('error_payment_declined')); - } - - $txn = $retrievedOrder['transaction'][0]; - $this->processOrder($retrievedOrder, $txn); - - $this->model_extension_payment_mpgs_hosted_checkout->clearCheckoutSession(); - $this->response->redirect($this->url->link('checkout/success', '', true)); - } catch (Exception $e) { - $this->session->data['error'] = $e->getMessage(); - $this->addOrderHistory($orderId, self::ORDER_FAILED, $e->getMessage()); - $this->response->redirect($this->url->link('checkout/checkout', '', true)); - } - } - - public function callback() - { - $this->load->language('extension/payment/mpgs_hosted_checkout'); - $this->load->model('extension/payment/mpgs_hosted_checkout'); - $requestHeaders = $this->request->server; - - $webhookSecret = $requestHeaders[self::HEADER_WEBHOOK_SECRET]; - $webhookAttempt = $requestHeaders[self::HEADER_WEBHOOK_ATTEMPT]; - $webhookId = $requestHeaders[self::HEADER_WEBHOOK_ID]; - - $content = file_get_contents('php://input'); - $content = trim($content); - - $parsedData = @json_decode($content, true); - - $jsonError = json_last_error(); - if ($jsonError !== JSON_ERROR_NONE) { - $this->model_extension_payment_mpgs_hosted_checkout->log('Could not parse response JSON, error: '. $jsonError, json_encode(['rawContent' => $content])); - header('HTTP/1.1 500 ' . $jsonError); - exit; - } - - try { - if ($requestHeaders['REQUEST_METHOD'] != 'POST') { - throw new Exception($this->language->get('error_request_method')); - } - - if (!$this->isSecure($requestHeaders)) { - throw new Exception($this->language->get('error_insecure_connection')); - } - - if ($this->model_extension_payment_mpgs_hosted_checkout->getWebhookSecret() !== $webhookSecret) { - throw new Exception($this->language->get('error_secret_mismatch')); - } - - if ($this->model_extension_payment_mpgs_hosted_checkout->getMerchantId() !== $parsedData['merchant']) { - throw new Exception($this->language->get('error_merchant_mismatch')); - } - - if (!isset($parsedData['order']) || !isset($parsedData['order']['id'])) { - throw new Exception($this->language->get('error_invalid_order')); - } - - if (!isset($parsedData['transaction']) || !isset($parsedData['transaction']['id'])) { - throw new Exception($this->language->get('error_invalid_transaction')); - } - - } catch (Exception $e) { - $errorMessage = sprintf("WebHook Exception: '%s'", $e->getMessage()); - $this->model_extension_payment_mpgs_hosted_checkout->log($errorMessage); - header('HTTP/1.1 500 ' . $e->getMessage()); - exit; - } - - $webhookResponse = json_encode([ - 'notification_id' => $webhookId, - 'notification_attempt' => $webhookAttempt, - 'order.id' => $parsedData['order']['id'], - 'transaction.id' => $parsedData['transaction']['id'], - 'transaction.type' => $parsedData['transaction']['type'], - 'response.gatewayCode' => $parsedData['response']['gatewayCode'] - ]); - $this->model_extension_payment_mpgs_hosted_checkout->log("Webhook Response: " . $webhookResponse); - - try { - $response = $this->retrieveTransaction($parsedData['order']['id'], $parsedData['transaction']['id']); - - if (isset($response['result']) && $response['result'] == 'ERROR') { - $error = $this->language->get('error_payment_declined'); - if (isset($response['error']['explanation'])) { - $error = sprintf('%s: %s', $response['error']['cause'], $response['error']['explanation']); - } - throw new Exception($error); - } - } catch (Exception $e) { - $this->model_extension_payment_mpgs_hosted_checkout->log('Gateway Error: ' . $e->getMessage()); - header('HTTP/1.1 500 ' . 'Gateway Error'); - exit; - } - - if (!$this->isApproved($response)) { - $this->model_extension_payment_mpgs_hosted_checkout->log(sprintf('Unexpected gateway code "%s"', $response['response']['gatewayCode'])); - exit; - } - - $mpgsOrderId = $response['order']['id']; - $prefix = trim($this->config->get('payment_mpgs_hosted_checkout_order_id_prefix')); - if ($prefix) { - $mpgsOrderId = substr($mpgsOrderId, strlen($prefix)); - } - - $this->load->model('checkout/order'); - $order = $this->model_checkout_order->getOrder($mpgsOrderId); - - if (isset($response['risk']['response'])) { - $risk = $response['risk']['response']; - switch ($risk['gatewayCode']) { - case 'REJECTED': - if ($order['order_status_id'] != $this->config->get('payment_mpgs_hosted_checkout_risk_declined_status_id')) { - $message = sprintf($this->language->get('text_risk_review_rejected'), $risk['gatewayCode'], $response['transaction']['id'], $response['transaction']['type']); - $this->addOrderHistory($response['order']['reference'], $this->config->get('payment_mpgs_hosted_checkout_risk_declined_status_id'), $message); - } - break; - case 'REVIEW_REQUIRED': - if (!empty($risk['review']['decision']) && in_array($risk['review']['decision'], ['NOT_REQUIRED', 'ACCEPTED'])) { - $this->setOrderHistoryTransactionType($order, $response); - } else { - $message = sprintf($this->language->get('text_risk_review_required'), $risk['gatewayCode'], $response['transaction']['id'], $response['transaction']['type']); - $this->addOrderHistory($response['order']['reference'], $this->config->get('payment_mpgs_hosted_checkout_risk_review_status_id'), $message); - } - break; - default: - $this->setOrderHistoryTransactionType($order, $response); - break; - } - - $this->model_extension_payment_mpgs_hosted_checkout->log('webhook completed (200 OK)'); - exit; - } - } - - /** - * @param $order - * @param $response - */ - protected function setOrderHistoryTransactionType($order, $response) - { - switch ($response['transaction']['type']) { - case 'AUTHORIZATION': - case 'AUTHORIZATION_UPDATE': - if ($order['order_status_id'] != $this->config->get('payment_mpgs_hosted_checkout_pending_status_id')) { - $this->model_extension_payment_mpgs_hosted_checkout->log(sprintf($this->language->get('text_not_allow_authorization'), $order['order_status_id'])); - } else { - $message = sprintf($this->language->get('text_webhook_authorize_capture'), $response['transaction']['type'], $response['result'], $response['transaction']['id'], $response['transaction']['authorizationCode']); - $orderStatusId = $this->config->get('payment_mpgs_hosted_checkout_approved_status_id'); - $this->addOrderHistory($order['order_id'], $orderStatusId, $message); - } - break; - - case 'PAYMENT': - case 'CAPTURE': - if ($order['order_status_id'] != $this->config->get('payment_mpgs_hosted_checkout_approved_status_id') && $order['order_status_id'] != $this->config->get('payment_mpgs_hosted_checkout_pending_status_id')) { - $this->model_extension_payment_mpgs_hosted_checkout->log(sprintf($this->language->get('text_not_allow_capture'), $order['order_status'])); - } else { - $message = sprintf($this->language->get('text_webhook_authorize_capture'), $response['transaction']['type'], $response['result'], $response['transaction']['id'], $response['transaction']['authorizationCode']); - $orderStatusId = self::ORDER_CAPTURED; - $this->addOrderHistory($order['order_id'], $orderStatusId, $message); - } - break; - - case 'REFUND_REQUEST': - case 'REFUND': - if ($order['order_status_id'] != self::ORDER_CAPTURED) { - $this->model_extension_payment_mpgs_hosted_checkout->log(sprintf($this->language->get('text_not_allow_refund'), $order['order_status'])); - } else { - $message = sprintf($this->language->get('text_webhook_refund_void'), $response['transaction']['type'], $response['result'], $response['transaction']['id']); - $orderStatusId = self::ORDER_REFUNDED; - $this->addOrderHistory($order['order_id'], $orderStatusId, $message); - } - break; - - case 'VOID_AUTHORIZATION': - case 'VOID_CAPTURE': - case 'VOID_PAYMENT': - case 'VOID_REFUND': - if ($order['order_status_id'] != $this->config->get('payment_mpgs_hosted_checkout_approved_status_id')) { - $this->model_extension_payment_mpgs_hosted_checkout->log(sprintf($this->language->get('text_not_allow_void'), $order['order_status'])); - } else { - $message = sprintf($this->language->get('text_webhook_refund_void'), $response['transaction']['type'], $response['result'], $response['transaction']['id']); - $orderStatusId = self::ORDER_VOIDED; - $this->addOrderHistory($order['order_id'], $orderStatusId, $message); - } - break; - - case 'CANCELLED': - if ($order['order_status_id'] != self::ORDER_CANCELLED) { - $message = sprintf($this->language->get('text_webhook_refund_void'), $response['transaction']['type'], $response['result'], $response['transaction']['id']); - $orderStatusId = self::ORDER_CANCELLED; - $this->addOrderHistory($order['order_id'], $orderStatusId, $message); - - } - break; - - default: - if ($order['order_status_id'] != self::ORDER_CANCELLED) { - $orderStatusId = self::ORDER_CANCELLED; - $message = sprintf($this->language->get('text_webhook_unknown'), $response['transaction']['type']); - $this->addOrderHistory($order['order_id'], $orderStatusId, $message); - } - break; - } - } - - /** - * @param $response - * @return bool - */ - public function isApproved($response) - { - $gatewayCode = $response['response']['gatewayCode']; - - if (!in_array($gatewayCode, array('APPROVED', 'APPROVED_AUTO'))) { - return false; - } - - return true; - } - - /** - * @param $headers - * @return bool - */ - protected function isSecure($headers) - { - $https = $headers['HTTPS']; - $serverPort = $headers['SERVER_PORT']; - return (!empty($https) && $https === "1") || $serverPort === "443"; - } - - /** - * @param $customerId - * @return array - */ - public function getTokenizeCards($customerId) - { - $this->load->language('extension/payment/mpgs_hosted_checkout'); - $this->load->model('extension/payment/mpgs_hosted_checkout'); - - $customerTokens = $this->model_extension_payment_mpgs_hosted_checkout->getCustomerTokens($customerId); - $uri = $this->model_extension_payment_mpgs_hosted_checkout->getApiUri() . '/token/'; - - $cards = []; - - foreach ($customerTokens as $token) { - $response = $this->model_extension_payment_mpgs_hosted_checkout->apiRequest('GET', $uri . urlencode($token['token'])); - - if ($response['result'] !== 'SUCCESS' || $response['status'] !== 'VALID') { - $this->db->query("DELETE FROM `" . DB_PREFIX . "mpgs_hpf_token` WHERE hpf_token_id='" . (int)$token['hpf_token_id'] . "'"); - } else { - $expiry = []; - $cardNumber = substr($response['sourceOfFunds']['provided']['card']['number'], - 4); - preg_match( '/^(\d{2})(\d{2})$/', $response['sourceOfFunds']['provided']['card']['expiry'], $expiry); - - $cards[] = [ - 'id' => (int)$token['hpf_token_id'], - 'type' => sprintf($this->language->get('text_card_type'), ucfirst(strtolower($response['sourceOfFunds']['provided']['card']['brand']))), - 'label' => sprintf($this->language->get('text_card_label'), $cardNumber), - 'expiry' => sprintf($this->language->get('text_card_expiry'), $expiry[1] . '/' . $expiry[2]) - ]; - } - } - - return $cards; - } - - protected function getTokenById($tokenId) - { - $tokensResult = $this->db->query("SELECT token FROM `" . DB_PREFIX . "mpgs_hpf_token` WHERE hpf_token_id='" . (int)$tokenId . "'"); - return $tokensResult->row; - } - - public function createSession($orderId, $amount) - { - $this->load->model('extension/payment/mpgs_hosted_checkout'); - - // Create Session - $uri = $this->model_extension_payment_mpgs_hosted_checkout->getApiUri() . '/session'; - $session = $this->model_extension_payment_mpgs_hosted_checkout->apiRequest('POST', $uri); - - // Update Session - $uri = $this->model_extension_payment_mpgs_hosted_checkout->getApiUri() . '/session/' . $session['session']['id']; - $updateSessionData = [ - 'order' => [ - 'amount' => $amount, - 'currency' => $this->session->data['currency'], - 'id' => $orderId - ], - 'partnerSolutionId' => $this->model_extension_payment_mpgs_hosted_checkout->buildPartnerSolutionId(), - 'authentication' => [ - 'channel' => 'PAYER_BROWSER', - 'purpose' => 'PAYMENT_TRANSACTION', - 'redirectResponseUrl' => str_replace('&', '&', - $this->url->link('extension/payment/mpgs_hosted_checkout/payerAuthComplete', [ - 'session_id' => $session['session']['id'], - ], true) - ) - ], - 'billing' => $this->getBillingAddress(), - 'customer' => $this->getCustomer(), - ]; - - if (!empty($this->getShippingAddress())) { - $updateSessionData = array_merge($updateSessionData, ['shipping' => $this->getShippingAddress()]); - } - - $this->model_extension_payment_mpgs_hosted_checkout->apiRequest('PUT', $uri, $updateSessionData); - - return $session; - } - - /** - * Controller action - * Payer returns from 3DS1 or 3DS2 auth challenge - */ - public function payerAuthComplete() - { - $this->load->language('extension/payment/mpgs_hosted_checkout'); - $this->load->model('extension/payment/mpgs_hosted_checkout'); - - $txnId = $this->request->post['transaction_id']; - $orderId = $this->request->post['order_id']; - $gatewayRecommendation = $this->request->post['response_gatewayRecommendation']; - $sessionId = $this->request->request['session_id']; - - try { - if ($gatewayRecommendation !== 'PROCEED') { - throw new Exception($this->language->get('error_payment_declined_3ds')); - } - - $operation = 'AUTHORIZE'; - if ($this->model_extension_payment_mpgs_hosted_checkout->getPaymentAction() === 'PURCHASE') { - $operation = 'PAY'; - } - - $uri = $this->model_extension_payment_mpgs_hosted_checkout->getApiUri() . '/order/' . $orderId . '/transaction/1'; - $operationData = [ - 'apiOperation' => $operation, - 'session' => [ - 'id' => $sessionId - ], - 'authentication' => [ - 'transactionId' => $txnId - ], - 'transaction' => [ - 'reference' => $orderId - ], - 'sourceOfFunds' => [ - 'type' => 'CARD' - ], - 'partnerSolutionId' => $this->model_extension_payment_mpgs_hosted_checkout->buildPartnerSolutionId(), - 'order' => array_merge([ - 'reference' => $orderId, - 'currency' => $this->session->data['currency'], - 'notificationUrl' => $this->url->link('extension/payment/mpgs_hosted_checkout/callback', '', true), - ], $this->getOrderItemsTaxAndTotals()), - 'billing' => $this->getBillingAddress(), - 'customer' => $this->getCustomer(), - ]; - - if (!empty($this->getShippingAddress())) { - $operationData = array_merge($operationData, ['shipping' => $this->getShippingAddress()]); - } - - $response = $this->model_extension_payment_mpgs_hosted_checkout->apiRequest('PUT', $uri, $operationData); - - if (isset($response['result']) && ($response['result'] == 'ERROR' || $response['result'] == 'FAILURE')) { - $error = $this->language->get('error_transaction_unsuccessful'); - if (isset($response['error']['explanation'])) { - $error = sprintf('%s: %s', $response['error']['cause'], $response['error']['explanation']); - } - throw new Exception($error); - } - - $this->processOrder($response['order'], $response); - - $enabled = $this->model_extension_payment_mpgs_hosted_checkout->isSavedCardsEnabled(); - $payingWithToken = isset($this->session->data['token_id']) ? (bool)$this->session->data['token_id'] : false; - if ($enabled && !$payingWithToken && isset($this->session->data['save_card']) && $this->session->data['save_card'] === '1') { - $this->saveCards([ - 'id' => $sessionId - ]); - } - - $this->clearTokenSaveCardSessionData(); - - $this->model_extension_payment_mpgs_hosted_checkout->clearCheckoutSession(); - $this->response->redirect($this->url->link('checkout/success', '', true)); - - } catch (Exception $e) { - $this->clearTokenSaveCardSessionData(); - $this->session->data['error'] = $e->getMessage(); - $this->addOrderHistory($orderId, self::ORDER_FAILED, $e->getMessage()); - $this->response->redirect($this->url->link('checkout/checkout', '', true)); - } - } - - /** - * Controller action - * Process Hosted Session Payment Method - */ - public function saveHostedSessionPayment() - { - $this->load->language('extension/payment/mpgs_hosted_checkout'); - $this->load->model('extension/payment/mpgs_hosted_checkout'); - - if (isset($this->request->request['mpgs-payment-token']) && $this->request->request['mpgs-payment-token'] !== 'new') { - $tokenId = $this->request->request['mpgs-payment-token']; - - $this->session->data['token_id'] = $tokenId; - $token = $this->getTokenById($tokenId); - - $uri = $this->model_extension_payment_mpgs_hosted_checkout->getApiUri() . '/session/' . $this->request->request['session_id']; - $result = $this->model_extension_payment_mpgs_hosted_checkout->apiRequest('PUT', $uri, [ - 'sourceOfFunds' => [ - 'token' => $token['token'], - 'type' => 'CARD' - ] - ]); - - if (!isset($result['session']) || $result['session']['updateStatus'] !== 'SUCCESS') { - header('HTTP/1.0 500 Session Update Error'); - exit(); - } - } - if (isset($this->request->request['mpgs-save-new-method']) && $this->request->request['mpgs-save-new-method'] === '1') { - $this->session->data['save_card'] = $this->request->request['mpgs-save-new-method']; - } - } - - /** - * Clear values of Hosted Payment Form - * fields from session - */ - protected function clearTokenSaveCardSessionData() - { - unset($this->session->data['save_card']); - unset($this->session->data['token_id']); - unset($this->session->data['source_of_funds']); - } - - /** - * @param $session - * @throws Exception - */ - protected function saveCards($session) - { - $tokenResponse = $this->createCardToken($session['id']); - - if (!isset($tokenResponse['token']) || empty($tokenResponse['token'])) { - throw new Exception($this->language->get('error_token_not_present')); - } - - if ($this->customer->isLogged()) { - $this->db->query("INSERT INTO `" . DB_PREFIX . "mpgs_hpf_token` SET `customer_id`='" . (int)$this->customer->getId() . "', `token`='" . $this->db->escape($tokenResponse['token']) . "', `created_at`=NOW()"); - } - } - - /** - * @param $sessionId - * @return mixed - */ - protected function createCardToken($sessionId) - { - $requestData = [ - 'session' => [ - 'id' => $sessionId - ], - 'sourceOfFunds' => [ - 'type' => 'CARD' - ] - ]; - - $uri = $this->model_extension_payment_mpgs_hosted_checkout->getApiUri() . '/token'; - $response = $this->model_extension_payment_mpgs_hosted_checkout->apiRequest('POST', $uri, $requestData); - - return $response; - } - - /** - * Cancel callback - */ - public function cancelCallback() - { - $this->addOrderHistory($this->session->data['order_id'], self::ORDER_CANCELLED, 'MasterCard Payment transaction has been CANCELLED by customer.'); - $this->response->redirect($this->url->link('checkout/cart', '', true)); - } - - /** - * @param $retrievedOrder - * @param $txn - * @throws Exception - */ - protected function processOrder($retrievedOrder, $txn) - { - if ($retrievedOrder['status'] === 'CAPTURED') { - $message = sprintf($this->language->get('text_payment_captured'), $txn['transaction']['id'], $txn['transaction']['authorizationCode']); - $orderStatusId = self::ORDER_CAPTURED; - } elseif ($retrievedOrder['status'] === 'AUTHORIZED') { - $message = sprintf($this->language->get('text_payment_authorized'), $txn['transaction']['id'], $txn['transaction']['authorizationCode']); - $orderStatusId = $this->config->get('payment_mpgs_hosted_checkout_approved_status_id'); - } else { - throw new Exception($this->language->get('error_transaction_unsuccessful')); - } - $this->addOrderHistory($this->session->data['order_id'], $orderStatusId, $message); - } - - /** - * @param $orderId - * @param $orderStatusId - * @param $message - */ - protected function addOrderHistory($orderId, $orderStatusId, $message) - { - $this->load->model('checkout/order'); - $this->model_checkout_order->addOrderHistory($orderId, $orderStatusId, $message); - } - - /** - * @param $orderId - * @return mixed - */ - protected function retrieveOrder($orderId) - { - $this->load->model('extension/payment/mpgs_hosted_checkout'); - - $uri = $this->model_extension_payment_mpgs_hosted_checkout->getApiUri() . '/order/' . $orderId; - - $response = $this->model_extension_payment_mpgs_hosted_checkout->apiRequest('GET', $uri); - return $response; - } - - /** - * @param $orderId - * @param $txnId - * @return mixed - */ - protected function retrieveTransaction($orderId, $txnId) - { - $this->load->model('extension/payment/mpgs_hosted_checkout'); - - $uri = $this->model_extension_payment_mpgs_hosted_checkout->getApiUri() . '/order/' . $orderId . '/transaction/' . $txnId; - - $response = $this->model_extension_payment_mpgs_hosted_checkout->apiRequest('GET', $uri); - return $response; - } - - /** - * @return array - */ - public function configureHostedCheckout() - { - $this->load->helper('utf8'); - $this->load->model('extension/payment/mpgs_hosted_checkout'); - - $params = [ - 'merchant' => $this->model_extension_payment_mpgs_hosted_checkout->getMerchantId(), - 'session' => [ - 'id' => $this->session->data['mpgs_hosted_checkout']['session']['id'], - 'version' => $this->session->data['mpgs_hosted_checkout']['session']['version'] - ] - ]; - - return $params; - } - - /** - * @param $orderId - * @return string - */ - protected function getOrderPrefix($orderId) - { - $prefix = trim($this->config->get('payment_mpgs_hosted_checkout_order_id_prefix')); - if (!empty($prefix)) { - $orderId = $prefix . $orderId; - } - return $orderId; - } -} diff --git a/catalog/view/theme/default/template/extension/payment/mpgs_3dsecure_form.twig b/catalog/view/theme/default/template/extension/payment/mpgs_3dsecure_form.twig deleted file mode 100644 index e5c2d50..0000000 --- a/catalog/view/theme/default/template/extension/payment/mpgs_3dsecure_form.twig +++ /dev/null @@ -1,48 +0,0 @@ -{# - Copyright (c) 2020 Mastercard - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - #} - - - - - - {{ text_secure_payment }} - - - - - -{% if authenticationRedirect == false %} - -

{{ data_error }}

- -{% else %} - -
- - - - -
- -{% endif %} - diff --git a/catalog/view/theme/default/template/extension/payment/mpgs_hosted_checkout.twig b/catalog/view/theme/default/template/extension/payment/mpgs_hosted_checkout.twig deleted file mode 100644 index 9a38e18..0000000 --- a/catalog/view/theme/default/template/extension/payment/mpgs_hosted_checkout.twig +++ /dev/null @@ -1,54 +0,0 @@ -{# - Copyright (c) 2020 Mastercard - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - #} - -{% if error_session %} -
{{ error_session }}
-{% else %} - -
-
- -
-
- -{% endif %} \ No newline at end of file diff --git a/catalog/view/theme/default/template/extension/payment/mpgs_hosted_session.twig b/catalog/view/theme/default/template/extension/payment/mpgs_hosted_session.twig deleted file mode 100644 index 5080dc1..0000000 --- a/catalog/view/theme/default/template/extension/payment/mpgs_hosted_session.twig +++ /dev/null @@ -1,370 +0,0 @@ -{# - Copyright (c) 2020 Mastercard - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - #} - -{% if error_session %} -
{{ error_session }}
-{% else %} - - -
-
- {{ text_credit_card }} - {% if savedCards %} -
-
    - {% for card in savedCards %} -
  • - - -
  • - {% endfor %} -
  • - - -
  • -
-
- {% endif %} - - {% if savedCards %} - {% for card in savedCards %} - - {% endfor %} - {% endif %} -
- - - - - -
-
-
-
- -
-
- -{% endif %} diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..b23367d --- /dev/null +++ b/composer.json @@ -0,0 +1,3 @@ +{ + "version": "1.3.0" +} diff --git a/docs/3ds.png b/docs/3ds.png new file mode 100644 index 0000000000000000000000000000000000000000..9b6f4a771a4310bc1dfa6f5afb1af560773cc038 GIT binary patch literal 45673 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≥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�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�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%0D78sv-`w{|C?r#yXugB0Y3;h+3 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

(uvb{!Cg`2k{h}!yK5qP5q%e0ERWOZgFvK&EJI zs(+Pe^^4^4De$>Ep=1(KE`#3OHLRO}mm&r9Sy@vjs3A=3EC*1jvy;dWSoPirOXFNW z4KthN6DIq7WmCt&GOE;q`hM43^x`uhn!so^k2IAaY~Etm`k;j~Es|Xtz+Rw#TbIr4HN0liJ4Q-+(TN zKTGiM`wUVzCGfZguaRa%8{3Yo>5bN}@ig zp+@1Xp49LN{_yWFoh*^BxV*=u1$;|k%}koWhN;X@iPWTN+_1NPg|rRji%cr^R7>)Xim*< zAWt(DJs8`7ZDwHC#~<)bPX(_P=gJ_f)e3DW3ojx?F5r$v5sNmysTClxUAE--Fy z`Nv1MS-F-zHQwEA_Vhl~La>-cM_IG)w))QP^7B){xfqKMNUyZb6RGr$507Wo)l3-Z$Ax|QA@|KFu8ZP^`lXKPBPdXY1k4e+X72A$kjXACkh~nu4bnEB` zfrvs)2$}s&TMHwKGOSx33wog4^u2yNAF@!u>Jrx%iC&-P zv>#uxw03^AES#hv?3~iA`NxlVfbt*h5gb!g^0-kT*Dcm>ii)AmI z8C9q-m*g&A9j%l~THM$|ς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 literal 0 HcmV?d00001 diff --git a/docs/gateway_selection.png b/docs/gateway_selection.png new file mode 100644 index 0000000000000000000000000000000000000000..30bb7c278a1af259b9205eb4194b57914fac98e8 GIT binary patch literal 82159 zcmeFYWn9$Vw>D09cehALr*xwtB@7KihcpNbHFTFqNk~d}cMc_uNauhGl7k2g{fzhd z-RFGnIM4s(|IPDiYR`^!t#$3SuJ7J4S{kbOI5ap&NJ#k4pDDdULPG0BLPCaOVIaOq z>Z5B#ydZnNQdK~znWFoFgv5mOTuELRWOlgzBZCZ3$b0*k#Uq!i@w+cdEVXuyG8wvd zj*&Cns!ZTi2jd3eiP1^kOc2EM0Nid@Cmq-{j}fJ(t);6(Y)4#>U*?PVc}u z6bL`ffU})N4$kV= z+T>4E;wh`)8G)puUE_Oy$$Iqu8&=Qp&jK~_tvbn5^K49BZKN+`*O(=+=ek{@QW@(9 z+u)T|B@xs(?VA7**t3;-cK04Ty1d6P`6Zn|J@N{!Yw;4cDS=@X*|2qxt92M+WAd;vX8&HIB*6Y`G zMGF{>NKE8IV$w3VENU46S;H$HYs8F0n<{{{o_73Zc|L;cuWBtikAyC&8!g?2gK4Y4 zhbL1^_C)5qo>0wPvinZi#E&@x7m4gu%?{tnu+$T`?%c8G)d5R7R>*?Xc!?T2GuC82 zZ-lLi=8!l9OH`uVK*RCj{lQU-lF2aSW^#%)HuRok?XCk6CY}*(Lo?qP$n$v=X3ci( zB4Yo=jQ-67NNWgDmeFe6YVv@;w3$Ig1@6ywr*l3CMrfh=O^3=CjIJfww2nGeauPj# zqk`~4s@P$QyIa}*SlZRsGc-v|J9Yh56vTtP4bI7flB1%G$%sYqZTyCLVUnmW{A?9D$-(keB+;idVX2{lq&4;VGxk^Ta(}Xo2Cl=hW?;()Ueq%ZZ)WpA zPZ5_F6I=7;6NkQ4SGqtyhE-=!!E*(liO_i)c7wNrSI61`@A!)nQ_=;9b+iry zZKfYGImX7x=wvA&by@QMR?-(nsPMd8w$K+C*{ifOBsqi0b*YOtR~X2s)Q=aacR-z< zC=Hc#m#yv4FV`bVM4N9Wx2miS6$1HAN^DC}gDNlya+55TK6IlCzK7kMd*i)9=ilRk zkY2D&J>#vaSK}{b72o(aLamHO@nf7IG45F>9eQpQPT@W0om5V8YG`emZ3gLdI}50J zE-DsKSvUT!j}}sodx`3)P+>jLlb{j*<_hNJanXp)a%`j%_p=bLw1MQ4zt|d&2vDoT|*sKL6yy^H0G;C!E{dZ(>>{=;2l=#CdPfXIQ5< zKW80^ItkdiNxW5frLmKns8Y318`uC|zcwF6Qa+JY{xvvZ??Iy-iPdwYncp!R#?^>6 zD;sjD5)z#gTsqNcFIiK;J7V=6ZTQfpEE)}VDZ{wXB)XlBBZQ}w{7Z9d=4~wXN8Fl| zZ_cMz7bWYoX;z(vA=c4QEgu}6P#pQGt*K_OvWYS`wos52OIW1xv3#@WRjCpB!=6Up zwy0vvpg^h~a|!9v+H7QEH04d{?y*6$mBFo<6IfQ@OUpvxq-;zOTqkZLJFvtL_A-k2 z?t{#2el$@Uo)PWq`Z*#9(7(&x@T;Ggb7~!+7em#e(qlkOIJWjxOWd(`>FIObPU@XF z6ta9IbUg(*^-|cw`T}?|j)DqIZd(-rd^d}x+{uX+d)j=SD4RCyFYZWtPgD*?p@r!?0T0{$&r;b?CjmfsOT9W0IYguu3O(7>`MFyENNI76b zW&K%}dWz9qdKnotN}1BzVZB_RLG65rWfhi}*G5#Of#Sj`k=CB(z-(gE-CL?(sXJE^ zTW7qoU=8GI{4|gpZ0DQy)-eI$mwN%a7+Q0m&bmsIAu&bmm*uZN!5z-u6RWqmIzJlg zo&(uQ;QK_--c-C2Um_n#osXrIFrlJ_ZM!j{W|ZPhf3bFho6w~XzgSEC2|X{zLkmNm zuI5(MtYzFB2I%T{oQ6LR3ChvTZ|SD+p=MdyB<&}|Tk7dRX`Ukm3Ayy2RmQ_Fe&KbX z3+-2|w<*8ef_xJHzOOGS!%QD#dA0@AGbE10#)^c^z9mGS$0~Y$gCn@f!0Z6raN0YJ zE$UduU)^FN80M*KYlJQWZwBlg9QvH2xBA@h1j48>F`T` z^;t(TN1}!ihvQL5HI2m#_OZ!4&w{~*U+bcyf;`zGKh7tXu2k>Io(#3VV2G;WU*kEC zOTTd$439#PqK^yJ?qM_BG%Va|9r+jS1o{=(QGhVj>0zYcFYn2%sE-|cR}YRy`4!a^ zKG7C*dr2(j^*@fd#P^3fHxRtf4STDN+oH3yq}OWi|8#3Qh#^;S85TwGco@U(m-lPW z4Cv4p*~Weh>#@gHgdeNSKDN0WMSXKK3GF}%$YwZy(W-qq3DwG-ZIVK2&Z0lFQ9g%Q z9n=8{Wt3Fh6HPaeHnBfBgDyJiWRB;JIGVhtK8Gs0;?%ql0|PUM3p@psxTUWNk%Fk> z`Bs8*_u}&xb;lS`vi7;_TTPTt$|%=Ugs9?CsN+yE;tUDf&dxVwIWVMzX{CZbknrU^ zsBWtq{-|SJ+JUrkqDxA=o_SIN3-rOVBPS|kHukR`Z9^caF0Lo(H@$f)k$ESW%SNvbO zAahhk8cRmbu z$~!=Nr`M+qsz5FY=%o^wS*{9e(A~no$CMy7-1P94fI1WJ;1?fU&*%K>;#EWzo~orN{`oX2uM<0NV5X<#noE1FRE2{0XH=# zo#5wsqro2olX^tZukXpjAd z-KX;82lm5fos?_<=()m}ums(Z^KzyQYE2g8zC+&eNMN_XU^9|^8a2=hW45wP3mw%3 zXd1Tv!##)J57s1oTIUq5tr^^hktO15STeE8x3rtjsC=v*NlB>5X~UIAM?%K=d~2B}C^(zh})? zbj*44{vLd9yqq)EIfFQ_S%*N$BZT#1x`+Ai9Y05pEUYBcFpP+?3Q_4l;a{RBYD)HK z=F7K7eNonm^b5)*bwLuS&ep@Ev~*NQ zKX*D)ak57eg3j4a83VDM>}!piy1S%!wlk%6p#`br(=F66fE`wM1y0I(qFt6!z$|%4 zV=+cH${omysn8SKs~R3e1Gw$xOITf;T#Tt`70Qr7Iia1e!nBah#oo@DHG6f=58Opr zX#HZX3RW-C9`z0A5{f=EV)TYeT@);)(O;csln31HvdO&6e6gmeWEz1gmTEk^$KU^? zlwV3BvWQep30L;4DceW!oy@-Aj8GV<5nROQUNsoM8es5kPUV{FRJRj9%t6RxZVvv$ zYM9YzQhbd*RE!*Ad1u=?6lu4b0JmLO)q(b(O(ESMd?m9)dbjZ67W&;IM>gfbq+?;X z#k=}?u|s&{&Xx#*!$ezU(Cb3(-ToQW$&CfLA!aMpT&zuN;V`2aGxy1r`87|?dSTk{ z+vegmUu(wQ+)`bV(&ib+ExPo`x+Lm!QJdK4qnm01x?LA1nr8>wokZPiBJ^bHheZ(! zmDcK)*pZcL`01Lk#u)qI>es=&cIuq>wA3X-A6KI5)iv;P&!ACCI0;_OZ9Eduix^g; zRP>-<-!b4FcCav(g6eX=S^ro^Q`fi?VBhru%~}?0+m$p^O=V!RTXl@h;+Yb0N=STv zBxY-~0^NrJf#p~`V|@6w6Ba7hj218kv-mB;$6_?pW1umC?_iwH_lB+`P@&YS*?lKp zWEq7Lm&5ya+Dbah2Zt*Oj_$@PonRE7nyd3`-kJh$SKW}K7eskDHXylAH0g_9%uAVL zNh?rSi3ezRepKNO!%j*ANA2^*z7JnaIvb?Gc3dIu>!zJ9vW@)-5*$=}2Sf6;)IURS zdJek{dhWU;a{5XxBm%!KO7_Gvl<+K!#HV(i=13-rb*5k$y@W%!Xk{cRgByKM57zH< z#c7NV>IA+I9i(vDFLr*eh}vF|P%A=0=g^8pdCfkV3@p|aD5e6(yuhJd$*LEj@4K%< z4l>z^e6M{Dlxfb8C*v0t4Dq=`5&hCu_sL2=jX4YoC8o<29WXQwv7>o1iq)s#1XH#nVS_jX}US!+A4oi_; zsAc|X{jg1_sm7Mmw0I)Bxi@1-c%TJAooJXJa}0nAIMH)Ci758DyW0NR!k6p(-a zo6rd8A~j&3<>JK~w8+y$lbE2>kFX48bbm1k{$wF~+hfpuAipp3tpthCR{i9>{X&W3 zL|{1yTA9488N-Vo7HPe9;1`n%7k*XPnmgeIF9|Pryl) zWk8=ZxGFtCfS>Dz2$S}h!msH>Z;BjemI2ZT%j?HgvDGrheRd;OuQDPSGVYKC_`(XWgvmKg2L6P=K z`YUd4&7suAc8)YH_%3NPSoZ4=*-czp-f&>?cV-U3ukk3e!Z(n3rozuQ5PEzYH{TI= zCX4aapojG+DQHG$0~aCK4sTm-De|!ib->$(ZRGhVLK`u#o#ys=2-2GGwYv1}m_t%? za~h~)sw#?LIRh!|?Qqg=>96Dl?$ghuhSlznfC3PC!85u|!Yg-)g8YilVUG{pZ*BN* ztmf7>A4CebXQcx7)O1iTc+RDyc1OZb5oA-yWd*RRmhtfJ)gRpOCcU1$rh@UuA1(NBI+GV}ENh(M6U4eKXMXvS=~Y>m%$lm?@Ojv&Lz=lF}Y z%^NgxTXU@1D}MMXH>PJ(}b-7#=<~>u-!GLPM!hqATQlp7;{pCa^8qhE+% zuMc8hB~H_mCW8uF5dW_3UYG; za-!=;#DzIZ?8zbK&2rIb$t@ig!m)KLPeA#T5u?GBrA{tVM;cZSAEQktG2Yw@R@Lg* zoZ7SYz5=z2CB9#ek!?W+e!wX-CSx9TSZk;uZ|=d)AsUA@NrykIW`sN`drRkiTfQ8f zBvCrUsDYFy_^dGaMJs8ND2_N-H2m!8fje1k?CwCVZ!azoGC?7=2$l0mBHSDi9DQbc z>z+c7$Z-lsEQfH9SY%|$Rq{CG0BBP6%_v2tGHA`oz~_8sdGEB%bV7Eknv1g_awpD zg_;llwNAcCw09EpELHx&tD~oe!GA*g_R>xC_MJ+pJDbZunB#|M-kMwXDyte8+r%Fy zd7rJ&n9`0DOUfor>%8j`9p!N}p4rOl+r_vnBnXq%)@^-y?vYf2_cm3SW`F-Q_-Tda z`D$Z5-PkiE(r@3|1Vm#WsAm`EV_4j&^R}BA_n*sO`c>?DrWU;?M@V^y3A z*z^s<_&aJomxi4YVCdewid##p__Z3<-K%3?siMVY(v{I#YSvuG?xu(ENrG7?PD4U% zG`-A}_djv5veb=gK3?7(?@LG>Xh3_}(WO>9Ko56>dBNSZV-4~bhogK)w-3TuN0Pa< zYCCV%B8I~WRp04J0flABlN(`&Z#Y`1AqjW=-g@lR)Z^kC0z+#VVw8yOPCyRW!=-Jsv?J5XE0;Z!ZM)G+F6 zpKSfHuoqnY1^lwzKY{jhA6sGxTdIEQj=LraX()Y+J71zogKX6ktX|Ql{2sh^leNGr zA09bnme|MzZ>jGZ(D@pscLbRCTHKaFuJ8e07Y~V31ydTvoCFI&nl?90i$=pb|BKvh z(m-q1Q{V*-p;^`B)@Tyxo~Xe&@fS-jf*~i!orrCK?1$l&=J`5JhjFowZ>Ox?HcM2@ zt#N=Hap6FPXTTTR3UHC_Ax%-u4etPVf5T0aIOBOHg7`sV%||mE8?mde%(`SKx}5?k z^*-VdD=7m&SfF4#*)+Sq@=Vx$uyo2GiYqA3JR16WR9dl+0#?W~`& z#gpTMyu)x!ce|-Pd|_{@gKIS|wr}b}o3j_73|3^d@f>Zv^U+YDKyhk7LHhi51P?=w zjAWP)Hx+pD#)ejZ_-klm4@HnYM$c^rp&c5nXpM9KU7AC{)e%*PR2p1SmAa(E|8&Ei zY^nqRs(C&DZIpjcQ&}f1^D(J}r1CW^ARBpC^I|JII(DoD0P4U%B-`QFqRx}GOa!<5 z(H8xYred`!5k5GWI-*k0n4LX7s~Paoo93!vPZ6#QpD5mdWi7V29(KZxPInLsc6}kk zv`cx2r!5s-|}e3$3((B?*&@JS7+ z03Gg^DLSA{K65+OM^1ruFz+Thu{U3!7hkB%PIBa*HEj=jsk=pl!nwFCPfBQX{ZwJs z?bL(x^C0N(3p^jq9q!r8#e#}v3DFeOi1^b$5O|`#Rm}f~qo@{j1!T_XpXk|QG2D|etC#v*ggasrb8E8rj z=Ndn4dK^g@L^WWpqTuX^>mthTZmrUPECpS}9*W&v$a1?rFnhDmWC0wiZJo1RRBY*r zfM$I9F@T#PnKbRQ(_Igm@}-kgpoLl`Y|E+!e~9~)M{32KL#ei?C}40pDnUp`3W1j` z;yP=EeKJg>&oGu|y<0tOaS4Goj>4h&N z3Wb=rtFxk_Jw|QPW6!B$1pHyt{u?siDO2z-JjBeLn&hU~5Na$DqymS>9(d??86y_q z<$P{HnKKA>{?$Ai8^!0pLEf%o>Ha&9x&MSt1x_>M&as@F(I$3h)}74ysUE_6U!SPqkH@dcT6wU`p7=l$X(VZ?FrKY6C28TwCSthpCY!F>oKDwT zj%WE*;k^8z1F#9B@7=T>k=qppzbLQM18i?LIh5~0_D1K-hRMk(G8|{mw2a@tBPg&( zBm$|lbe}y9x~wD-74>tg9KmyL(PXC{SwscrJkLJeQxUtBCKV^vVOCqf4Pw-!a$n5i zTC)bYz3z(&F8#94Obd240YuS~%5({4%`9?vl#5LJN)=e@ham@QWAjjc7y+D%P+rSf z<=zYNX1!Q}Y`dAOc9TvLpf)`^ZgzyU@rCoL6#2EK)~?&LBJECh$4xz)vMtn9Ko}fR zTz#$uK1MGsXvZB{;?*J^jj__4`2~sBY~Pn$U6joO)Qf2^7nXmON-Jm-IljRFqBRKs zxX%RBGIlnbN~OK81-eFQz<`zJSqezdg~~5Sz2nVHsX)U)!Bvu4*`=0zkf6zT2J#bN0Lo;55zVBaHMakM85k}C`s8~idCcazC1`Jg<5Pe!y+&fn>P&U zX{N%7E)h`u5z#yt>vh>+H^7#O2XaDKxVklvD2TopUs~U;_vOT^>3owW`?Xsy)d2TO z^rKJl>yF$^gqnMC&|Sw7%2vvwjywAldQpHf2hEU=1@@(|fq;xuf{==x!#b_Vy!pkw zSK*&$0Xk_0xmn#gC?4mUIYP7+$$HeSd76@ewfK)`zL>;G55EQXwk-wb%tHHWN(7q> zl%G}L1TlqAH~B}R@9JNeJ=p{|oh!Fimn+5vk+@zBbp=lJpCR8dygnJG(Y@)qu6G>y znDEZz(9efAxf`PvU*ktejh=?XdQr_w+0j>=zw?)O!CZE2-}N~Gqlo&hm`xz)3BU+m zEX(N(Ww|Z(ZBmova)!bvvzkSES*SiWj$YNC0A?VyqIoTmb7O;GwTCYOBV*Wg-Bmf# zY9$CwM=s<*h3Uia)MUbF{L7uVxRQG_vAht>7sxnT!6=kyzsb(Z9PZ^1F%bcL5P5G< zKy13$l1z2veH#K@Y*zlh;fZKd{}j>qH$DEuw%6=WS43_zUN8qXhqiVoa*GCLH7otm z+xX)?nB&!x3>!_nUJC5qCQik4EVKQ%?}1(LhOOEejd)(M`x&6j-$RKdSlpANfpdMoW&li1Zm#7si zo|Cn&#(H@PdcP++*Cd~vR3S+>JeFQXT}7S7yudspTxR^~*LT2tf(erCyFuO{gn@%E zQM(x7=Qqd*L{bBgXG*0#zEY}oxqoF;mGSuc`0vB~_qb2gWRVhYxvGCT^4^l@l2=@` zT`W^RlwkhXNQTH4QNKrPkhKmPy??uiYDVb$=ZNNA>D*j9%JgJ%`vEPK4fKIlVMW(BlO$m0E^#ClmQ9E>j1VOK^$zK;utuyCK0~_STwSU4MPj?X znhweZe%#NZ^tq#edGCrxLQW4ZQDLLM1M^RV|M^x98(a8kHONwNT||~85{OQssj34y z_=044Dy~#XPtgPI{)-8MC;TBM4-K@p=Y4|w?F6i0kHXRJGf+eGXLS4zlX|C z{hd#F9Kn|UWn_da*SrXZE&@(ZC;tUmgvE=W^ua1q9iv86{s{nL1#SQY_BF9du75Dy zKbmmZ{B|A_Nh#5PH%ui7g82Xe0Yd+}GC59M{#&kZE6{rFe>IFr8p1G@+dJ9+<{bz{ z%n+f7aV`=hCH$*lwki<3YD&(y`SKsr{vF|3W52z+-5cce?}pKT)c5}{FPzwF{yoTCkRaYHEbL@!Q|e3jHF%s=pE z9>#9U9dMWI(EiPqU&*7DSP-#iCSmblCzyQq!qa^L~8#0Z$Ql#E3N5NYF(Jj-wg&x!9W`k%$%iPrUwi zkGHD7Jyht(Gez2zVMw&n;x|_|?-`_7 z7o;ONctcHuyM|tk8@_G(x8>XZQAg=;=)uWxM_^EU6f+wNxl}i+Zqn9{!NO?7@Y?U= zjIa>Hul>vLH9>!vBWeh%_x7HHK%I^F72h>1G`hK&VC_gijw=+mw~rFJeN?$lBMwvJ zVB4^f?Jps|b^V+3EYE$MA$;UTDZ~N7DJoniyA(4f4kLH-?C)dEA$%}pIbILqs=4iu ze{qa9@E`MEH*JKe0cM0KhG+Bf+JmP}v~3|_=M>_xb$ClZ148uqg{dKz{l5;QMUlS| z2(>I4Y4IXzpo^mE;{nufi{3A@Y2vIN+Coi_L{o9c!yZ4@fxECI9=FB6$61pxa8Z;}F2o7yUcV)Z0U^1uK~ zQQqQDKxO?EnD~p=Ud_NQt9z__2BP}b$ry|xEbGs32c}?+6nxFa%o)i;)m})1Y3?Ho z6}7vqP&D=B{ITl?vvcmW!6;OBEC$IIeM4w6*~=SC_#2jxYY9ph-~f#?;uM3qQQyvF z`hlhH=2s;wMiu3?*{wmpC}a=87@Z=E9Nl>#JMYk}C;EHS87g5J%B zP{YU>L1EHBxxE@+Du1q>Ug$kSo0t=Ow}BGARjpSF)=&XgA~ zk`u^w2Zo{7D52auCOdrH*uNFGrDZZeGfJh&iN(dzBJy;`f+E5$jwN(w^3EET!?pTQYPmwCK?2XKXRl+6pPklJ^`kXC-ex%e2l$8`Cyfz7#XgaJF8lZT`qjVDtHT*Jg&CPBx~Pp)Q9}F%F9o#~!}5 z);B>pJS8_K7AVHYS?Y{rBK$VbDgCLfF9u{E+|h~9blaWVI=Lj%d}?|iD;yHp=$Bs% zx1N`NhwyQTi%<=httVnu#AAJPU?yzQ>4N1 z?Kw-%YCFNAfi;sjYD}@czJRsG<6)Y{;8|kEo^W){d74=vxG+FShRP+4QQpMkwN9lPzRrk|#kW{qd=M zp}mu3ZJm<|__lJ`k*Ab-$b2ov7Nbw*Mw?Kk^0>?AUW!NRm!RL)tfPo|gzEDkks<-K z^Aj%oy^My|t6iKLP*D}Zbd*m(9Sh;J^-MkC_?jZC=4mP7E2NR-3lYY6&%1+~JB{q{+KApZFi8>jx7I;VF-TvYQf)ApbOo06a3GF=oSJ;l*2kJqY6ucD z;72^z^kIJt)_=sz$~R8chw?FmyPns6WG(tHdt!c{*YB)rkju3l!Y5Be9BsqTPd~7j zTpWn))8W+C`8m`t8|gWt1|TQn0$nEMQ{U@m1r9fyED8(x|4pzyI)ivx!mkZ+w@Pp&9YD{;XQBbK2&T?T$F)L*>cxxu{1gkRH(ujf07&#f zSwYg4gK?9#ca7yxs{8#6m`P(h#~g#F@%XC)Ve0s8^4@StBc9RL!i?|bSND!7)JBLC z$5E#~&NSBD(L3GR1~lt!%Y_Q$O7IdC_{;ijW*rjDLiXGGPiSQ*Y}(<45z(jN3}9!^ zPjF`2fei|7x{A;;zIUyGUzC1^1HDw@)x%*a{gF}JaY9F@udCub^%}|kvV{esaR08S zza3KY_#%Li3ueNhqQ%`Z1=>E(ThM_HGshbG= zExq?Mbn(@`?m}n>=a$dW)#6sxnaRZE+%Z-p`koHZj?=AI(`xUoLN@4Rm84o9+T{COhC3SHAjtX}tJ5Hz%pA`9|2=z^FwV z^K&BOzM+rqgtXArcIaof+cMS%IUNHW92Zl#9XfFt==U8RxGVlMzwe4X0xhZ>XZ?D5Ugx`KYeaI+<>USbLj-og0-U&Cnm;gu%=N zf2#HUvL<3=QwNp!Lb1vW_!H+Uu*H}X7jH>&?S1kUNZy`ep1uPb5rHRpuzFuX7s=<# zbA}6YskmrO+m>^Mj?)Q=4_+LLvDR3DN87v%T-mGBMZxrAc|Vo8zQ^UW-Hs@W z_3wvFm8YK($(Gq3)->ju;PzQNE9p{=SmWk82->NFc}T!VE#n|N{+Q-Tf+`_gtg9lB z7#sAI0ykgX_pG9=btq)s*8GiByj9(P5%fCp4sO!2Rc?zrhK4SC9wmT?gF9Pi=&vi0 zUJCqPns{+ZGNs!2MAeG;XDZv`;xti}7uzDeNZM0dMH^U_1h_5w+1k7nFbq<7fJ8$2 zuwa$C63lxddN*r=-_|;ZCSgl*DBjNa$#p2K{aa-+)%_~BB`^-X-S=~|6nagY20HOZ zInzBcl1pWC0fZU3TzKlGlDkUN_9u3s@OFofjhg;BguN3~jD*|V?@#SNP`u{a%Zp~- zZ?bCSOz^oT-Lv<$>{eEucEc+5T)16XcZrhB?AwgeX=`5&0X*AvX8dkWR*TLiHD?*3 zoP2sGhqbO3#Q;`EFh#L<&ioK=Qti^Uktot}_Fws04jWPNaD}`Wl@7Oz1WK-aSmKvF z((u3DG7g+2M;zEWj_bTYQzHLhWpPXLg7u>uaJ+oLVd%(9PZt-*4?#wqV+mO3MdA{f zaxeXtie|&JY3K}`b%}o}!_0IQqOw$iUa1V24^P=jX0h=If0B{@Os8fcSlzc(x6|(@ zbQl9dhGrNVXVOJs7QLqk_Q*!Z&lE2i=QTUyzWMUv;~d;VD)wv^&yr}XA*-%_C1lcD z?ztUoUW=-my3bZ{JN-3jhe}~|o70lj3xt0&*|{~z#v@bJ`=`<4qt}#r7nhC#7R%Yp z{n%q`yPv=ONdD|yID0F8>!QJymQ7&)%@9OcND0tiKFhB$Vr|WoKVdP{?PV*jEMUAz ziVfFAe1-(#+qN}1Bw01w=ZAVcANU1Aiqc`1T6R*D(7Xw**ox}spBfJyx0mZQ9MVK^ z<$U(rSaw)avN%~Md6L+7VC&%vXFl-eydmGBwwvtV%A6NEzbmVGHO>fNF3#iJn)VA; z{q%2folFYvnjRxhX(sD5M@-mIuNd7G_G4*(ViM|f3p(ChvAkOGKliD?`MP{*e*o&v z;NKatb@c9i`cR^o{p4(`-y^JN_`P0wPI5skNjwQtsZH5CWDI$EiIl*Z;J0U&0hwI7 z$|`ofjHE7<-fg_5OJ>;voZrEsN1mKG)<=zddB&e1vH;`G7a=`7WYmI#=-(VyY4AwU zIId55j!rSvB(>9vHJGhsTU!#d&AM!h16`DZLhWjHhk6V%t}gN`5C^#mYrEN_F`m7< zVAI+=FKH#V=-Ft(WQl%<{EmsWXx=pU!oA;2lJ~B>&@!!;>w%k9oW@pn%7&pD<_RcJtg3)UvWZP`=PMVi)Q-NUlp=BsPIFb8pGqF}- zc*41cQ;V5#{;T`#nh4-Z=;g|@+&F|1>h%fbJi<63G0IIrV5c5K=;bH24aS#+Mf1KE z$hQNRx_-v#9v{+k7v|}St81r{PW~zk-9P=+PLEP={2ti*9~XZU0gnKsw*c zPbNQmUVO!0RQ!;RH4k9KsIJX=EBRNA_de#2S=&4ag#&N5%`6jKs0pIHI`E>=k3$#G z72JjXmNzv1Q5JFDEqMK3&ce+%aG1|uMn-Z_`i}(pYk8QKfl%cuihhD{_njj|1tMQI8Wq%&E4t$K6l?g zn$N+jBmQWP|Nqgvm*sb+nl<9edAm({N#bZS?j~L}XCwE-jk1ZCC^q}AA`4kt{O`2D zk)<~c76)8YL&!Z4Xq`p|a($oaOotqY%imPSd?bWv(3!|RQ#KXgLwv_WP69)mab8Ar zcGYD6qTxKy{b8Ei+ROjyUH<>xyE!(Zd3rD)UcDI>$M-i3|BGfqzLCN}Qsb?SQvM|O zx4W{Hi(OB%9~DxCbr zXa7Er?cY00qLA8O{ru0a43H6a;trl-`I~z8pT1*R5g>_AJ&E|&iJ7A#Ag@M}i2L|g ziR(Yh-Pl#e zkqwa=5{V9OsZ=N_Xvd!L71GCM$BO4mL8r9dB6j>7g7@!85TG&+et%kda$$&0tU&iqwVtH%&Ut&1|2SEb5Ty~xCK5ROPjj-rj^{8M-SNcl@J9)*ifbG4sXsZ0%-){but`!2mm% zkrCO%{kY!BLULzG#-a7|@3_VSw?>vWRa@VC7-jqVg@m-I!PVwGb@u<@v%YT#P1JOQ z!w#3aXk>G!G?4hNm(!-Q&VQP|OpMaVlNbHZvjA-yDOm%f`cW`LAko{GZmugK(#HF| zRS(Tfw;gBC4^3^N=x7udGkJd{X);r($w#846yc?vR~xiC@X$E*HiY(o-*UpQr;8lj z$mV*GSYnm~m*_aSYZU?=F&CPj$XGffCuAwO!K6B_RRttS_g|ZBP*`itIS#{ z@Z+k#1GnZF(#nOzZ+~dQN&scUf=+Agn5(b9hsoa=G+9yoP}bk%U`Jg4VQa?3MS3@j zqiX1TA-+(hlIC@K{nkGbnm`(My(c;M9TPUOkagR<8AKO!)8N|Q5=t|&oU}RYlX9gG zs@&)y^k4B9IpZl0aku)1xscG)5f8E!N#r8z856rM$%j94F}-7 z&HH_A>Iw!Uwx-<^H)cwcw(a`2Y-Zi1N$@r zv=FXQNTah~t;h5cTcJoN|1kJzXXJF;`rc~hOhAWv#brH2a&-+i2^FznjEiX8Oa3E5 zwpxEHD%f6G`&V?B8hAg7Laco-8T{aSU!u_yuetJbaG@DY1uhW3kJEYmP5lWM^Odt& z&~R+d!N8QgAIJS~0z`=_d$Bb)T8S^>2o$3Uc9x)4RMEDS?2Wp$105ohWju}YuXLi} z>;hlbBfvmWDjg|=V_g;(ErmBR$}(PI$@({c$_oBk(Z7E|q1#^dR?r}2Ml_Hx2xz7$Yl>X>U4YHx3b(`ynxA0_j$OSjz21?b3`(LED;^d2Ajj`F@7SoY&Dv8Kgxl-|Ay)S=^FzHs0 z#9(ALNMEYiY!|D}&?0mh`&g#0eik;~QHdPPX_5Wwa zqKrtR02~cj3YW=Zr{_v4L8?RanwBT8{R>Wb?K{_CYPiiVD>wY289bs5FI67wT(`%Q zKQg$89IZw9)5cSd5uxnDHu_JX`nsd!2dD6`)vZrL3hL4LTa95O0y$dwOWAIltd}NO zH3(V<_WDrmvW{&tuR6sTQGL1l(J3yFKE^ODtvRWQIY|n3IQb#zjRhn?T!*0bu{=pQ zJII?1q+%9{**T$?cYQglYUmuWrR`K{5@4T}9}YV!xI8_J5BTB!1kyBuJ2D8X%)gjO z_>)@yr>H1qLL_8;MntJtV3}XX0d*eQTe@2=V6VnC7_NG&`DXV4FMYL0XH$Yq1pMm1fiLIL1HO1XG%jgBrhp$0h>qj;(it-jkY;nA^$3W4EpIz= zKRj}qbm6wzI}+gn^; zNBFLDo&~CZ{7Xr3oCgHDk!br#XW4azg*a@TD;+5!37a_L>6Mv(^VOJ6e5JTnz69M{ z^LPbi@o?*DBv7qZrYGzlxv*RJ??=&f7>K(jrG&k4jNQwy%Hxf|rFn7L`MSRK+kM-1 z=;DCf!RJi>7680p`Av-HTKLb~E`*&R@6JcYfTe4#2#-GhRA$&fM##n@4 zHVv8;y6Oy0%XdsI>AOKv+k-J;r|z0h9CJy3ev`ytenY_6bt&Ct1h;V=%H4EUT|e}* zL)1{Zo@?*_VNY20?|LZw^#nb3L`x@Z;==oVI_!Sjxnm8Q!DTe-F>Y!gDRy$=ftjz) z)8w!9O&CZ5PFuegXE4r|jUVqkKwP345PgUCJpKHW;V*Z}%A*BgoO zo_ngzgpu=BgTD0{0-$BGLjs@`8 z$O6~-E?c5td)LL)VUI?^x1c?&>*~p+1{)zg{S{uievfdV+|(Q`r7y`>5*c0(%C3=p zdeD91_!H6Ir76z=z5-j)i;Y(DZy3l5Af!BcnM7zCigUQpSz>ovtHXw+i~i{pBFLf+ z3vUb>QKx|}{Wnn8)8ScO>HO3Kmw}!eF*A_DH-tf+I%e~DFP#dhx^0adD%?EC`tKqy zeD^v(?PVkKKk1G_rnQR4gsi&jWeclkv8!KBEOuXRbgEz8uY6a_o-N5#-%h}95ug&9 z;D3*A>x!mu;6Fu9qQLaFE}U5A()Xu$-_3^q@rhY-mu#NDSvs)gkftXcn;)6I5A8h? zsX5Ba;QxH+yJqS8IX-+&#Sw&DJ3$_@*pAM++X7iSbZxhtA2=34e2=dBf0%j8u&TRm zZ&bRwq-)XL2m;bAf(Vie2}zNZ?(PO@X^=*`ySqU^x8!H7&Kg1fI;2z;bq}lbD>}Fv_T~GE!Hr~(q|?Jn5)a#3Z{_;C zQC%a#gctnEUU-8kNIi9WIs6~o(%K$l=~k}H>YZwj$TGx!vaSplULtpu{luaj`NqLZ3_PnfPuU zlOWZ%#f`ZVa+Gy`y`bnRFGG5A<~77sI4jPA)f?Gl-A8XP(WtM8PD{wkgD9Bgmh_^uL7nU$3u-M6S5k?lBzxqPdwIl@rREe7!MK$z)hJJj7R3CIinqhU5D^hM zJ39w^)pI>*e!C%{85#{N`NAx=>xTsB#h0*3pOZIF&``y{MImi+zsgDLoj;)pWQcdA zmLvwNVfpVIcXV6?_y&1?6oAl4sW60s*<^mki%Kf*;|0b~8%rVFzG9y;_~H)Vax`Lg zNI_7!r~44?vio`ykz@EUwovAc;{~5OhH5Lxw{zrIx)QLRa4)GfRgCKEFiOcKB{E`= zLxZ2>!J%~i9KH!7m;Zn@lyJNQ22$Ur&*o}>i z;IOc+7+Trrv^4ZvN(<}%<}*OAyi{kFmcli`9t1~6M<o5lkKb9GD@>rmKg5$%ZNUopJ+Hn zxAY@>;?rqty<00qTRZFIfoa(-^Hx5U#w7@SQHj|)^Nl^q_`iO6AiLc+o}Mk~&~6b2 zofuemcZS^+pDs;UQ1=m51D;Gbx}M7ZQ=UhMm?`W*$TJf+X&IUI9Lk4XSJW`05C5^b z5~`E)%s*rzA|h!p9}!qu{ZTl5bi$quaR`@OAHK&DT5OzH{uQ-WDX%m(Dv^^QzResI z6h#T^*M&`xvynz^;`O%EUFsIzAIb^ylO9AHaFu$ zrv&+>N*q-b*Q3$f*dwE3VQqLl?s!FKWO&-cuB!gWC;Pm^Gcz-5FZX(|ghxayYs6}e zfd-ul9F&Ut#o*#WdqXH!OJZMnd5KZD9de28*DH9sll~K(d{X7TBVT!L(o%|>G5#?* z9MMIhNClXEDeJv8cdLUJ84NwlW(qm_KD&);yZ1kFO^^X*aP=c(E6uV`l?R4?RS>Xw zvc5#OkI>r$$zc+~uj`D-IRCu{0sg(`Y2Z^tWTkIE3v)vF`Kz08Vg(&)EsG=F)A@e6pXnxCW4|_@Q2Lfc_^6IDudEr20Iu?<@3lg1^RS z00Jl$fcxhyFgw5lh8pIga)21o&IMfkB9P^J5Xu=F1%L}_b_;@Le-AW(l>vU?%=45H z5aI!+H~Ic0KO9Q&$A2?~)g|aD*SEG8Q04^!SNGX$=|741wY>LM(pz>?q>;a@7l>)! zEJ5@O)lwR^_@-`|^~0VO_n9@j+D*R+@>P774!h15_(bp*{b$FK0An!30Wk)?m&t&K z65lQgT(b~Fd)@i>tU5%W+6i-XMs-V}1#A_~?mM^lWN}+_DeOpCfS|qOumS#n(0V>R z31HUu*-&}Sw_&5d=}o%~m5t+jpGx9O<>b)JCNwoTktDLztvO{aT#9($X2;jS%|c)* z%%~@JCIUB?(tQE|X-^+dOK2bIzu`7DVS)?aO8Rlk90@2Lj4V_ja*ay@Ps9!Y?#-?W zVZ-LHsvC@;yoo5k?I=RnaBUdG-rGO~3lPZ_$t97eY9NKP%eK`OwLK6Jx@8wDoeJPY09D=qC|MSiJbn^$J3K!>%y|h1E_km)|4WkoHom+s zANp%HYy(9Tugd$y`MW67KH!XfXxt|kXni8Tf*NXC(L;lAPo~8QBaBD()a5ZyyEO;?k!inmeIjHT( zC*3{S4yRAVt8dMwWI}Nvn=&`R9{La`nTgjsT}pw-*9@$6vbRz^s+Oc=PkuXXvQUc_Ir7N zs^ElPQ^?jX!RjN_;-S`(W;-MJ5qhh)AM(7Ur^wB!-*XCz)-`0W>!x4STwJ!QVxQeN zNQq1m5D*b*`1lBZyYC1mHSYxatzp9Z%;~!+2alL$dJwLxprNt;gqr|D>&fGF8|C$~ zQ>IAckH)Cc(bvrfdcQlb+x~c1{j43?zq^qD?z2{gWf@?QeXC{e4!9kCnBz=#aWPuk{T4?|bhJUz^I1s-ERhTB*1P53G@_!OBVCZ+UVp;Eh&a|+z>v`AZaMws z85tDrH(ivyZI726T;&4;@@Ybjs7+svBy4O>QtY>3prT`ka_@Y>YNeU@;urhv??t<# zV(581)QpTqQ}UXLc}-vivhcxrO0y_<%$r;u5)k}oU8Zz4^u4B z+leUldOIsCbS$xZPV1(lT4^zR2c^jUOzvIAxMM7@n=a)Tu-M(gm{j7jOdOa2_{P}S zX{t7|8qXyTz&(-1wJV$rxX*%bCzDQ&K6{a7{<+^dP5-{3kCL}z&GM{i6kK`3ifb0dml_G{;(|4?`o)Ki$ep%lpc-$Z5%3W_U z_;bz_kb0*{c8x`YN0&mwv7M-SFOtF3yUfCo2l}dCTUId2OM@zAOwpBR-tCf2JyRpP z0U3X=l%UdudB3lcozY&SxK+A^mGCrq>>iA6(Raz~+zh|ZorG43=-tLg=IZ_2HfC>wcV)B9WCtLk-GtlJ zY5+Dbg%EvopUUx4#-W!m7lDI4@RO}*7lxp!m|y)fpspzR_7%pr>f)5uN;|x6X7#Mb zv(V9dlm&ioVIlY|{uMWmf8f5hL-+`+9i^1X?t;#(Xnv5D{%Vi~{D=tZ3&> z7HgiX{5@hA?F)@GDa-dTUu2skxn}}-dLm9nh5buAxD5(n7)X55i-giF#|=%Z@Cn|{ zg+Cmkk=N9}Myp4kU3;H{FYHusz*D8vns_~%)m%x6%JwXofri^IrY88n{WI?6vq2Sb zfLksDy$t@>WYrE@{Whe{{A4gL-7V?&H*+G0rBaAmX54l>Mr&+(AAV`*$@~mPB}qqQ z?+EE%j)eykf7|^oX@b|ofhem;du?@d{m7 z6BY8ogT^ceTR*S^J}7}1?cq_NFb?jf!FXQ6l{p;Eu zj-301SEwm89)aBc+xPFN`uh6Ln=!H#9(P~vHyOlmyd){Hv8f^t2nY#D?wFXEIyR!j zBCoE#yutai+~gEy>F$1kn@VBF80d$DwGMbX7DPlusYA+}b|k4^yt4(OmrO=pI<;0E zQC{~O(&J!Hh{-sPs!)||RcPdiw3O7U5#`iMND;M6zzLQkXoA7uC7^-i zo0Bzhjj?1-W++c)Z)X=i_l9uc*W;CdtyCiSB_m##q35r=mAb>qKBK1qd@aul zL;u4=tB!@Us<#SRJ5(x(fUeTKlEW?A@Qp4f4KM%iq1y&rS=0 z9AJqPMrVr%ZeSb9h(qW~Tu`I#q&7Ga|dT8a?#F zV;)D)FyWpiM#C!~--yYrf@hL^Fj7%);y7>_fjAm0{5c-HY*L;jlN5Y^RCJPHKH&uc zea|CiT*QTO+Iq%3Hq&WxKw)*2u3y_Wm6J8!B!Z&9ud2%=5_R>BY$=((hO?~{**@8; zkm#(q1kY1TxRPxUZLroZt^PR7qe+eHod;}^9(Sbx5Bk|De_F%1&xtP$h-E)Oa9;nL z7&Fr`F=o%2l^1VP{0CNBfwSxuDq`!-y?uEr=J`-g%{Z>4H9XGQa6BR*ocb2*g$}#I zMvk@jL3P1>UER`h`HQNqWoRED5V?!#thVpZ396JOm@)N5L$t@p4iz!r5lL;nyW%EG zzlhd-QL}mNI8$5hv|ha>81j=K^W~wk?pH{jMN=?dT&19rtbS9mO|1!fY_JtR-JSS^ zJ7(TKFB$5dfC90}h`ZQOX&e*L+XWNmwl7EFQf}sS4mzkYTO590atV@}Oy=W>o4kwn zWWzT#w+6V;`-lv|p_Im<>}edI#8;1La+ygZ`Y4v0*w>tcSZaR{OH^19E+>sQQ7p)+sMTB|E_C^f^MYnPQ&!`6jF~xKu95aecVQ+W%-i0G|?tK6OZyo5a_{Azj`k z|4ea3mHx`ABhukU;oWYVuCK+l5}6VrbC@OdPi^l*Dxz>+-B;#Kgv4%VG2gx>fzJ}p z1!t+dX77)J?dCpIG(LZKtYZ^>6(v6fbjoJH?vr0# ztu99#de<3%w*L9IJZj6aV>updU|H6pF)uw|tQ-LWL3SpV$F8JA^u*ZU(2#UEH~yZv z{l8d%WTgwqJ_EV3XsT?>VN!WetRVyfk)WEmxv=3A5@KGbBb=7Y4G0V*=~<=xb0cf3 z9#0V~r!X@!vsT$hfrl=CtE{53@gwtr_5R`EGMA5U8LQWo8|VC zXYZ>%lEFEpFdV@do_3;ftP-`|1O$gzjK{d=&?;3^RI9kUxkkSixmM@0}ZXE5JjCyzv??( zG{}`m|H+J)Zp2)A#|u3nYn2&oy0&g*ZMJG$ro!+<<0_0EBE*Wag+geqJKQG`dNkhrAYmr#aYNwclteM2@pJK-fZuUcm5wd) zp2>DR5pVVE?c^bJ#7%+gEX-ER37A_6KXy+syEcQ-YInLntg3O{8irLUFB+?QYUwh( zWl!X8`_hyBM*^ksezJm&8Wtua-m=;q@9e;VZPVrMA`>AUw{+)qw%94>mx0vn%{h7{ zJ)y|_Rd@WJgX?cst^|=^oQ=jJLC(90k7WMn)9ddacyYO>ut^V*>Kc@btk}9HVrA}+za1cklBKa`)B3r5aHyW@{WM6HlCyN(b*QgiFym%h5nu!5gh z$w%*rWtYNdPXx;{WZRm)uD-EiOdZ?sr@@pR7G*KCrgtm*b7nhz7rW_qc{XHRj?&tL zk&XD?>W_5scFQYI$mlu;LAsfkr_tHL$yyi7Cxl|p*IqoYVY`}R?wOgHakGO+1~9(A zlcCw@4#8XhJi^1nlQm&BzP!v(HMEibHxv3b7NAQX8GVtAV6x#?*Th=`mx8=XDY$aFLf$DR{^ zive=8EzqWAtiR;4lkVFS#?fl_^2$vAWF^HGeaXC;T=+}yi}9C5UT|TbJvz67{MJ$z=to zWl408O7^2h8{}^Det%i_!D||xJ?%ikL7al7@4&XX1jC}?pxI!`Vy(?Z?2JY!tW9T| zb~8yH##6DTOs+)lbG@&n-`jDy-1bA>UXQo7#>EU4uLU~ij32sRhLi{VF8|mPa9@R8 zAPvdOV(pZ<+5Bjb{~bnuVc>bgQsDR}u3a`u@zt`IQYyoypkz}|t*#!m?Ic0OA~FfZ zw`h&Gh@5O#5=t_)f|wRXF=-9z?gXMuXFH;3+79~87)LR8Z#HN68QRpiT-Tmk^y;lz z%xep=P3zk-E+wGq?M!C+aVBHNEsvO49LW6fCpnH8=pRt>u5N%YC{ylK7A-g9I}z9J zcn$iRTTjf>_JzS{w{rj?6GlkFwL~Kz&4GzI^_!Q=GnAzUqck5#*j7@}VHK!t_xZ_8 zBfV~>x*vbNt1IqgF3q7zg|z1gQ8UBZCq{3|iFXz=&B|MIq#_A79`A_Cgn^=6iSnEf z7ndfomH;3BxtGJ%AVG}F)Z!wuKU@g+U~o3g*~LdW3y|03Jtayr6 zEEqJm`!zQ!=1nfE@NLjB!>K8=`>s%|-`lruvu6oSa?EQM5&GQd>FND102Y`X?Y^fc zFVAIVo09oe;KpPWWsF}cU{agRKiHXbVAhfp2aX>w84*N;NXJIOXJt*0Og+*N#xuzh z`^P89x`nQQ%-_?7wJ}1FfULX34d{dvB+$RI3-ugR`*Bs6W1h(pF?ME|N3fa+blYrL zfYzJI)^{D2Hc*Nx5VrhTUts2p7|Ag$hQ3jaZzMTef}pd;Kmr_=GPsi<(pX~@xN;xe zY}OoDBtkFv+R>G{JuwQ{F{wUkQsA~24}J6`-XiKz)1~8%o-9O8mjAJoDSBQ^=S~@F zc!_J2d&N6SOYUSG@SzBzDl_ZbIsy!cqm>()awguX`Rq+E&r|HxP@RWuCPlLcgC4tMDOB+xp#5X-eIXkDjW5 zcqoV#4!SXs+kmcqa_9~>Mn+-A#fgWJnTvI&5&sYkj?a_QQUeX3%U&@au&}ZYGqy4M z1zGT^^7M0j_mS@VQ%IakKyIEBPBB=Rz2Ujt$G>MrZ}LhN9n_YRnkxOkD#>#pxnQZK zrNuwMkrK4_K3CjR6)`m{=ALFxQkH)#Q;fr(!bFca(rwZa^i^(>xGI@-pd9FF&VGF- zeT}0sSdzUFd@(Lvg5fxazJVths}@f#I~UEFO&c00V>C5{3e@R?(NtyC`T3VUyPkvV zIVIe#D6kQVmMS!p)i_SEZyZMK&Mc?$l{F%a_C}KOS9YgB<&j#;PvAS*zD{q}b>OZL)(F zwXYjez=J?OR_@PiBxVQ4@Ww44cc0BInw$}@rup@p3av?b@_jbaxdj40(H51IP*_Kx zV*NZ*&-Q~b_I&Nhe2%zhO!T+LcQt299;IB&Wy>}MgM}kP}Ta%QN zD+%-Igr003AGW84JN|n36=??BzC}n$o@+$3=KkVTuV>=WIFAUXg5jz0iD(}q zhZ#D?ROG(aqeru{=E&%@(%|eQzBds~XX3fX1JeB$RE-~(aLCtxoXC|FLf!#*m~=)3 z41f1*@;nng1ZLhDK4K?)}3-tsRz95XSpZ1>~);53s$&rmXFrPt&teKAb z@Q$wVdZedyl{&3xSNbCIWw+bFHxdhJz$-)<6lZM4 z`XXvT`L4&bt6DyPuh4|ju&6A_cJGEbWt-;u`1PaM8BB_IR3r|yu@5(T|O2a|3a z-#n_dg(eAK)ldJV7`gkV#2BlsJ~v1ez=$}gMuTGr*jR>Yh5)#@+z%Kzw@@_u^3M*hP zjxtq4)fGG~rE#Fd(q!;-lzBe+0EZB&yq0x-#H{bE|9(s<{rQkPndMdzHR51kj*{r$ z)wj-@ZM)IIKjdpeKr8n>61=sPCvi7XOPZf&`S_`<4#K>`hW+-O&^(9?7OlreDt1lAREydJ5~^fGyChxqu_1+77W zDBke+uAIKC$qN#hX&c9D8Dj-lha^#-9v|v?uWS2`!(_QQ+6tc!?JoVKfX=lk z)&}NNaL_2tUU-6MIgtJ31cmxrGe2@br&7?1J` z{SoInjPDZH;xcnPdbH_k3HB}BwO(Eo?sjdRkz5q(QeC4+C}fK@7L#xh$3;AFsqt#O z%lYI^Xmcu~KD(rYu~!7@aK{4%oN5oYj?DjwZCG$UsK7lLlv^*_{iB z&t-WD=c^&L_ux?%=~VJfqOG5EV~2MM4~Gtp&E&?)+!$tiA)^wkrdAWUp!h^5w;ffs zqB@Egy@83o^{3?#M#DKX56kqsSE6*#n9Ff9B#iD~#pV1HD6^r1#rJH}Gk9b%wEESQ z(T`gX5BFnf!tKv)@d&-tZi?Cc$Z1x^5-xAWs;x7S!%+jiw@`L8X*wOM&iwMP+UGyr zmUA&cuYzTGqbe4@dZ-sn&Md3d$Ll`j^ucNAJ`8hri)e0;{hRqD0m_TiZ{Ie`gwbNw z>2P2dYz|{uYd@|;I{(Z87PLEmsTZch;&HhCSf-kHW3c))6l5-ZeiDbg4 zIvbHi?2pi6=;{zDh2JA_78dz}LeR!w<}8dmXjeRNUpd*7e}WXXi2gaB&gL92=W*+> zE&BL1jx8A+m;zS63%BqhUfkTwT{RHwl|BE)%Ff)VGD5N@*%?#+mOedeo9I&BHzsuY ztq5DJeos%&I%7WYI}hbpTfpV3TLPtwQeJWvBIyiW&LM~72#2e=_Xi5~yNGQC!^o;3 zIZstvSKOTGVM|Xfo=85{(R5*kl`>*tVsm4qWG7JTuF6!2Fv}k&e-0y9B?EHkd{7HD z25qI>uV(`rIy^CfP8-`N!wfG7jQSaue5ug-+Q>K$Qyd#6cIrM-37ouA$2wArBU~W< z$RYW)7_y~OW!Aw$myU-xaxP)Z(uwLsGdgmJfIj+yPIYy;TJFvwzmgE)cj>@AH`!4R z?MH{Dh$`zya^b+WwGaM5L1;LJjQ%PM`szWURq5!Tt#TX6>48LvC_O`$L&5qT zXsr+tKZNLel1aopH@bvJXr4rptkD6;Me zvXs6sL72Q$j|z*do4ozndNh$@TM`4V?vvwHt0j(*3=a`*Nr)A+1GwG(0;NR8lZ~zw z{YTwpL==#&CWA*C$^|Weh7Oq`Q0=uq)Dnlc?9DDlI#zOfWTy{BmQt?k0Jd+x64>>Q zgR3t?k@C-6h!J5(0^_ogceQwjgxi)lXdqAkf6*(93r$o90ZCSGwi zTfrg-tCR7Z@KC=K8 zX&Tn6V@_rXlr6lm#w;8hNG-WO^=i%4Sd2N5|H-C|MTv^tTz*s99gh4OnxTu{d0=#NBPjp(6GyszH0$R(i6;lA7wJ=fFFJ=L4Mbs8p>uz^3t@(e$GXQTBH)zm-a^xA_Jm+7EcmJ;x0}u>kR;QuA02|W4 zS1x0M4)i|;B2EI-tN5p;_Ps+7HhMeE=8s}p(GX1`HT;$xIZzD9{{(LYLE#y1nwMTc z`QVLW^$eEpA?~Z{Slcw+UxbMz_m2r;zLY?M-pVDt+-E%4^6M3LaY<49R zeq!P%FmhfXW^@8zEKndTY2>S)yS#|_%p1+kx+Zd1S9Z=Gu|`mj;ILFD9o+ zkuz3*LxIngJ|3-`2%&;$9&N>rc&MCD%Y_08!7+uxr;;_JjQ*-jGH{|W+}80EbxH=3 zxSV5;jl^-f%m-oXt0`asBR*#(=uN@^9S0r(f}&7qw37e~stK%cVf-r_8w*&?AcE(q zs=wl2+%z;%@r~OLRBCxH$J4Ee0~O2r9e@d?=LqX3Pq$bCn5sGL$?eL&ceXE}EQOLamc>e5`C(8UMm1zFpixp=wBFC#Iu=ar0T|;7**(ECq+*Knu&es68yTH^70|fHJ1GJMG61(66=W@c_0k|p?%E%?OzryA8 zNtFiZ8KD{5fI=fOfGDRuR@_zj#PC^w;pKdYqg{WYwSYXJ(*1%sxD0L9Q3J4~MeL#e zxF;={4+1E@v)R=D`z&Ap$O@R7HK7Xy05kHrR01w>)hCaPfQqi77s?SX8wvm=_Jn@( zP6zI-;(7D`0XC+z`Vq$f;`pQgydHQ@i79Z&?D@Wp74&gFe1LQ@(nmk`K4LFs@O88E@7L3-|< z5OWp(f5qb|wFBKyqR)s=S_uU{J8S;K(Eq|GKH(Qr0paZEi$!Jt4DW*?>zEQ z6H4^`?Zr;pVSJ_i_`huX`s}3Zwo5>Tp zlMYb9*8s4I_a6m@`EQWRFsK?CYRd7(nX!t5$(TH|Lv^BB)T`QMA5bS6%`ENo{)~F{ zTOnX>U9sf(UN3u$89}{m_WC&%6-74 z?}XUHW`xE-Wgk$GM0wvu6BCW?_YAVgo-ZXFQcTxVm{hQK0?aV>FAf?fb!UGu+enQ< z8`V5zBz?nweV>v+1|WnLj3*u^f{Rz+8rSI4M1LWhsIy}l%eK!{Go+)oB!${m{vs$s zK#)66D0NLEZJ3~PFH^dsdGUgTVzObyL7Pz)X?&T-o9UXqj#6NaQ&%6zIn03jj-Xd%bSKP$z3nA@M2UI?l*C!n(TGkt};KE;jwyFBS* zY|)pr7kXg}@e*Wmr#v#$s?|9c>TLNtt-zPTSPU>tyIFO%M%(II>~ZPxG`2pDl#Ex@~T)bJ7T_X(7aOBPVgD-d@sUxo% zK6iFFuUb6t=~8C;%=TbB;tb5kCO}-z;T$PorT>_U`($WYoWz+H3(MGb?%ZSndHCCK3cM!#vG#*n+g2fLH^Td&Enmm z2ANxRXcIaZQHJ+S2;9UMUT9~vU^ss2qx_=6-LSO(ZPE+yCQpqc+75z>B zei)$V1GJV7G^ho+FhZzBqemmNn)aB5@Q>v<7+-}(4bwyD_MOe$aX@jjob;$GqL0C- z(~1;RwN>{d5|?{uW|y;bu{4mpMtwh?q{S>W6&Y8n=P$F`4Sv4k#VEvy(eY2?bjp$A zj-p;v3A_DaI-ZLmVWIHS_oeY070jHR29y?h-!}`kC_Q{4(J7G=6XE$Q#PG&MhECN) z-=K|M!To%ZwGDFb`f6h-XN7OOC6X?Z9L9Ung3%>O{-LwnX+@;|FPSlla71lp7{`Cv z5tQQDfsWWE0^5eI&%*XU^JTEf_zB@QU4NvNqOS~1wy+>eugNPUM{D11c7Shi>71LI z8Jtf_03@UHYwc#3CiL{f6}u?<2P0*EZ?Qa&nh*3? zz_G~*&jBDNFWeB`+Wxc^BP1zS3{P;@(D}9cZ<)Ym%fk*MZ7vci)1M%~3n83G8pTtFG*Vg0D>26eriP?8N$Dr#m zo9;1CQ6;>m`*G_M=|)py!!hZ8VQ!8)0&fvEwwkh&R^f;GfRSXYycVSVf{EttwXVPy zi~U*zN zGQ8|0t}3J>@B-`w1TcsrOS$OSKlva(EHu;kK;VK2_}Fid}&p5Fn z+r4kb1~`olZ^J9Jm(zlOym_OXy)V8np@80N-AAtV;Y$LTc80;G_NR1ra`vaX$mAyL z%KNH{Il?|DPfCY92!5t~{s0S28ds424dQA4@1S3!P!?KDCur*k|EP7RY8HFRyYSvO zj!gkXa3~vCZVuzf);Odu+4G+93q`;9O?bqaB?3fpinG7GaRQ?KHh(J48IjsW5p&Xa zXGK?V+8b{tHEWy=L!9A!daTRzwGtbSU)41;vt%0i9?WK1>k1%wVK}h&w z-755oFw@i&k|+JS$2K0rmDcSSd$%&bcHi)v?|l{XRf45wX}?FpUCL)8XzqjcH}?Uc z9{*M80WAa|vzudXuxMgFIolHTKN9q99*3ZpZ*9#L7d}VRNx$b#l2Gja6b;sl7w;cb z@P6F#SCh;09$rTBT(L&u`LVs31fnL=q22bMht;9?OO4`qnRjaxHIryK{+;v1e9(c1 z$1dgb?qCT77b$wwI=XiI{?@Z0O@WZ!$scBEcCro@B!<53tL$)~?=b3_#a)HzJZ<59 z?0NRY=CrPm8XBI3b)%?t!J>DS<*aSp+-!XwYhf&!4MUJxC?c+0$9BeL^sh)OVxSqf zT=9TC5Ru#Up*eJHE*&IqpRsQuB`-=Ow2q$!(+!myn{$eKWnVBsEm$)Dvs;=leIZvf z!elhW*zf*(4bc5PFCww{GQw&LvhAqh?|x>+welvEXD%P7m>GylQ*BO@n{CQ?;I@~)Jh060A z_O&!Ttki8XB@xRCkQ(o8iQ@$yt2PbDMC;aPBZ%YBXBfnPT;J>0t1)%0a2*{TuSL-? zGf}Kw!g_t${pB2|y%o;r!MOAj&TYdFdz}t!!cn{2dp5+c-&@Q!z@aL8FifD-W7X$V z!uc>ECKPLS<5|**-D*{fWYWjN_5269Y}Gc}28+&+&Ao!y($w~5B*wZq0A2{&oYU>N zqt^qSg;n8zc#!efWKt|Aws3u>Z?NmNg2jcWL-$9uq)hT@x@V+n(WlpTd-&nE$i=O{ z!Csn=erdk)KBRB;3ZD)4kD}?0+1AuyHOT{d-djNS^ceqw3?&YxsGI2 z^Dmbwdqnx#s%c9ZIm#t7d7uA8{X#XU2kUxA+X6C>{-`cowElb)3n^5ojnhy#$-K_) zaA=4lYAvB5bv9LJi*VQnnebVhZ z`Mt(qG!kK%wG4glY>=27TR+Eul(2%L1=luS!1Rrra}&(so~>@%tpDpz&%Y3EQz^0g zR5hXYBneYv0Fhg%BHCQ?NYnPyn~3pG((@F@m_{G|5LkFZzF+pNG;QI`H#5O_s?o_b zYL91K`u&n4ZPd-F_@s#1=}x!HC=#Hp#f^EakS+|{=v>)%FuLk+fZiD!hqGTsu3J+L|#MRu4QwcXyo4a;egHl?UV6YT>R8j~GcA zLI`Ea!#!@3LdV5Ri|#+!pgTistuW5Ff30ox0x+-_54dOW{ERRy_h0!NB}4m2(X&GCbM?Q(Qtez3+ZC}ARb#v+jw@zV3bb0f9`xyz_^xoax@os!|n}7l@ z?Ce+pYPxAfaM1ANb4C1S%}artsxkz>w?Dj#8DO*DR?@NIrX#9! zEI7?d55WZ6CxQVW7TlB9PJ^}&cC=U`f%UDYmO#52H0^8!MpLb**D@3Gdj{0`l%wQqYfpqZ8+vL37}if`4xL+71g1 z6q5fdP~1iUjpn&Y%b_#NjboP#VrXq?uncYUSSJO-0ZrtSEpQ}D3Q z6puS=6s-~a=M z-NVD~-=5dP?gu)*>`0dSq9|pZoCH>`YU@gwwl zkoAqbUwmMDhHJwwua?Eijr}#zyH*RX`?oKu^FrcCP z=_g&}JOdOj9+R5Na+P6jzxmQCwdT>{c1h%F-Ut~Tz1tMnFqv_HdFwgd!615y;(lzO zDQRZ5>-(thcEopabyaq2Z>?yPc=K}-2|NVP3Y3FAZhj~wDzL7Qt=E6-Sy5ZgGhHzk z7l=i#>P72VWr2M+pix;5?VAD+*Wc7sRIgq-YiMY!fA+c~ZH0_{Hng%jOpFB!rDJA7 zhD}epC?9PmdZ}@44u6cT(^5kEQwBLgLvnNTWb9VsGVehEroUwIu)0^R$l0mfY#UrY zJs=Ye?u#V%(=P2js{7SC>G0{Xf%Ynd4zk|wGXK){8L%iLWn@Gvdg6oi-lGZf$iG#W zcAt`-PT)2NY?SR+mNeKDjir{J4b6_l^Vy#AktPAU7131tl4pnBARas_g3%;9b~bb@ z*C6>F0#+1%V*f-_nUSW_a|&EjTak~g*(=L7yp&`r!#uhzbENHX(?CNmA@7Mjd0FC}&Xv3e!yO@-e z#!W|Za`Kx4@E_*e+)A@$r8at(kLDu4_CS5&Y_wrmLq?#{u?3>nzHpp^cit*e_hpCkO`@O?C7W_-NDfZ}?^t-R+^>3W%^yqV_K zYe;8>ruEaUqn;jlhUcw$B|`|-5tBCD;vdB$u_@1kgM%KDsg{tCkel%!QDZKO^9N-k z*2@=nH+^F4z#QLcVsEOTXXggMgw}6F3L5~fo5_0WCUN5v1(wGn+iBf}aKIJ4N$Z5^ zr}OQRZ+9cIavs_1Dm_u+xbsPxTT2E_unZ zxw(nFa0y74AoKB}0Pr;^xC|i8VICO``!-;LyOH8{eJri28iVZs3S*oFHtB5R&jBrK z#umEph&2TLF!Q|Nv|3>##MJ|k4f{de_#=?vWF851)!BKwG^M*-L9qL&bjLtnACij5 zWqdT*^bTOyI!a1P(A}1=(S{d1p%7pRtpHn`mtTZaT2?m9GMH|p3&0Vv>;==K6d(Pp z3k!0XDwnT%uZBkOkX@EdKQfT_D<4wl_#6Xt=RyiPX|a}Tg{yu@4XHzsLj}}4#AJ) zwU~D3rp8T!M&71Tlw}iv3-4c-W8;56X~s)~w*>%!3!?Er%;>#Mj&-LkScAF1a44n++Ixc z%#sS$;l(pgU=0=RRJ^7Ey$?~I<_$mENLZxPq$CpGpmDY>Q&*2RL>f2vHeV*&+wjk^ zQyWWFE~_m!5rTu%FgBdY*-OY~oWwS^{ooB(e=>*XX_zyBn53;5EsT)@!N}Y5CV&&m za)y~x?ts6cb@+m!_U494`v6sB;9@tiRHcPcFtlcZn3#*kJ4(9^RXlL|HIRsL9? z-ywJmQu*X4-CLV;5s_|?vn_s|713FBz7(W6oErMMy+kickdNECnyTSB`xAH zWKPE&0enK@I{(pJqBHBMioAT~jc~xWavL5-+tf|l8>Mz_z@$s)dgi!%YUnEBfyxxN zl&~>b-YkJAC5NTtii=D@7H3r4OwQk<%l)p>JV`36AipOz{vm1sUk}>g z%P6m@k5(G0EG_?^(% z$4fD8jI52Z=iSc=rW4IIC6)Q{BdoZ`^SjtfY91Pc=TJZG3_D0H8u%lQYk1veFAOyU zRvR68-z-J=^k8vf@btrcj%hl2Qunb@>@(5J@2N&=E=n)KOIg2Ax`p&;s;nL{87v_> z0j-GQOxYrnOoZi(==pDb;cnF0aB1>NIW?6}Rr&F~jCj`DGj$~D=bhQ>3^uJ(+mSKJ zZm8{@1LlTMk{<~8ky(X4cF)S}Bb-TP>%gbJ3OEUsoz&awg^Og-5n4QXo%VEhxA*mz z>AA_aD7{y3D`t;h)`u$ym)>Lwt#zf9r?Zsy5|wQMq_LuahO4+MAiki2M8?iAh;HjI!z}V=Ief~!24Z4<_QF&TGCn}x#N?cZ zWG-JT(pqog4xq~0rw=j{OlF>1H`s&q)&`_%?42`{{=8B^uEV!I=li^#>7+LMb%_cp z^f#cfB=7xjYKv*kTP9A3l#Se7Qda+z1D~?09Tr^mDDz6C;8XsC`Oj}VvFn>_Y|G09 z-i(Pirnhx{`5VbQ4+Zw=t#qA`y+% zShzF)5>qN}jKS?z1X;%GK`5l{5@RHoNNj0^?Y^4p32HMN>G-($v63Xsk~YeBrq_b_fgrM|CaLbzJ4 z#Ed<)Ol0!`eQ_lc;w6g@vwe zEYVuHKN&tjIdZlH)67uC(5HG%VdOHL(Rz3B!%h0`BsC70?;BK{PC;=J$tAQpf-T)c zH2K=tHL94eOSn4ycT8+!JZ?p4;)jm<|*B#N8-AGK!U!vO0p0m&zsXRDF&D z)r(0*=^i@cQ1-sRpn=rkNt)nnn~6cHA+n#!Ff zV*35{@JxmNw-i~^(0KB$zR|)QDVzb6Vswe|;p3_&j(nnA)!TGr#CN$|xk&Vbu%A=@ zoM%PL;4&!MO3uH?=B39BiAqQ3(Ka7^R-<-i{pAKtHI5I9C6wEP51RNbRfjZ1WK~ND zk1UGEfIl!7tW31RJi#HvRZ2G>yK9}w?HOTxAWVK^HLFx3tQMHH!G`TxNZECMq;?iw zHRW@jOUk5mHsnMybYadf%}*njnp_i29}v^cGoUzlNi`-J7hXSpgv)<>KausQCZi>P z_oK#c;>VK12_tQr!cApyqeD(#t(;kriWMbOia2lmNHtQnVFgL&-Ms! zK7GHk6@(`B`UR3RHDYMc)Epy)b(Ra*N!Rt^?Sk@ZUVCI@&VE#!aGqBO63vm8hHjhJ-b!nRm~1pbr<#h9U+JgJacyh3iU<{&H}@+*u?-z9s@Q<~in~NY`@kk8gSb3^Mu7m$tw5a z%i<1tcpP~yGemi(4MBCyUvB3=;S_FBjEWMB^ZILj@k}z|vhl37RV@=uS zQtAb*rv>pb@sP$bQF(0B5u5tPj#6ofp2pr%&52qoz6?sM#RxM=%dZD7P1K%8gq5or zdQTWzUEY2)@G;%ES@{|dZk}5g%XCG*SeSFtO0@Y@{T}i_k#{5Bp{roXX9Ew- zr+I_i&DYW42o1k{HsApGK1%2Yqco!9Gj=$gHav50jYt)O^t`i0c*3pO{aHd(_2dOc z10l&Eg1_y1EEZP=R%X{eA^OLZcSl`A#spY-(v)Tnu)lXwdut}Kn=t)jg{Q)Q?r&tLOA^5y*=4*PNN?2O|+V{-<6>0A(yVE|XjgBs+;snz@C!q6>Q z6=L#SHaK$B)4UJ? zL0Q7u@5fhV zYr`zoh9}PdU_eq}@9%e=m|Ym9<+xNEef?Em@(C5Oy^q9Gfk>RIS)n7--d-Q_zkv7D zuHz$V#ecH9tk?ObOkhE0i!w{{iA&oF$;S1_5R2?@)BCfVXAu_8uidHF4udZ#J6?YO zx*Gl?XR-p}E$z^WRV~I1>H_?g4f1V|b!L4|2v_D3x@2(E1S!BI-B z+z~K#e1cgwQ_B7#NyYXvEkKWVsTK}XaCH-IE*3CN5!$YxK(d7&>Cwh-liIB|G@R5B z4(&;M))lMqI8ItIFcdiAUpKgQOwFqjc{Z!?_z%5kx&N6;B9{lGW|0R+|0wlO8rRp!Qdot#x%peRXZn9qh|OxkGMf5C;t2Z-7;E(Nk6C7CsPB?mP%|H& zYief6%*_PSC{k5Xw1}R92P0twVgnNuqPkyk(^UI%_^;I$aPocSk`=htmX*}WZ(E^7Tz z`HQ5q$b-}8F?VU<&WF|7@~ zC)n+om>_YJFD4`?zI&bHh+f;c@d)LnRD<=qkw0>H(!kB7X6*)%FHdb!Z_8hr`{}Bc zIOz-c;2fv3;1V79&|$c@#?X~-+5LXEF!vCSFT8#`7yY7`yl4VC3~{*8qvMUO(QKK{ z;&1aK!SqpA14YJ6gBuKY81zv zjtVGu`d{r1n+cqRob+<{!q_488XOxv4~#kY9f33SL&qSCi1A&X5JcI&J9IttteD)s z;QN((e~N~sL>*2@#BoT zhQV&6{8-g3_I`wx|NJkiFNN%BVZt3}0`D|k&e-!Ttdw=UP;z9A(T!_X`inIxnTrlA zqYaV!Dlc1VE&3bKHKLz?wEPi#J(I(#^Nj*G7a4i>_lZFN^PwK|Uo<&a2Q^QPvE7s~ z>SILpH*h)m6$l6e8pO=@1)ZSb3JDDnk)&^D-G(Ela#xNmH{M1vZ_fBy*Q8_-ga=kr zYr5CtDBh9{rwWqbZ&@{KPDkXiRcaa)^;$Q*cx^gGPA`P5A*FfTn*-lXjUv7_r*ePf zMp-&aCM*QQ6UehJBAw3m&I<`+B++Oyhk(=i9FIpBamS)_cY^8bxx)#4n+IY+4T# zL)7rTyqo8&Ty^cTMxodv=g=dxi{i_wU0TQWS&DPg_+aivhz}V z%{nWY_F^>D{P>$tVh1L^dOb=Y@tjwQq|PIrz+%+9!6w{~UyyUiS&RNGdan@uteZ6# z6Ik$I~iQnYjKMX8{vpD-_Mc%OuU!d<+I zA~Le3hIa6?5@HwcCl0+x;_4QjI$Jaw$?C@X)yRH1hML?oNR&wLQZvf7Xs{C0bH5H0 z^k!tC`E6v^%?#6Ea+6l{#$L7>wd7cRtE>8@VfW!g=Z`4;9x=1;cSXdb{;I7gbbzdA zW*8A6p}-0`?;uHqf(gtmRPcAgYdF8wL6)`@FVy(#`_n7zt$UddurlpW5nub-(FdH z2c4k5L^F6I(=Gr@*Vgz;=4SKLLyt0~hYzqGVjoURaKE~}`19c>h}UFbr;+Ml1xY|3 zr0S3Et}HZ+Fbf@KZ0m%H1f=SF`9k`5f~aEyz7#i|_elEBeiVgX0=;hPW)elhHcN_L z+#AiU!|@(~et#Mf1w;CgX;%fG$c$Ta|8H37U@%^ex_H=#bT|2{Fcgi4uuY4-nfhLy z|GLnDbdk(+B=uhxG@y%jpNXPjo5kD7+Zq`hoe~5ZUwEGXnxSuNu5ROf_Gb>FEC{cC zE}(HBGWw&=q*UN@0pXo7GVNn$@|3&sk2}TH%&S=kE@nO_#4rDR`+IvJYF(YBX2O4R za7%x(nfxu(K@j5@1!~~lUkZlas|JeLmtX4W*0b-2&u{+CWLIuHY4X44QwI3&U!`s| z|4ESoNKs!0yH^7GgSbzuBrcfB0>7g09i~S?Xm=CU?YxiVYX-X(Nbf7Jn zc_X%c8fG+}&#Q;*If4IMgq3{ycVCi0z4o!k{41WA_E8`Yu9}(Xu{#zh>NYnWQ8Hmp zgscG~t`!ryHh3a7yFW@N9t^r0)nbs6`zOXl(8*dW8PqaFEH%t70yYKkkQ`CH`&8Y5 zcu&2?{@*`be^&0v=5_tP6U_XW4Z7l}LiAz)Qy6DzB`|l&itPnIMtHRfD+T-hXIQZt zXJytinm-3NCs-8ZNN1yj|CT@O2}fH!4@5IoUP7dU{kMS_Xhl8#U)_{3umIbK;OAc7 zw(JL3_#iNm_V=4bf4+|j2n~6_)OhsY_l*KQ4o~-ks2VevSdXsQpXvUOKZBMaZm7YE zoED#mOjsEM1BjaVmCV_Qh4(<0d@m@Uwyb3(Kte!ZJvZdkW1mE@;a3jNY`6Q>NTZ`n5U zR%%qtUBj{O*qmKceyC-0+h7^N==A*>IN&P4oUQtTaFI)6XulQG+Ot0p>ERi*=|#^v$)LV!q*&ry?im|0PjGM9m`!ma!I$OPLj2>Ng88lMsIzQ@{} zx?ueV9TbDm9U&`e=70q4Az+R=a%8`FV3xtxNcuEdBd2Zv8qc4N(Ux(1B93*~K-&GW zkC)^dLiPIH?`^H`4KSLzCX%mgX*zFf#srk6-`>r^1SU_?C+H_nIyhGSm5`6jhtnZc z+(cChD2#0$um*Z$rFN|JJJ<&M!d*iPM#>nBjGVKZMHFq^KUM4{r$a6sZCKyzcTKlA z%cLcTSBiO8b90B|tLr{ND$ny@^v9g%$u+wdG?BbKAc>Mqjk4`xmgj^XnIt!yHi;O$ zvTN336pJpjVl1rmo#d5j8IBSZY47_^#(Kt4uI!C8u0ph-a?7KT7a2mX(~) zvI{21vaD~+{}Zpa^+#bwc;haG*=2tCAzBpa2Ff$*KxA_iTq8RzE*qD260FF{fp|3K zR^;^P3^?eQY!nQ*@sx_Z%}r>gwd$fJ(zCOS3M7PZ#(SW=uP*`=<#|!*IJxl>XE**x zI925Lz<{?dV(CJdtJ2(`ohBJKA}oG9t4ddHu)_^|HQiCnMP_6}Q$W?%zOr^Dm5xXo zewkfVtjsngL1VDieS&9eAvu>cRV1SqluGIJ0gz>W3o_gixs;0pwzHuZiRgxJnQ_!0 zVzMz%OANGpo-pg7VKV2(xTC{pdb@IfeL*LvyBvFhT{=M_#4qv5W5tG2;ULu@4vL$e z25DlwvvHBu+@+!mCC||QlFmt`h>0e}x#P90v3c0>fEbh6$Sb>{7>CC>m5GB!{C%7s z(~FhrolTWk>D(mZllyQo&mFam<&g(pyhX<*{kTg^n#<@!RX_s>o(Un`oHuO6T++R2xH-BblOaG zkl=+T?90kLt8G|#ieIaHSv}D#=p}!~i3>T*xc*OvS#q!r^&SHqU3Tu|*p#UX^xUM0 zOX|bayDg0yVH@Gmz?ud=yfVA?$H=$J>4JoOh~%Rg0uf5CJY>crCV`1I9fe$#nyf-_ z%LoOsWglLp}D*3P!s3ux0aOQ`1& z7rK=7*dD+R50QKnJ+s8JS$h7kag&0l9pLXg|60I<-(kXt|2Y9V%~WvZt#)MXoef;SA+&e8W@IE#U(&lw2`dmvuTaKdp?J$|7Q6xiYIIYxCD?pTBRc~DeVCaI~3 zSD=vUzgOOb0tMyGa9mbe+MOFM9A;h7g2SL*`hKXbwUxxK?ScE*^XFr;vmu6EL55qy zsk_=OdPkQYzcAIyv_H=1`|3W(<&G8In3$LpX@1Vl^&~2>UH~Z>zoFye216JmEn$AN zf9?2~544a&Ca2pGat(5UJBp;-O;HzyqDx$ezp2pi&5sJ>i&6eT%y--tUD9Nxoe~kz zD1ilAbkm2W;#>X$A!C+gsp`_)c2c@OUv}eEbW|#zvAR0Fz0|tMRH~GWU()iCR5P6K z6(5cM(S2Qy7g$$_YiV;qTxDRi&9^@?kGwefF$Ham2Br9_Oxn*LBPrsYWJh6>VTR8m z*Du*2_otoa2AA9IbrH3SPtnsjU_$*|)NJ)5DcKrQ(r1& zi~l(yy-DKbH2Gm+PDmztn*ghHIXrvkEEcESui%37*)*wW|8Rp$Py0Yc8&*QslHMUN z7x%vZ*5x>?@2@YnQ7pasnHatudOK;Wh4n|v9}Y|-V^EChvU!J7;y-RX-Zg!{PvbJ? zje0jb@z6-k*{FL}zFD3W=jEk_{gIkOWz;)PC;gruhvS=fqz&D2-Lt-RTuPq2(s}O} zMl99Lq}EnzU%ljBz7^q3N9MN3DTy6sc|I)%RsJftlOzn9}__vkyG+4&0v}}`- zf_&(75uqS-N5|~t+JZYI(Lt7I;qY6BxNjRXs!Brnc@wjh#(){~4F6kpwkTpQVEh!Z zHnT=9GAfgK?3^Zkw7Yu) zh9`Jpb-jw}8`9q|lf3R62^boS2+y8%UZ1RcVh5DOZ&u3&68*iQpfJ!NhRjpQHT|9( z*sQ3oA9*%sZZh@X2_@HQ^<}XH2&e{5&C88iac0<2*;N~AP7@)q%zb!44`*X%Wyjx) z@4jWi=sI{GH^cZ#&i;7YK7-%fUx*!LM+-9s%}H3*%&4D!U$cd{&{@jqeCyksL3CEc zrlki~DT@lbrB`zK3BiySmRBPjHclan7B`uoBh(fR!Mxlg2ClJLhN`2J^uQWi8&9su znYJ1=-zVS8C&F{q9SIFPtg`s#-%O(^+D7^cErsS!s(%bsTn<<4*7UsF%y7_TV*U0r z+mf+sdNEQaD=QLDqqgYvzUcMCrXwi>12R4D zi#LFg*JV~sFGkbuchc~#65g!3d*5NGbZh;qWX&FQ@I|y-U$5bjd&$c z?jxeY`@q_Y2w%JxgN?`I+@j(D6-DBY9lml04kj<(NIY_ghe``P5Arj=7oL-xZw%%O z#1T@tQ86i;M<+>oe)@YTWQZV+eF~KDoc><)@x`88)FFEtztF*$S#K)LO+Qa$N8FcK zx}|#YM4?wmB|V21A6ext6I3f`sp&FIR5Wf(1++rAHdj-4ylwha5vMTk^F*df?TeNx z38aIver!~6@nmb^Ml^OF`s%loIBq4EIiL!=jNB8C)7PhzzQXxrXOk=M5>s6kmnT7|PeZq_<{@8u&)#wlrMtKBVfC z_&8iVa@zG*)LPH1C2Ht({1U$6qc&?4Aad9(NViq#l$S_E$ou#l_k|%1zEQHiPeYsl zB$Y5_w4ndimf4$2IxTgO6TP?6xKE9Hj@Wg<@8;~6YvXr733c6HXuuTtee>f@L+*Oa z*>Aw7`Qp&?MYYf+g7!)n5c;Uf4}14s`N;Mr_R|c&#$RW;ts%bAqo>%LP!f4l`2ceJ zi8?zw7dj~Zs*;Yirx@}9T(g%YQ^hu1_~IKmO(zmaAT6O9ViTA3bddrlzI0yZg2te* zDG|wEcOe-ExCrvrEqrf*8T|veY3{v`^ z8UN0449ScM%g#-YF(-)ZQSBoeRrCAw_PH|tM8hwQs7F@rM0{3v6;Ii@lTVtiR(Lpy zkzxbAOcwo`fnU0~c;D2Mct)nCB%{Mv3i__Klc%iHQc&kr>+H50f6I30^B^K*D->^~ z*D@>XI7I$9s+by`uuH6|N)k55F~K_Q01x-}@@2db>COe*;_ue-C)Tfmj1GsL0xgGm zwZ7ut`B#H$mjllFD-Yw-@IFaVRSkc|x0m7qJ5`yR$(Ov`wxyjZaC|cFt;Ua5F|ORw zz7Z^0D^LhrbrSJF&C%N`e<0Mxj_y#0kafsK&g4q4mL4AaZJiUt ztoG`jzmC{FaWzH2nux%)VfHDTBJXTvmgjcXR%B0Gckgk~eH;?YPA#=inZ&S@Ysz;s z8U3#@F=#TOpH0+4+v9BL8(!U7gx<&PNuKtv(vgBJAw5D@3ju&;T8u=GZuo7%LB4SQ z9z;ep@b!Rgqo1heKtz!yffULaXTu(A>7b9U2Pm)CBd)Cz2X2c4EcmMIC8g>maR%&3 z-ChqDGbIi~AOmfmT%fEkcs^`8athK`pt3X{`wu=LWHSmJlxf z{6WAqw?;OgJp_*metL~eg+EbfB#djlJ5!g}tr%S$IU6}lYOotP5;NHzziDg)mI9B@ zwNiw}e?CsO<7noHkM`TA2pS@F+WZyw+uH$&)Sy(8v`x%3cUI0IqAK7NA?`z93o9}I_zLVB$>g~;F?Pxvlh)Y5+!e2J8A_S2JLxIUuPk$iZQa;?5@Q{ z&L&sknd#RbVeU|K?iHAZxtWm2(L;zoMbuR0qA@OyZSJIao+>*{2YtvkkdP#N{U*PU za{zYF?Wb|FbHG5gv(o-4mRu9Qc^K+i|A|}%N9{{oys-X26O$-;(W3I;sy?@wJ2eI+ zPsX``Ptq^OOr|>V(jzSA=s#s%;uU~bgqg^*hKjwPW$i8K=YuXO-q=&+hAfkB4=Yba+Edt!nLBic=^?g#d%og_ z)4g#$-w^;^WqSg(Y?;O9PA85mpxJiPrtUaD(0{*y7){Yqs!sUQKOp;{&R2!Sc4PI+ zID=)l5Vkyrkzlib;YG0Mr@63is993sQ$aK(HAN!6umhQ+mi7nNc!5t@F~5jpxF4)w zfKBXRA|#vZIk4t{z%l?IuOfji^+WIsskpfK7?9{CgcM#@7f@W~<^0YR@|@)TZ(|BU zHs(^AV=vg4hX8$RFn8*}2QIWxWxJI%CK-Pjj#K~?6x5=5;KeG=qMi}`a%e3zR0^9l zbkH2(SKkS<$teAh)LecZkIU%?-d9(!8v{|&)@iTJD~mBZk@@o^;B}8-Wlkyma%9>G zPvy5BfTQ*N?KfLV6%`B`g_P{f%X;HJl#7i%NS2#o!@E=t^8|$W-jmZbPP1eZ1Bw6~ zM$Hd^(Ou%BN#WdjJ5^D8N99E6z(-|BzP#Eu(0Qx3GnZ+k={I2~(sOkNR8fNws zIUO^$DhCGIFzv$KFaaAH2Hq}gGj&@Yk`j9zm7_dCYj{lTsiY+*3-a9a=g;3%Fzh5# zQ%BImBa-@D=U{NFa9@K2P9-Ed4xbQc>5m-G@8j6iOEt%g=WezVl4An0O78 z#_d;`4kdlDsacBn)qn3$TG7vJImn`As;sQMI}=w%ooYZ$O}#4{>5xS&pH%PlGuNbN zfc)$pP=!kZlO4Z&1}bpG*Pxg8IpGyR=uj>W`mX^P49@3UQ2?}}j=CWt#(Y=?IPvKn z^%g9osofEJDNa9gIo8}GzCB(^crea1v=lE^Oqhwd8H{eeIV`UuR%FdSM0_KX)RHGcgSvo}f3-h6X z&xt#7$TZ|9q{vx*Ip=T`G%>Ik2~z$ST>}WbhVS-?Hu!H}NSLI8VaOc<{)>`AAZRE8 zmcKy+GAL3C&?+9@@fr-(3&7pUKN#U)AdP+ibv1HfshRY z7>lp2)=2pOCYC?(g=;j>N~(<%1Ogo^91ttqj2`b#s0c|INTNd@M(V%d)C0Nb%@nCe za}toDKG;+@dxH*o5R+{5DVU-6hhF)Ay|)L0f!~Z8v0{NKWr0s^a>#dxLK+Q@AyD`u z0W0($(Ezv?6?F1Ax?T&u=TQzQqP|Ab8GwPw{Djd!umgru?{5G`6k1pUvdk3yZE(|Lc849J1OLY56JSkJM;1USsrRA z{dj$fR**5*{_fygQ^o+Oc@Ws%F8b`NUOAT%?cYG65?K4khVl$-a6J5msChJL1vtaW zpxP)_OE4RjNjKy_ zv!RF5kJE=(!Y>?$2L|lr1w=&j6U6{C?h|fClk1UQGkCzlYrh5?Aw{X8s`@5L)5fNB z-o8n|@Ze`HuggB3FuMZ5e@g5~EhNwiT`!2Gw)N zJuE)x9xZwga$B)+asDOcjdF?JjRGVd+vJefi^V$UJB3-jpb*aCAx7(~Kl_AL0&;4M zeKej0+6exj$=07fecD8L>pvrus9#oAb`3`57ZQR%Jr5w%#1Eb) zJ-D$cDIwr3NZ-1rz{U)u5DgL`HxhVtH{0mU0Ip;qL15O%1ztGuZX|b8ykzF&oLu*8 z;vcj9CZ0QX?n#95caN{=f)!iZ92f)Ya~}XULGWHtC0F)ES+apr3*2pK$n)}IhQY4e zwV%vwGe#044kpv@#54KuhpMIA+<2ZKzu_I@M?#G4eKliYLqoJ!gW_2`pvlQVYxxe0(2e6#squ9wQbsa`!U1}-EXNt@l_ucITwcHSEaaXaSRl8HprYI) zUR)xz!_W;HAGMY~MgXO;yk4@sAVC%xHAa+aCMk=a{)@TkwTv0WqO^;27dhb#abUAUwBCH z)Vn&7XUT2%a3?1xv(4_+9#1+zmP$3L)OEMDP+B$apLw$Jg1X$9f5`Z3^&dI+)eDb1O=QBLGYj}-LCb^7A6|n2MCkB*v9E(tp~TCh29gqMEqT36vM8- zClMla+zwMzUhcv-0;$ggO45~_ytG;fuG6e>M5;1H;w7Z#E9 zFzfS`h=%ZqE~}JcN)Tg$fo=zS3TFp`Y(@y2C7bTXj5=pjL{|elCcBwZFG6lX{C$`t z=Bxd=j{$({R14FaVxN*Ggkz{pIQXqh%H53}$vLs8f=66{AM;CEJe{y^uv9p@G0iUn zuRs*mnU&+imkCqaP-P^B#?`FuHdsiR$7_7xd=O9iz%o$rczKV3f7Wv3jS7&_ti(VE z=l%(*P0Lt^5U;pW)>whK2P&;MJWFo5FI1fpu0u0`m)8k2&eZvP8khBJZS62{+Eq+2 zNeD-h2x$*gmj|COf`^Y?3G}LJF7u?1$4{NZ5+vnZ5=~6_NXs{p#g89=McOr($iU{X zAv2|<5GCY!X)sm%22!75uIxU}T~4dWq>Na^hX|k#B5EvOA=%A0dD&?V?EzX_;wghz zm=FaJjSI~dk6MC4hG6nLGlP{sm+}98_zl4{tDIUqY&*}UQ+^0?Y;R7_k>6cl=~2CT z)A|nkayC9zKnNSXsBbA!!0<zw31PO4iUcTv28rmlY68 z%Wasex(zww%!@ilo(k^HTr zjTW~k5i)C@@Y(xW@P0*iFI#^vsgCsOKs$W#Ct^yn&@;cS3A)*4+}nY(HyIG0>^}L= zq6i<1*>D4&Cr)d#xS{2|ERK+KX(=m@?U?sD3xQ+^Uokpp$4l$$>%}() zxK!fk@pTuunv+YvLEa2qg9oY~QH8HXdtS_0vnQ3=nFPsz;0Jhf;^Y27$N1d`E?>eJZql^4i?2PyADCBP z-qf~s!-~%b)c-_zhZbix+_hcIM4YNmkrmZF+~c2z#w&-XB#}q%xlf1mTsSNBeZgqt z{h($@s2^?RyEAl&k(6MygOgW6Z8qwJHH~$R!>Uc{#=h4`j4~+7r+e4^a4ACkXaw?b z+!X>r%4ZI-ctw5(*C@@tH1Nsh!3Mrdw%Y~F-GL!>kA_os)4A=uh~a(uvq!@)fr7xM zH3&gFroN%>UvgVVmNA-n!A-iMCGUX_JF=(6qw=OXa{<29LCbeVs* z+o=C|nmoF5olGUZaWKLPF@qC62)>paJaPYHFux{W*%lLsIZ^R(4=o?OuZrmLKgTPy zl3_xUf=P?cVDVHtrME>l>-)x2Wyc@B*44wS>`b88YY~yjiil|hy&8HyNKoJ>+gl#q z=g%qNvh|ItIhrf0BjT}hf8#AHxk}3FhYNytFjq4$Ac|lDC zWE)zSl?PR}dLyGJ&ou1%EI*+Wx17D>o?WM1uNv0lJh;Mmiy{t`;{@S4?cM?5Yg`;g z;yWs#QmS;>%tN>16|s%YO>%nrFK4Gjz^lZiZD8`~_m>JHFaE*#Ps zCX}*(1BvYt6dKgHI877stcw%E373>*q~D1zrBm8SHc^pPPYmI6|C#57j;>6d?+>yq z$l*DEKR@L>lQ+VWr9GAJ{v=b<+4=I~TzaR2`U;Di;&WbMGQ&-+&x1$e#nv`4jh6>O zVaa{mnZECXa}Nh4rTB%!`d=`BwH`L*hO7SG-4$3=e^_7n&L{Qzl_mGP^=-%nVcxS2 z?f%1Xs@d~Rb-$|mB0i$sDnrW>)D5X3 zd-6+s7*ItA+fa?tg?G2j(&Sz624Hd&+2>H~#Ehbt(g87FHlVbnE5@ z$p-ePAW6cHmS?o>&Bn-4JtJKUd1$j%@|BL}=vEjGl}=tM(y97Gg;d!dS04LZW=48a zND#(TS`aGk=^xX+eFbB2egE%eYjpvd+P~4M=`yJ)Eg$8vnqfaSmoY`smKDMi91x9`}wZKmeg^R~P8znJ! zJ$>%NF?c$Yn@tX1jr;25Mk?iOT@$RC_mc?a+*s^4(ZqK@46pOF@bqrK%vbeos`j;y zp49aH57hbPO-rx5Kv37e&c8dKOcmw*N4Z9PHphyPYZSfM^ z2e6?(AjtVgfD7msoe+TU@r6Vmj~Iq;{y;GQXR;_@9DV{9L^cZ)3}jqT%MhGHz`8>Q zTz8P4Y!=YT?aRm+h^r_7fnf9vN1`E3|1X?cD%NfADR^&0yuaWK0HauzwVq4;2ZDG* zAQ)V$<{*GqEJGleyJwC*kSUEm2S#wqhaT0x;Mf1c4fYd*phMg8?N1=%YIlX;93$GS z|A8Re&w<=pU$1k4?|FO$@QP)Plrspg-cJuAYBhiyG)Vm5Q)2qi z@PCBe3c)#Cr~PC9$`i2JA-?HHf(i&;;R^9tTRSsIA<{kv7PAI1{My!-GWneebreo60)4|=^yHElW?A=rF}r?A%%;e^BK|Gu4>%Hmn};z(lD8vk_% zvQ`)_)Z626S*d099dCU^iPF$@#x8HY-F+oqpb+MNTb zB6aOxVD}VUu-tE zN&9YSI688Kg@vI3Did%*FL@H8_9T4DlsL*9N3V@`@ z+4bf(?nTNF^29l6xyt<6MUf;Vv~a-Tenbi^{nJ!542-p%uYzFLXGg;xHt*>nkqS3Q zYn-tI_41=Q-uF|5;X02Y)Obq9%!qJ?k&BLL)J%7x>f;{LP*4tqzM3<9eHw!cdE{~| z1RV#Z{&wa=|MBbO4tG@_CjC|-o`v@TjWZxg%gOxmBTf_}`2cq;QrhjUM`D9B7!L&n z#Y@D@jSUm818aTNnU=E=0XLA1BT<1s$iqo`A+w(aT`A7n>Gs?b6n`igu694$%CX)` zHZdDW_PtSQwVa^o?(SZJWNV4zKFxpJOx9QTr+o3^86O{?8$hT|M#WL-Z&tlR?&GXC z5jjQuU>yh&sT*|9LHj%?_Xf3c%n-rk=C0o+*E$BFP>~1w+fv zPp}O9CIQ>cl^1hwC=vo!HwNPE!4SI)Sc?>@hldqH`eU!Dr^SO&3_;LsHxnawL6!ae z#s!FpVS@^zyUW$p)lMkx{1}?aP-h zZlFqG;sz!kug|@k^Ct%3D0kVqq;8g(Mf*NtISc2$IVinD+O=1(QLN4~l7??pR6bV` zn4*Gmg+*>Cq{5{p%K&$IKWCc!MTpT;83oqm!sgGdOyrz`RHbu!dh0Vi~IH>LR1_Qs`!&q6+~cl*UyY%O=H7pW^^hx=^y0@;8|Qk|7~a&_W$I6E!G=gmg`l zL$Tud`fn&+o1i$@(Q{y(P?!d*WL|Hj+r2=9BrDSSt^~WN$g`Li=zrf7QYjgZvkD+e z^*C9R=zgwH*w15F~+Gwy~+ApV5$J?KSVfecMT-T@hcn zXq+=9K3%FR1-Yb*Vk$cvz~xj<Q@2%=l^#)x+th){pl$XeU%gJ7A4ST@DvQA!*JK@zGzOZt4eyd+{Y@ZH6~{$v#3L zu90|_H3}#R4;=uQw8ZHpCer0-lfVHruu5zQ`6OaO`(q$fCEsG; zWZB2z)11Xrv1**kQ$_Z(4M@dC;Kq_basnl+IQFx|!p7xLI~;*~w+pcIN~=sI5JHL2 z$Eem6*zGrn_#_HKRxrfq0IBeO-uZ558%SYjoV zH^!0rPL3*A20t~uG#)`viwE72y&yy;Hc3Tz9Z$OZbN6=t{*J7VtW=f^A$kf0H}SaQ z*5+<2#cL{$*d(jFd3VT z@?QpjO}>fg64bmdbuxZStgWPvc4W!i7LsP9uEzEafy~zr)0|pzwuN)Nu zmg^xB#<3za(4B{_e2M^HXcvKOw)Eq~)B%`Q3t$>hxLkc4>oWXn{3E@9a?LVbO3>G( zeUU1Yb+_dv;(C z9U|}3e)~322Fsq#U(6#_Ho~DlMMZdbc(6ld5Q+Lu!6c=d926^z*(V6ThUBj+zUDKD zHzuN=!ff~@+vVAig&;=1j%7bF;Z2PrJ(rb$Dd*^p{*vPVV(cw|tBRI(LE`T2?ji2( z?!@iHA+8WtLfqYjxGQmYH;B7JhzoI+Y$nMdkX# zLZ2V;*3?1jdtqT?Id>x+QUhZhdrr7SzTc;pO=P{9lO4a{5*j_eKkr8q$P-I-?bY`HdNOwBcpeaFwbAN{CyegKIS7xk zj(TB;Q>QB=wEbh+*iQB_(cF> zu_&bxmWFj2!y&=&{^LhbdiMa;qP$)~l6^$fQAQo`jo;y_p#4A;EsXXeE3e@buPl@pe6jf# zHgDsTToBFUKT-1S$5je4FyWdqMH!tmR1@#(V|dj&N0I!rF2;&(9qKSm_v#N5(HxJ0cU&-1DwHF+0#+;o=T;Xkwsl9dTf|nle*tm zG+0>2lL18}*Zqy3m>^F@#yc3gvjE8RFqLn^LZw~-$A>~Y#V+b`ihXsBG3sSOO4&lz z6ra|QT$Apkl7xMN5A@-c7#I{qwwL?511ZD_Uno)fXt0!qu*+yABsipnl0h8BNrUpl z3DF1DKU0&0BjnKIb+omM3%|f4g+3*0C?rhME~|3n_yndZamBk(zS##~k)-aB_lebq z5kL1x^~ev!JK{c7viPL!Np5cF13xZ9x@zwm;{9J@#_SKh9Qh5Byh-$%3%WuR|dF1(9on#H_x^p z8*3YR7|j?nPW+Z2%or-iwLGnH$+S4$X(=p4seqftyCE9`ryz%%V9h|O%CTm_D&Y0e zb4=ar6TAdNHa5nQM?gTslgoqwpWAwDUwQi@f+EION?7Si`7D>5qzr{{S}+zLP^Lh1 zg$O-0UXzc0G8h>T41=$``K1E3q+IZ-e-RVnw16c&HXC7W4TUGae@7TIE_yj=48W_1 zq)-{sG5L4st&dPMM`%W|w@gVok8-w_A z-*_)@1Y&d{VdxCNK`m>b##08#6$XX%029n;pAL)viv^&Wq#iG>c*4X5ZU=St?OZx1 zB*zZ-UJ~BYS$?Dx1jd*gW=1jfsR!pbJS8|6@+Mgj%gYzb!JASE&$r!JB({#P@QI$x zdZKu@oh8sHCZQ(@gTvRo+>yx*pg(kq%U}th+iAR~vMjs#$ok|DST!^hpo&V8Yg6F} z_;OwtY+17`rsan+viz@qsVBds4N@HAE6UBRjh_%1hJv@~l)mH}iuWAHqLM}&&-ui) z25NIF6PPACquSmRB1`WU^3~dqtrzv`pY4^0E<5H7S2s)U*YlIF;n#VrD|zJ4L1#!e zuYZ*iiEv8d-U3_0bZ|8*m0S-mkl^^(%>raRnn3Hmrq^{&1gPMYg_|PaS*P>vrSi@w z?z)dY96lt;I!3LpvQt;cQb%1|xg-V4x0)_i=554`Um0PcBhX>0avVyLU;HA10C|!9 zv4`!5_@61Ko*pc<%kh!!#zTdbg}I6P;lNG5oXuW9#;0X>(!mKMHV^1E-xQQ4K=QQb z&J^oEWj%VL;IfBHb2L!fDoI6A0b}MENrZD@nRxs=Yb+$?Lz12tECV$Th6~)GeNKFT zwEyzt0rZMLu%bVyHIq0kOj;Tco$VM4aB28MO z@&jrRKx3JGZ+q-pTBlZ6=!$yfe!tVTzYPDqDLcQ6Ka6*COm<{v+GIJcYyQz@>SRdq zOw;6nWSrf2^X7xgUkLgZ0@zmp%GK5Oz&DQIpRINvL*(ObkH1``EVh?Ag#P9p))9}l zM-&IHeQ+WN)OEe!bo-^QU6=cS(dXg7yEMb&t;1MU$dGod@LAWFr=>3~z6&3quRVjb z(=w}O;0W`NuJAkJ0N!a(15zDzd8Dz1lg0Tjy(J1p7?sTL89s#vj6HE=HNPQ5F~NJ> z-Er!uu3I&6EDx<3M9!Rt{oqzh1eu3|`dOtUuzEiDz>BjnzCX`(Ec(LD$NiS<*P=a; zVEZ-+97H#qs;crgug`h-3_765#$B@QLG#&`myC4$<(xW8VQ*;LMSF4iY?#_3j0^!N zor7YE7A`bZ$EK~{nRpak&uc?QXWL|SJ5H~5BpaU1!dHs#dk_0iblcmpX@8lb5yl*Q zMzY&mywMCe4%bg-wrPFz@a`M(kkBG2Q zpRqZbzdJqkXE$y(&)m8b9M#DLM?-^L-v8T>W!%#FunIutsdKrhb!V z*aY!9QPI10RNWKoB&;O6uv=tbrTghSB{ethcCt=$kBB);buLFaS-MqMBW4tEmj^)l z0D)BpfNd;bU>i8+48Z=JenNrzTH>Loy15nvj`cwBzEg&Up&9_j&W1B6UkW&iDx)<` z{V_c2^Sje2R!T|)(XIJBc5iF?H&$?$qGX~X5r(rqkf0I^e~HGWa!^E*nXTqHuCxuB zvPKc-&iZTx)QZ8B%@0+sr2$5IYfjHpD-F$-vG%j`p*X(>tYByeJVE!)0rc# z8QsZR9i&_2xp;NgPyE&nURRL~qHlY>8K6yq>`UbV~blXK6j3ePo&Ie$GLTLZIYB#OX+73Ha2D_Vi1m|V9yt=O|yhs zL`%+~wvqgaYawf>WN?ztdZvG4E~;!-hDz|O(HQrl>0|!8r2>SI1&7|C3j}<;!gsfJ z-18>yoP}eSj%Swa(sBg=uS%fDL2^AE(MQ8-nBRA`wbR)&2?n`_^aL&=wXDqy@~oPQm6{y{P-yOCpFYHR%%-Fn02#_2d{l=wBDzZK`zcs0zD zmsMiv)crj7HXgxq2%s#pNq`Ouw1*ae|<;{k8hjZI$^*#~%eH z_`;{(!TS_XmTLorFrJsp%0f?288jutYC#P03}Z@2%&!+%&_ zO4TTA86mJX>14oL7FoBE9LZFx{o>_R#$qx%ybzrvV;rf@svGA!u1c?*0Su3y3%>dl zo|}bVXJ!E? zEwjCXQcBSL<|Bq5cYJ}l-ufbXvN6tzvLh?C+g3~4;nafhjioSw zmi$e#a#+Z-63T|Csf3Xjc{K@Hc*-1O2gr6X>l!-Bp>)UqNBP4XA)EKHQz5VR&LAR^ z%y8^LeH?Cwo?+}e9uqr5Z0+E*^A!qCiQR%)Iak!_lr&RzXmZORY!;0?Tb*Mv6DmZX zEnHDHm^t&s-w$*oeW1>IJIwT+`fb#ut=yTFI|$!Mx!Pem)Z@?uzq*|Vk7^ocCmAh< za({&=j#CLrc~Yd(rwVTw=MnNK#tktJP96z%5$bMgVdSbcYn+1rhA0ri!`Z z|HpLWQ$tqoEw**IP`{m$HVg1U;}6oxRHZUMWTwXFn$aX12)+N9*5M{_EGR1Ow`F0N zjZM^U?5Q(52~Z!77#Y2x-LYt8`#7N2;eGy zA2>NQ<#XFYzMT9dRxp@#QGo8=gjvHar>#qmO2W5#Lm04CYTClu zgyTrYL&0rNEuo^lo&CFMmOF4xlo=ZCHdp%o9DfacImmuci_fVXcYej>!)M8Sq=d&W zTP82!cAVd0`DtNtiL3|5LzVd!-{HMF(3&`YtNoeUUgg9Nat9oXRb7>nA*M4Dv7LEd zlN+Z_f&I0c<_oiB__a@yN&}jBJNM0s?1w3~np9rztVKk0jRIEW7q=U}ul&BAw)e(5 z%R&vVV|nB1pdZZcr3^UF!reK`Yr$U@nI$uRtmg^_bp+{0WeVaTC`$uPcU%+Cjj7q7 z;aeV=3!VreBS+BxbL*G~2U)$pC|}5Dp<~3Z?I`d$YTSiQp-}4&M&($|P$4kXYU2T; zDSMuB=DzN-N?S_VC}b_|JD!CfKX1okW0HG^NU<4~h!8I#lNAkBt?))h=TU7j4a_24 zMy-tjNQf6l1=%ApJ6ZJ5esmvwQN2->XBM-8Syz7 zUltM=E6Y=5?gNZ$dz7(4wAsLDeGZNPh|aGVG2jC2X6|t2 z^a1)_{9PU8u1`fu%vrOFOGSIgEl~QlKk+3Ulq@JJ(>3-~K3I;TC3iUTRG-h`kJE$? zbc`}O=?3@DI)sRZrK~w7L?Oql2+c*oz-V!=#E^y=)ZHY6t}=!LdL!RhVI{~6Q_R{7 zJy>;mt?YJvB|NTQdQ(-c?3Z0NFjh>y7Ec%e)y`Dc@1V9wNLg_1k3iVrS4xmx){o)y zg#V)BsOI}nsV{sw7BiF&rM2XIKs+%7j}Ljxcsg28z-I6+)<5^hPDtaMud--e*$BhOupU)_&Boh$%@=ybzNweYN`B>z<a?>>*Jx_s5vEQKP$&mM>KAY#1TNLVCk1;4lIFty3*ICF+?MrmU4TasQnNn2C zxpgeSFeuBBaoe+d9D7aQ&L)Q?q>~>-BjM%!Q}dbXxho4-|R{cK}-Rvn;D%6mBX(=RrDepuJf z6HA`Ipb=Gg`!MliuInz+h$>`zx8IF4!@7;sNJOH1qPzcN^9>hi&Me-k37QFQ@vA&p zFn{7ORlg4^Yf5@N7cH(L^1Me?9XUkw1M`9Z>!yPv2oVSCoF}!_<3Jfq=h)QOq}F+vM)bbIleGDs^C z;lv!O2jW}(fZ!o2KO$1sRS)&0WjYq$ZsB|jFD+f7He;q!6xnJ`73b81$fT;5hlbj_ z!;XP(Zuh9f#?577WKF_Y`AN)i;F?{11kv91JG3hn&`GVXW;vv1hK-pBD+D8?$!lEO z6$??JLVd~No%xh%n3#*&s;$*KDxlL_@83>u>6Dz^UXn+YSx2WxyVCH1&42w7KX4vY z=6>FBfEWmi|Ng)x_oQ}R(+mvdIJR??_MRUAXO{%}fwB9EgknE6wyGAq0k|yvV3r3u zApBLiJ465H1^{6A4>e>3w;;&!WA&paYJ}HpTSqIa2EFC03f>;r2SdP;!#%tZ=YrqY zA^y+6^3uB^|5qx6fQb0>aE?1|U=9!^e^d><93S4`1!r${Taf?uW^4Nwnne=*>(ur? z`ebeRBLKI*bnH22LvWrdJ2bDHY4`gEnHxZ!VKX8H>}SV`-Tn((oPUD<1^oP9`jX9G zMOwz z^Aw6>Fm`g+&96U^Q`~$00c9%doB0*0V9xS~{z?y&u3OLSQ0#x#EWi%j0UfqjUyVUi z4!4pJk(0fJtoZ2xUVZS#YKn#miWdYQAw$JP@cs0$H8gQniCC>jhZw&LuQ2+IH7 zI+b+!ZGsg8^l`E$5v^&os!GtF&l3?J2WcW}g(vpxc{bu)OfBHT=wDhy4Dt=o;t1t` zCB6jONkHl8LR*o=p4YRo``#F6Xz*cgY97G=@PPw*9N3vjvS4F=sEU5xl>rpt>oD@9upCsACqkR%8t>vMU;y1BnqICXK$th)tRl| z;XYg7FThXpI_bU_xwHKe}{U%*fkOrRcdrjZvfIxMVbXE3tP?NFnJ zc}&&s5(|7A2^2z{;-4KaH~j6e0!+xMVL4L=;N&H_euUuu$2vQ4o(n&IY=zV1{7S1p z&dSY=eV^kAiza-H&cVU);8vrY$wR@*+pN0ib@g?=LZ_gkgV=r3*S*B__G~j23^|!O zTv;%#S)}6UCum;(L}UgeM+ky+hU%B?Y>cd?vX)Ogw6wH5fci>j0D#)q*ho%G3k%?C z-aRhV#Tvm-o^7_Z2}BX`PBGQpypM~BK&&)u#iUco3Yg#*5YX?`d1ymxAF8*RX9QqK z#nUGnB^=65IN7?kLlBj}ELyXh~gp`jtb;`_U-g#7CXP>6Gq=vKRW z;&HbfdQky-9@}-YaL~7ZC6$<2#}^*0!2|i!Nm56!c>&-G=e-dOAE2B072j#(M>9RW z^aKL{0ks9wTnP+{GLIDw0dP>|zC@&?F#ue2`~GLH4kXYGfaQpNLRI7*8mJO#dAb~D zU2rqp_!%!t+6w?XG}m0f%`m1#9-03Zu>=QuV1rb>m{mO)h5%>Ur;DWr4JRc5ce8%~^T}$^TU$Y`2;Xlr5g?1tL zvnr=~Vj-#pK$=VTB=*(J)O;%Vv*}ak8;YZPLMrs+Wu8r%$@^=YudBxG^<2^K7L1L+ z;R1s|G;nTySJVLWzDQs{i(Mqkw9y7)&TWZdescv9U;gk1T(fzpc(`Tkj*$3<+{X8)f^$c)>pA)kZ(V$?B?r%d4<+Rv%%cMmT>QyoeM z288VF?6Et;PA@G2s1SY|%t6N!^KeAF zP~j_}1p0x-LCLnSCz~%-9FB!G&%^SktXHZpBGhS#p^eg0-j}0v-mA>!kKhtLF!qRI zJ|!kpsCxv?#j~Gj5zjx}n?u%8X>Y0PN^Hdk0FcnIA)$QhX2+$vH%Q)EQopCk;b65S zCce@*cr@ANT=Gdhx)cw*AnzHgxnPSphJvBrvVjNzRpajep%;Tdj538#MeIJ6-cLoI zJgVughDHDy(5R;%0JVd-KZYUX`b( z#F57wkY}S-6x`3K*HjHcwYL5Asi_|NT}<+gqQO2Ng5RD{YtFTn1UdpUb($xj#mG^C zLU@XoZL$~f`|My+0IjAFM+=c*2uk5BN9d-WNV=kaO4$Dlu1>m$eZ7kv>!g-*hRy^} z6RQap# z@NB~*F-7J*$&x!onA9v*b2?YW2fE&PT{00LkDf7B_C%Yq-V~`Zd^vPMHGf+XKv=(T*hN)NX{sSFv3xbAg#n%gypp_9w2X;&%Z=8?LB; zHp0di3)sdhfq?-Zmuo~1jl2DF;cnt_(jo!rKJt6Ex5f)dxzz4nQ?IEG z$%If(T^bh(4LgT=?+68`sRQ4qi(zmnR(;_WP;^&@nJ52d3%>iGvf1jv@RR4Grig<^ zis>w&4)X@So6JajzX@)`mb6JC_zC&TmoJ^Z3FPuoG}nnX#KRig2w$iR6NN_y#LEMT z#~}ul%L|Af8{|c)E1hxus?cUg_5j`W;U%dlmB+@AiN++-sWSQ|ZvAY?eXg8Sk!@kPjgJsVI2uqO z#blKKK;65l1~5Pnv!4HEFu|rDfKoCn0)sd;`&#oKzVkjM^k|nu&|oKrE-CEi1sigt z?i+KQ&b>$Y0W=rWF*3^LDE=Is7?nPuo{o2UOYP6far1mjmH3+#A#Fe*#X-TKFhkX@ z@Ifg^d02NmZIl?D3PJdB3M!p!PJ{r;xKn$^1f$+-N_9));e)RD<9m477E zv(aTy0OYQ8Kr(38l6n~pQLQH#61m&3Y}8gAyzje^IoN)!JFBFRjvlP}@yD6eir@Dr z$o2p)sD`;WF-}rsLXfBY6%1_C43<};Oy+?)A)_%J0JpE=cRjd{>A+W@KPXK}sFe&N zX>HQ1mHVimr8Q5I48la^OUWOtyKD&lRPR=OR(w~Vq~u4+{FE?xW67VpCi%cJFAK)h zdG*)iKM1M`(r~#1gD^+_plwh$#v#%p@KFDX?~x_NRFWG^hnDvx!(5YtSq1uNc}XJb zJ2X&0UkZK5$xvmG6*5i@y1W0-`8LgoIxZkUwlGF{cMa1)bfOgFM!bLP+b zRdqpuj|~6C0tf`2`7OUF`wgq= zseeS03xjbvSmo7veHh0LhIs?>znF6LO4>we{F!R*VIiM#yiG$^X{pMzY%3oGA$vyy zoC>IVAM-qDlX~K+S4l{Wvbn>@cEIp4nMOjZ`jTlxQ_j<3GRyIOcVFHW10;bRb7VyH zQVjrVCbQ1bmDwZ!{ScgjL36|T4@VztH$N$$@4$Bt$o3&1m^_F+ga}>=B1j`5B9i9^ z3+-iKCdn7YGp{F|OEJ1qOC>yiBi_~l!Ck}`xz*dLfLnDoxsbe120gFRCL7leCuY&j zzpsbO45r5PlgFpaFFyW5`)YI$39V<-&w7z$GNJCg*W&Jv_H8>=vr>M9UP}$2H<^Ar zW(jRRw`)7~TK2}o_3lq+PE>4gAg14Ff*}DDLLD`Hikc#06)X{5>y)G46_I7@S53#! zR9R{|y3JYRbS6x{n^z5ld+&5X_i9W^f%2aZv8hx~AA@@@y$_qOB_%!}$Xce`ypFM! z9Vp4mtFzFJJMBAaGvdGz=Jvj@82x!$>;4>gE~+MG4w!1f&sU$Y^Lo zjniZTENJiNV_|B=+d?n7AY25Qz0YmOk~BC9&t#Vn#y7qRXd9SsMz}2#J(gD$Aldau zX_J}i!`p=R3?2&=6mE=N04=FYMG@~47GJBx6T1mG>UrLNqxHkq--{V;Q^yF)yyDOM zG5khz6hHsbNohy

i0?OpuaCm~LLvmnoZCH)%^eh;x}& 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 tT&}OXA0FFK(OT&ugT7r9%qCiR@WKY!F6nzA3$e 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 T+?rQ#z@LnytVG^3E${yiE)c&E literal 0 HcmV?d00001 diff --git a/docs/refunds.png b/docs/refunds.png new file mode 100644 index 0000000000000000000000000000000000000000..19b75ba69c7e4098adfb683b8c16bda82707d3ff GIT binary patch literal 47582 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 qI#e?Lx$RL=E3>eR-~Qa!zs+o!y= '4.0.2.0') { + $this->separator = '.'; + } else { + $this->separator = '|'; + } + } + + public function index(): void { + $this->install(); + $this->load->language('extension/mastercard/payment/mastercard'); + $this->load->model('extension/mastercard/payment/mastercard'); + $this->document->setTitle($this->language->get('heading_title')); + $this->load->model('setting/setting'); + if (($this->request->server['REQUEST_METHOD'] == 'POST' )&& $this->validate()) { + $this->model_setting_setting->editSetting('payment_mastercard', $this->request->post); + $this->session->data['success'] = $this->language->get('text_success'); + $this->response->redirect($this->url->link('marketplace/extension', + 'user_token=' . $this->session->data['user_token'] . '&type=payment', true)); + } + if (isset($this->error['live_merchant_id'])) { + $data['error_live_merchant_id'] = $this->error['live_merchant_id']; + } else { + $data['error_live_merchant_id'] = ''; + } + if (isset($this->error['live_api_password'])) { + $data['error_live_api_password'] = $this->error['live_api_password']; + } else { + $data['error_live_api_password'] = ''; + } + if (isset($this->error['test_merchant_id'])) { + $data['error_test_merchant_id'] = $this->error['test_merchant_id']; + } else { + $data['error_test_merchant_id'] = ''; + } + if (isset($this->error['test_api_password'])) { + $data['error_test_api_password'] = $this->error['test_api_password']; + } else { + $data['error_test_api_password'] = ''; + } + if (isset($this->error['credentials_validation'])) { + $data['error_credentials_validation'] = $this->error['credentials_validation']; + } else { + $data['error_credentials_validation'] = ''; + } + if (isset($this->error['validation_errors'])) { + $data['error_warning'] = $this->error['error_warning']; + } else { + $data['error_warning'] = ''; + } + $data['breadcrumbs'] = []; + $data['breadcrumbs'][] = [ + 'text' => $this->language->get('text_home'), + 'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true) + ]; + $data['breadcrumbs'][] = [ + 'text' => $this->language->get('text_extension'), + 'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true) + ]; + $data['breadcrumbs'][] = [ + 'text' => $this->language->get('heading_title'), + 'href' => $this->url->link('extension/mastercard/payment/mastercard', 'user_token=' . $this->session->data['user_token'], true) + ]; + $data['action'] = $this->url->link('extension/mastercard/payment/mastercard', + 'user_token=' . $this->session->data['user_token'], true); + $data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=payment', true); + $data['module_version'] = self::MODULE_VERSION; + $data['api_version'] = self::API_VERSION; + + if (isset($this->request->post['payment_mastercard_status'])) { + $data['payment_mastercard_status'] = $this->request->post['payment_mastercard_status']; + } else { + $data['payment_mastercard_status'] = $this->config->get('payment_mastercard_status'); + } + + if (isset($this->request->post['payment_mastercard_initial_transaction'])) { + $data['payment_mastercard_initial_transaction'] = $this->request->post['payment_mastercard_initial_transaction']; + } else { + $data['payment_mastercard_initial_transaction'] = $this->config->get('payment_mastercard_initial_transaction') ? : 'authorize'; + } + + if (isset($this->request->post['payment_mastercard_title'])) { + $data['payment_mastercard_title'] = $this->request->post['payment_mastercard_title']; + } else { + $data['payment_mastercard_title'] = $this->config->get('payment_mastercard_title') ? : 'Pay Using Mastercard Payment Gateway Services'; + } + + if (isset($this->request->post['payment_mastercard_live_merchant_id'])) { + $data['payment_mastercard_live_merchant_id'] = $this->request->post['payment_mastercard_live_merchant_id']; + } else { + $data['payment_mastercard_live_merchant_id'] = $this->config->get('payment_mastercard_live_merchant_id'); + } + + if (isset($this->request->post['payment_mastercard_live_api_password'])) { + $data['payment_mastercard_live_api_password'] = $this->request->post['payment_mastercard_live_api_password']; + } else { + $data['payment_mastercard_live_api_password'] = $this->config->get('payment_mastercard_live_api_password'); + } + + if (isset($this->request->post['payment_mastercard_test_merchant_id'])) { + $data['payment_mastercard_test_merchant_id'] = $this->request->post['payment_mastercard_test_merchant_id']; + } else { + $data['payment_mastercard_test_merchant_id'] = $this->config->get('payment_mastercard_test_merchant_id'); + } + + if (isset($this->request->post['payment_mastercard_test_api_password'])) { + $data['payment_mastercard_test_api_password'] = $this->request->post['payment_mastercard_test_api_password']; + } else { + $data['payment_mastercard_test_api_password'] = $this->config->get('payment_mastercard_test_api_password'); + } + + if (isset($this->request->post['payment_mastercard_live_notification_secret'])) { + $data['payment_mastercard_live_notification_secret'] = $this->request->post['payment_mastercard_live_notification_secret']; + } else { + $data['payment_mastercard_live_notification_secret'] = $this->config->get('payment_mastercard_live_notification_secret'); + } + + if (isset($this->request->post['payment_mastercard_test_notification_secret'])) { + $data['payment_mastercard_test_notification_secret'] = $this->request->post['payment_mastercard_test_notification_secret']; + } else { + $data['payment_mastercard_test_notification_secret'] = $this->config->get('payment_mastercard_test_notification_secret'); + } + + if (isset($this->request->post['payment_mastercard_api_gateway'])) { + $data['payment_mastercard_api_gateway'] = $this->request->post['payment_mastercard_api_gateway']; + } else { + $data['payment_mastercard_api_gateway'] = $this->config->get('payment_mastercard_api_gateway') ? : 'api_eu'; + } + + if (isset($this->request->post['payment_mastercard_api_gateway_other'])) { + $data['payment_mastercard_api_gateway_other'] = $this->request->post['payment_mastercard_api_gateway_other']; + } else { + $data['payment_mastercard_api_gateway_other'] = $this->config->get('payment_mastercard_api_gateway_other'); + } + + if (isset($this->request->post['payment_mastercard_test'])) { + $data['payment_mastercard_test'] = $this->request->post['payment_mastercard_test']; + } else { + $data['payment_mastercard_test'] = $this->config->get('payment_mastercard_test'); + } + + if (isset($this->request->post['payment_mastercard_integration_model'])) { + $data['payment_mastercard_integration_model'] = $this->request->post['payment_mastercard_integration_model']; + } else { + $data['payment_mastercard_integration_model'] = $this->config->get('payment_mastercard_integration_model') ? : 'hostedcheckout'; + } + + if (isset($this->request->post['payment_mastercard_hc_type'])) { + $data['payment_mastercard_hc_type'] = $this->request->post['payment_mastercard_hc_type']; + } else { + $data['payment_mastercard_hc_type'] = $this->config->get('payment_mastercard_hc_type') ? : 'redirect'; + } + + + + if (isset($this->request->post['payment_mastercard_send_line_items'])) { + $data['payment_ mastercard_send_line_items'] = $this->request->post['payment_mastercard_send_line_items']; + } else { + $data['payment_mastercard_send_line_items'] = $this->config->get('payment_mastercard_send_line_items'); + } + + if (isset($this->request->post['payment_mastercard_sort_order'])) { + $data['payment_mastercard_sort_order'] = $this->request->post['payment_mastercard_sort_order']; + } else { + $data['payment_mastercard_sort_order'] = $this->config->get('payment_mastercard_sort_order'); + } + + if (isset($this->request->post['payment_mastercard_debug'])) { + $data['payment_mastercard_debug'] = $this->request->post['payment_mastercard_debug']; + } else { + $data['payment_mastercard_debug'] = $this->config->get('payment_mastercard_debug'); + } + + if (isset($this->request->post['payment_mastercard_order_id_prefix'])) { + $data['payment_mastercard_order_id_prefix'] = $this->request->post['payment_mastercard_order_id_prefix']; + } else { + $data['payment_mastercard_order_id_prefix'] = $this->config->get('payment_mastercard_order_id_prefix'); + } + + if (isset($this->request->post['payment_mastercard_approved_status_id'])) { + $data['payment_mastercard_approved_status_id'] = $this->request->post['payment_mastercard_approved_status_id']; + } else { + $data['payment_mastercard_approved_status_id'] = $this->config->get('payment_mastercard_approved_status_id') ? : '2'; + } + + if (isset($this->request->post['payment_mastercard_declined_status_id'])) { + $data['payment_mastercard_declined_status_id'] = $this->request->post['payment_mastercard_declined_status_id']; + } else { + $data['payment_mastercard_declined_status_id'] = $this->config->get('payment_mastercard_declined_status_id') ? : '8'; + } + + if (isset($this->request->post['payment_mastercard_pending_status_id'])) { + $data['payment_mastercard_pending_status_id'] = $this->request->post['payment_mastercard_pending_status_id']; + } else { + $data['payment_mastercard_pending_status_id'] = $this->config->get('payment_mastercard_pending_status_id') ? : '1'; + } + + if (isset($this->request->post['payment_mastercard_risk_review_status_id'])) { + $data['payment_mastercard_risk_review_status_id'] = $this->request->post['payment_mastercard_risk_review_status_id']; + } else { + $data['payment_mastercard_risk_review_status_id'] = $this->config->get('payment_mastercard_risk_review_status_id') ? : '1'; + } + + if (isset($this->request->post['payment_mastercard_risk_declined_status_id'])) { + $data['payment_mastercard_risk_declined_status_id'] = $this->request->post['payment_mastercard_risk_declined_status_id']; + } else { + $data['payment_mastercard_risk_declined_status_id'] = $this->config->get('payment_mastercard_risk_declined_status_id') ? : '8'; + } + $this->load->model('localisation/order_status'); + $data['order_statuses'] = $this->model_localisation_order_status->getOrderStatuses(); + $data['header'] = $this->load->controller('common/header'); + $data['column_left'] = $this->load->controller('common/column_left'); + $data['footer'] = $this->load->controller('common/footer'); + $this->response->setOutput($this->load->view('extension/mastercard/payment/mastercard', $data)); + } + + protected function validate(){ + if (!$this->user->hasPermission('modify', 'extension/mastercard/payment/mastercard')) { + $this->error['warning'] = $this->language->get('error_permission'); + } + + if ($this->request->post['payment_mastercard_test']) { + if (!$this->request->post['payment_mastercard_test_merchant_id']) { + $this->error['test_merchant_id'] = $this->language->get('error_test_merchant_id'); + $this->error['credentials_validation'] = $this->language->get('error_warning'); + } elseif (!empty($this->request->post['payment_mastercard_test_merchant_id'])) { + $testMerchantId = $this->request->post['payment_mastercard_test_merchant_id']; + if (stripos($testMerchantId, 'TEST') === FALSE) { + $this->error['test_merchant_id'] = $this->language->get('error_test_merchant_id_prefix'); + $this->error['credentials_validation'] = $this->language->get('error_warning'); + } + } + if (!$this->request->post['payment_mastercard_test_api_password']) { + $this->error['test_api_password'] = $this->language->get('error_test_api_password'); + $this->error['credentials_validation'] = $this->language->get('error_warning'); + } + } else { + if (!$this->request->post['payment_mastercard_live_merchant_id']) { + $this->error['live_merchant_id'] = $this->language->get('error_live_merchant_id'); + $this->error['credentials_validation'] = $this->language->get('error_warning'); + } elseif (!empty($this->request->post['payment_mastercard_live_merchant_id'])) { + $liveMerchantId = $this->request->post['payment_mastercard_live_merchant_id']; + if (stripos($liveMerchantId, 'TEST') !== FALSE) { + $this->error['live_merchant_id'] = $this->language->get('error_live_merchant_id_prefix'); + $this->error['credentials_validation'] = $this->language->get('error_warning'); + } + } + if (!$this->request->post['payment_mastercard_live_api_password']) { + $this->error['live_api_password'] = $this->language->get('error_live_api_password'); + $this->error['credentials_validation'] = $this->language->get('error_warning'); + } + } + + if (!$this->error) { + $response = $this->paymentOptionsInquiry(); + + if (isset($response['result']) && $response['result'] === 'ERROR') { + if (isset($response['error']['explanation']) && $response['error']['explanation'] == 'Invalid credentials.') { + $this->error['credentials_validation'] = $this->language->get('error_credentials_validation'); + } else { + $this->error['credentials_validation'] = sprintf('%s: %s', $response['error']['cause'], $response['error']['explanation']); + } + } + } + + return !$this->error; + } + + public function order(){ + $this->load->model('extension/mastercard/payment/mastercard'); + $this->load->model('localisation/currency'); + $this->document->addScript('../extension/mastercard/admin/view/javascript/custom.js'); + $this->document->addStyle('../extension/mastercard/admin/view/stylesheet/mastercard.css'); + $this->session->data['admin_order_id'] = $this->request->get['order_id']; + $orderIDPrefix = $this->config->get('payment_mastercard_order_id_prefix'); + $processed_order_id = $orderIDPrefix . $this->request->get['order_id'] ; + + $order = $this->model_extension_mastercard_payment_mastercard->getOrder( + $this->request->get['order_id'] + ); + $currencies = $this->model_localisation_currency->getCurrencies(); + $defaultCurrencyCode = $this->config->get('config_currency'); + $currencyInfo = $this->model_localisation_currency->getCurrencyByCode($defaultCurrencyCode); + if ($currencyInfo) { + $currencySymbol = $currencyInfo['symbol_left']; + $data['currency'] = $currencyInfo['symbol_left']; + if (empty($currencySymbol)) { + $data['currency'] = $currencyInfo['symbol_right']; + } + } + + if ($order) { + $this->load->language('extension/mastercard/payment/mastercard'); + $data['mgps_hosted_checkout_order'] = array( + 'transactions' => $this->model_extension_mastercard_payment_mastercard->getTransactions( + $this->request->get['order_id'] + ) + ); + $data['order_id'] = $this->request->get['order_id']; + $data['user_token'] = $this->request->get['user_token']; + return $this->load->view('extension/mastercard/payment/mastercard_order',$data); + } + } + + public function install(){ + $this->load->model('extension/mastercard/payment/mastercard'); + $this->model_extension_mastercard_payment_mastercard->install(); + $this->model_extension_mastercard_payment_mastercard->deleteEvents(); + $this->model_extension_mastercard_payment_mastercard->addEvents(); + } + + public function uninstall() + { + $this->load->model('extension/mastercard/payment/mastercard'); + $this->load->model('setting/event'); + $this->model_extension_mastercard_payment_mastercard->uninstall(); + $this->model_extension_mastercard_payment_mastercard->deleteEvents(); + } + + public function paymentOptionsInquiry() + { + $uri = $this->getApiUri() . '/paymentOptionsInquiry'; + $requestData = $data['correlationId'] = "sasg753225dut"; + $response = $this->apiRequest('POST', $uri); + return $response; + } + + public function getGatewayUri($apiGateway) + { + $gatewayUrl = ''; + if ($apiGateway === self::API_AMERICA) { + $gatewayUrl = 'https://na-gateway.mastercard.com/'; + } elseif ($apiGateway === self::API_EUROPE) { + $gatewayUrl = 'https://eu-gateway.mastercard.com/'; + } elseif ($apiGateway === self::API_ASIA) { + $gatewayUrl = 'https://ap-gateway.mastercard.com/'; + } elseif ($apiGateway === self::API_MTF) { + $gatewayUrl = 'https://mtf.gateway.mastercard.com/'; + } elseif ($apiGateway === self::API_OTHER) { + $url = $this->config->get('payment_mastercard_api_gateway_other'); + if (!empty($url)) { + if (substr($url, -1) !== '/') { + $url = $url . '/'; + } + } + $gatewayUrl = $url; + } + + return $gatewayUrl; + } + + public function getApiUri() + { + $apiGateway = $this->request->post['payment_mastercard_api_gateway']; + return $this->getGatewayUri($apiGateway) . 'api/rest/version/' . self::API_VERSION . '/merchant/' . $this->getMerchantId(); + } + + public function getCaptureUri(){ + + $apiGateway = $this->config->get('payment_mastercard_api_gateway'); + return $this->getGatewayUri($apiGateway); + } + + public function getMerchantId(){ + if ($this->request->post['payment_mastercard_test']) { + return $this->request->post['payment_mastercard_test_merchant_id']; + } else { + return $this->request->post['payment_mastercard_live_merchant_id']; + } + } + + public function getApiPassword(){ + if ($this->request->post['payment_mastercard_test']) { + return $this->request->post['payment_mastercard_test_api_password']; + } else { + return $this->request->post['payment_mastercard_live_api_password']; + } + } + + public function isTestModeEnabled(){ + return $this->config->get('payment_mastercard_test'); + } + + public function isDebugModeEnabled(){ + return $this->config->get('payment_mastercard_debug'); + + } + + public function extractOrderNumberFromString($completeOrderNumber) { + $order_prefix = $this->config->get('payment_mastercard_order_id_prefix'); + $prefixPos = false; // Initialize with a default value + + if (!empty($order_prefix)) { + $prefixPos = strpos($completeOrderNumber, $order_prefix); + } + + if ($prefixPos !== false) { + $substring = substr($completeOrderNumber, $prefixPos + strlen($order_prefix)); + $pattern = '/\d+/'; + preg_match($pattern, $substring, $matches); + + if (isset($matches[0])) { + return $matches[0]; + } + } + + return null; + } + + public function apiRequest($method, $uri, $data = []){ + $userId = 'merchant.' . $this->getMerchantId(); + $requestLog = 'Send Request: "' . $method . ' ' . $uri . '" '; + if (!empty($data)) { + $requestLog .= json_encode(['request' => $data]); + } + $this->log($requestLog); + + $curl = curl_init(); + switch ($method){ + case 'POST': + curl_setopt($curl, CURLOPT_POST, 1); + if (!empty($data)) { + curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); + } + break; + case 'PUT': + curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT'); + if (!empty($data)) { + curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); + } + break; + default: + break; + } + + curl_setopt($curl, CURLOPT_URL, $uri); + curl_setopt($curl, CURLOPT_USERPWD, $userId . ':' . $this->getApiPassword()); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + + $output = curl_exec($curl); + $httpResponseCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); + curl_close($curl); + + $responseText = 'Receive Response: "' . $httpResponseCode . '" for the request: "' . $method . ' ' . $uri . '" '; + $responseText .= json_encode(['response' => json_decode($output)]); + $this->log($responseText); + + return json_decode($output, true); + } + + /** + * @param $method + * @param $uri + * @param array $data + * @return mixed + */ + public function adminApiRequest($method, $uri, $data = []){ + $apiurlConfig = $this->config->get('payment_mastercard_api_gateway'); + $test_mode = $this->config->get('payment_mastercard_test'); + $api_password = $test_mode ? $this->config->get('payment_mastercard_test_api_password') : $this->config->get('payment_mastercard_live_api_password'); + $merchant_id = $test_mode ? $this->config->get('payment_mastercard_test_merchant_id') : $this->config->get('payment_mastercard_live_merchant_id'); + $userId = 'merchant.' . $merchant_id; + $requestLog = 'Send Request: "' . $method . ' ' . $uri . '" '; + if (!empty($data)) { + $requestLog .= json_encode(['request' => $data]); + } + $this->log($requestLog); + + $curl = curl_init(); + switch ($method){ + case 'POST': + curl_setopt($curl, CURLOPT_POST, 1); + if (!empty($data)) { + curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); + } + break; + case 'PUT': + curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT'); + if (!empty($data)) { + curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); + } + break; + default: + break; + } + + curl_setopt($curl, CURLOPT_URL, $uri); + curl_setopt($curl, CURLOPT_USERPWD, $userId . ':' . $api_password); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + + $output = curl_exec($curl); + $httpResponseCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); + curl_close($curl); + + $responseText = 'Receive Response: "' . $httpResponseCode . '" for the request: "' . $method . ' ' . $uri . '" '; + $responseText .= json_encode(['response' => json_decode($output)]); + $this->log($responseText); + + return json_decode($output, true); + } + + /** + * @param $message + */ + public function log($message){ + if ($this->isDebugModeEnabled()) { + $this->debugLog = new \Opencart\System\Library\Log(self::DEBUG_LOG_FILENAME); + $this->debugLog->write($message); + } + } + + public function capture() { + $this->load->model('extension/mastercard/payment/mastercard'); + try { + $this->load->language('extension/mastercard/payment/mastercard'); + $this->load->model('sale/order'); + $comment = $this->language->get('text_capture_sucess'); + $merchant_id = $this->model_extension_mastercard_payment_mastercard->getMerchantId(); + $capture_order_id = $this->request->post['order_id']; + $transactionHistory = $this->model_extension_mastercard_payment_mastercard->getTransactions($this->session->data['admin_order_id'] ); + foreach ($transactionHistory as $transaction) { + if ($transaction['type'] === 'AUTHORIZED' && $transaction['oc_order_id'] === $this->request->post['order_id']) { + $capture_amount = $transaction['amount']; + $capture_transaction_id = $transaction['transaction_id']; + + } + } + $api_version = self::API_VERSION; + $completed_status_id = $this->model_extension_mastercard_payment_mastercard->getOrderStatusIdByName("Complete"); + $new_order_id = $this->extractOrderNumberFromString($capture_order_id); + $newTxnId = $this->getUniqueTransactionId($capture_order_id); + $url = $this->getCaptureUri() . 'api/rest/version/' . self::API_VERSION . '/merchant/' . $merchant_id . '/order/' . $capture_order_id . '/transaction/' . $newTxnId ; + $this->load->model('localisation/currency'); + $currencies = $this->model_localisation_currency->getCurrencies(); + $defaultCurrencyCode = $this->config->get('config_currency'); + $smtpHostname = $this->config->get('config_mail_smtp_hostname'); + $smtpPort = $this->config->get('config_mail_smtp_port'); + $mailEngine = $this->config->get('config_mail_engine'); + $notify = "0"; + $requestData = [ + 'apiOperation' => 'CAPTURE', + 'transaction' => [ + 'amount' => $capture_amount, + 'currency' => $defaultCurrencyCode, + ], + 'order' => array( + + 'reference' => $capture_order_id, + ), + ]; + $this->log( $requestData); + $response = $this->adminApiRequest('PUT', $url, $requestData); + $this->log($response); + + if (!empty($response['result']) && $response['result'] === 'SUCCESS') { + $status = $response['order']['status']; + $mail_type = "Capture"; + $oc_orderId = ""; + $customer_email = $response['customer']['email']; + $customer_name = $response['customer']['firstName'] . ' ' . $response['customer']['lastName']; + $email_status = "Payment" . '' . $status ; + $this->db->query("UPDATE " . DB_PREFIX . "mgps_order_transaction SET status ='".$status."' , type = 'Captured' WHERE transaction_id = '".$capture_transaction_id."' AND oc_order_id = '".$capture_order_id."' LIMIT 1"); + $this->db->query("UPDATE " . DB_PREFIX . "order SET order_status_id = '" . (int)$completed_status_id . "' WHERE order_id = '" . (int)$new_order_id . "'"); + $this->model_extension_mastercard_payment_mastercard->addOrderHistory($new_order_id, $completed_status_id, $comment, $notify); + if ($this->config->get('config_mail_engine')) { + $this->log("inside"); + $this->sendCustomEmail($customer_email, $oc_orderId, $status, $customer_name , $new_order_id,$mail_type ); + }else{ + $this->log("Error Send"); + } + $json = array( + 'error' => false, + 'msg' => 'Transaction captured successfully' + ); + $this->response->setOutput(json_encode($json)); + } else { + throw new \Exception('Transaction capture failed.'); + } + } catch (\Exception $e) { + $json = array( + 'error' => true, + 'msg' => 'An error occurred while capturing the transaction' + ); + $this->response->setOutput(json_encode($json)); + } + } + + private function sendCustomEmail($reciever_address, $oc_orderId, $subject , $customer_name , $new_order_id , $mail_type) { + + $this->load->model('extension/mastercard/payment/mastercard'); + $this->load->model('localisation/currency'); + $orderIDPrefix = $this->config->get('payment_mastercard_order_id_prefix'); + $processed_order_id = $new_order_id ; + $oc_orderId = $this->session->data['admin_order_id'] ; + $order = $this->model_extension_mastercard_payment_mastercard->getOrder( + $new_order_id + ); + $currencies = $this->model_localisation_currency->getCurrencies(); + $defaultCurrencyCode = $this->config->get('config_currency'); + $currencyInfo = $this->model_localisation_currency->getCurrencyByCode($defaultCurrencyCode); + if ($currencyInfo) { + $currencySymbol = $currencyInfo['symbol_left']; + $data['currency'] = $currencyInfo['symbol_left']; + if (empty($currencySymbol)) { + $data['currency'] = $currencyInfo['symbol_right']; + } + } + + if ($order) { + $this->load->language('extension/mastercard/payment/mastercard'); + $data['mgps_hosted_checkout_order'] = array( + 'transactions' => $this->model_extension_mastercard_payment_mastercard->getTransactions( + $oc_orderId + ) + ); + + $data['order_id'] = $processed_order_id ; + $data['user_token'] = $this->request->get['user_token']; + $data['customer_name'] =$customer_name; + $data['receiver_address'] = $reciever_address; + $data['order_status'] = $subject; + $data['mail_type'] = $mail_type; + + if ($this->config->get('config_mail_engine')) { + $mail_option = [ + 'parameter' => $this->config->get('config_mail_parameter'), + 'smtp_hostname' => $this->config->get('config_mail_smtp_hostname'), + 'smtp_username' => $this->config->get('config_mail_smtp_username'), + 'smtp_password' => html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'), + 'smtp_port' => $this->config->get('config_mail_smtp_port'), + 'smtp_timeout' => $this->config->get('config_mail_smtp_timeout') + ]; + + $mail = new \Opencart\System\Library\Mail($this->config->get('config_mail_engine'), $mail_option); + $mail->setTo($reciever_address); + $mail->setFrom($this->config->get('config_email')); + $mail->setSender($this->config->get('config_name')); + $mail->setSubject(html_entity_decode("Payment" . ' '. ucwords(strtolower(str_replace('_', ' ', $subject))), ENT_QUOTES, 'UTF-8')); + $mail->setHtml($this->load->view('extension/mastercard/payment/mgps_hosted_checkout_mail', $data)); + if ($mail->send()) { + $this->log("Email Sucessfully Send"); + return; + } else { + + $this->log('Email failed to send: ' . $mail->ErrorInfo); + return ; + } + } + } + } + + private function getUniqueTransactionId($orderReference){ + $uniqId = substr(uniqid(), 7, 6); + return sprintf('%s-%s', $orderReference, $uniqId); + } + + public function RequestRefund(){ + + try { + $this->load->language('extension/mastercard/payment/mastercard'); + $this->load->model('extension/mastercard/payment/mastercard'); + $this->load->model('sale/order'); + $capture_order_id = $this->request->post['order_id']; + $newTxnId = $this->getUniqueTransactionId($capture_order_id); + $new_order_id = $this->extractOrderNumberFromString($capture_order_id); + $transactionHistory = $this->model_extension_mastercard_payment_mastercard->getTransactions($this->session->data['admin_order_id'] ); + foreach ($transactionHistory as $transaction) { + + if ($transaction['type'] === 'Captured' || 'CAPTURED' && $transaction['oc_order_id'] === $this->request->post['order_id']) { + $capture_amount = $transaction['amount']; + $capture_transaction_id = $transaction['transaction_id']; + + + + } + } + $comment = $this->language->get('text_refund_sucess'); + $merchant_id =$this->model_extension_mastercard_payment_mastercard->getMerchantId(); + $api_version = self::API_VERSION; + $refund_status_id = $this->model_extension_mastercard_payment_mastercard->getOrderStatusIdByName("Refunded"); + $this->load->model('localisation/currency'); + $currencies = $this->model_localisation_currency->getCurrencies(); + $defaultCurrencyCode = $this->config->get('config_currency'); + $notify = "0"; + $mailEngine = $this->config->get('config_mail_engine'); + $smtpHostname = $this->config->get('config_mail_smtp_hostname'); + $smtpPort = $this->config->get('config_mail_smtp_port'); + + $url = $this->getCaptureUri() . 'api/rest/version/' . self::API_VERSION . '/merchant/' . $merchant_id . '/order/' . $capture_order_id . '/transaction/' . $newTxnId ; + $requestData = [ + 'apiOperation' => 'REFUND', + 'transaction' => [ + 'amount' => $capture_amount, + 'currency' => $defaultCurrencyCode, + ] + ]; + $this->log( $requestData); + $response = $this->adminApiRequest('PUT', $url, $requestData); + $this->log( $response); + if (!empty($response['result']) && $response['result'] === 'SUCCESS') { + $transactionStatus = $response['order']['status']; + $status = $response['order']['status']; + $mail_type = "Refund"; + $oc_orderId = ""; + $customer_email = $response['customer']['email']; + $customer_name = $response['customer']['firstName'] . ' ' . $response['customer']['lastName']; + $email_status = "Payment" . '' . $status ; + $refundedAmount = $response['order']['totalRefundedAmount']; + $this->db->query("UPDATE " . DB_PREFIX . "mgps_order_transaction SET status = '".$transactionStatus."' , refunded_amount = '".$refundedAmount."' , type = 'Captured' WHERE transaction_id = '".$capture_transaction_id."' AND oc_order_id = '".$capture_order_id."' LIMIT 1"); + $this->db->query("UPDATE " . DB_PREFIX . "order SET order_status_id = '" . (int)$refund_status_id . "' WHERE order_id = '" . (int)$new_order_id . "'"); + $this->model_extension_mastercard_payment_mastercard->addOrderHistory($new_order_id, $refund_status_id, $comment, $notify); + if ($this->config->get('config_mail_engine')) { + + $this->sendCustomEmail($customer_email,$oc_orderId, $status, $customer_name , $new_order_id,$mail_type ); + } + + $json = array( + 'error' => false, + 'msg' => 'Transaction refunded successfully' + ); + $this->response->setOutput(json_encode($json)); + } else { + $json = array( + 'error' => true, + 'msg' => 'Transaction refund failed' + ); + $this->response->setOutput(json_encode($json)); + } + } catch (\Exception $e) { + $json = array( + 'error' => true, + 'msg' => 'An error occurred while processing the refund' + ); + $this->response->setOutput(json_encode($json)); + } + + + } + + public function RequestPartialRefund() { + try { + $this->load->language('extension/mastercard/payment/mastercard'); + $this->load->model('extension/mastercard/payment/mastercard'); + $this->load->model('sale/order'); + $this->load->model('localisation/currency'); + $capture_order_id = $this->request->post['order_id']; + $newTxnId = $this->getUniqueTransactionId($capture_order_id); + $new_order_id = $this->extractOrderNumberFromString($capture_order_id); + $merchant_id = $this->model_extension_mastercard_payment_mastercard->getMerchantId(); + $transactionHistory = $this->model_extension_mastercard_payment_mastercard->getTransactions($this->session->data['admin_order_id'] ); + foreach ($transactionHistory as $transaction) { + if ($transaction['type'] === 'Captured' || 'CAPTURED' && $transaction['oc_order_id'] === $this->request->post['order_id']) { + $capture_transaction_id = $transaction['transaction_id']; + } + } + + $capture_amount = $this->request->post['amount']; + $api_version = self::API_VERSION; + $refund_status_id = $this->model_extension_mastercard_payment_mastercard->getOrderStatusIdByName("Refunded"); + $currencies = $this->model_localisation_currency->getCurrencies(); + $defaultCurrencyCode = $this->config->get('config_currency'); + $currencyInfo = $this->model_localisation_currency->getCurrencyByCode($defaultCurrencyCode); + $smtpHostname = $this->config->get('config_mail_smtp_hostname'); + $smtpPort = $this->config->get('config_mail_smtp_port'); + $mailEngine = $this->config->get('config_mail_engine'); + if ($currencyInfo) { + $currencySymbol = $currencyInfo['symbol_left']; + if (empty($currencySymbol)) { + $currencySymbol = $currencyInfo['symbol_right']; + } + } + $comment = $currencySymbol .$capture_amount . ' ' . $this->language->get('text_partial_refund_sucess'); + if (!empty($this->request->post['reason'])) { + $comment .= "\nRefund reason: " . $this->request->post['reason']; + } + $notify = "0"; + + $url = $this->getCaptureUri() . 'api/rest/version/' . self::API_VERSION . '/merchant/' . $merchant_id . '/order/' . $capture_order_id . '/transaction/' . $newTxnId ; + $requestData = [ + 'apiOperation' => 'REFUND', + 'transaction' => [ + 'amount' => $capture_amount , + 'currency' => $defaultCurrencyCode, + 'taxAmount' => '0' + ] + ]; + $this->log( $requestData); + $response = $this->adminApiRequest('PUT', $url, $requestData); + $this->log( $response); + if (!empty($response['result']) && $response['result'] === 'SUCCESS') { + $transactionStatus = $response['order']['status']; + $refundedAmount = $response['order']['totalRefundedAmount']; + $status = $response['order']['status']; + $mail_type = "Refund"; + $oc_orderId = ""; + $customer_email = $response['customer']['email']; + $customer_name = $response['customer']['firstName'] . ' ' . $response['customer']['lastName']; + $email_status = "Payment" . '' . $status ; + $this->db->query("UPDATE " . DB_PREFIX . "mgps_order_transaction SET status = '".$transactionStatus."' ,refunded_amount = '".$refundedAmount."', type = 'Captured' WHERE transaction_id = '".$capture_transaction_id."' AND oc_order_id = '".$capture_order_id."' LIMIT 1"); + $this->db->query("UPDATE " . DB_PREFIX . "order SET order_status_id = '" . (int)$refund_status_id . "' WHERE order_id = '" . (int)$new_order_id . "'"); + $this->model_extension_mastercard_payment_mastercard->addOrderHistory($new_order_id, $refund_status_id, $comment, $notify); + if ($this->config->get('config_mail_engine')) { + $this->sendCustomEmail($customer_email,$oc_orderId, $status, $customer_name , $new_order_id,$mail_type ); + } + + $json = array( + 'error' => false, + 'msg' => 'Transaction Partially Refunded' + ); + $this->response->setOutput(json_encode($json)); + } elseif (!empty($response['result']) && $response['result'] === 'ERROR') { + $json = array( + 'error' => false, + 'msg' => 'Requested amount Exceeds than order amount' + ); + $this->response->setOutput(json_encode($json)); + } + } catch (\Exception $e) { + // Handle exceptions here, e.g., log the error or display a user-friendly message + $json = array( + 'error' => true, + 'msg' => 'An error occurred while processing the refund' + ); + $this->response->setOutput(json_encode($json)); + } + } + + public function save(): void { + $this->load->language('extension/example_payment/payment/example_payment'); + $json = []; + // checking file modification permission + if (!$this->user->hasPermission('modify', 'extension/example_payment/payment/example_payment')) { + $json['error']['warning'] = $this->language->get('error_permission'); + } + + if (!$json) { + $this->load->model('setting/setting'); + + $this->model_setting_setting->editSetting('payment_example_payment', $this->request->post); + + $json['success'] = $this->language->get('text_success'); + } + + $this->response->addHeader('Content-Type: application/json'); + $this->response->setOutput(json_encode($json)); + } + +} \ No newline at end of file diff --git a/admin/language/en-gb/extension/payment/mpgs_hosted_checkout.php b/src/admin/language/en-gb/payment/mastercard.php old mode 100644 new mode 100755 similarity index 69% rename from admin/language/en-gb/extension/payment/mpgs_hosted_checkout.php rename to src/admin/language/en-gb/payment/mastercard.php index a9bf652..6556f2c --- a/admin/language/en-gb/extension/payment/mpgs_hosted_checkout.php +++ b/src/admin/language/en-gb/payment/mastercard.php @@ -1,6 +1,6 @@ Mastercard Payment Gateway Services'; +$_['text_payment_txn_info'] = 'Transactions'; +$_['text_payment_mail_info'] = 'Order Details'; +$_['text_date_created'] = 'Date'; +$_['text_order_ref'] = 'Order ID'; +$_['text_order_merchant'] = 'Merchant Name'; +$_['text_order_merchant_id'] = 'Merchant ID'; +$_['text_capture_button'] = 'Capture Payment'; +$_['text_void_button'] = 'Void Authorization'; +$_['text_refund_button'] = 'Full Refund'; +$_['text_txn_ref'] = 'Transaction ID'; +$_['text_txn_merchant_ref'] = 'Merchant ID'; +$_['text_txn_type'] = 'Transaction Type'; +$_['text_txn_status'] = 'Transaction Status'; +$_['text_txn_amount'] = 'Transaction Amount'; +$_['text_refunded_amount'] = 'Refunded Amount'; +$_['text_confirm_capture'] = 'Are you sure you want to capture this authorization?'; +$_['text_capture_sucess'] = 'Transaction captured successfully'; +$_['text_refund_sucess'] = 'Transaction refunded successfully'; +$_['text_partial_refund_sucess'] = 'Refunded Partially'; +$_['text_partial_refund_error'] = 'Requested amounts exceeds than order amount'; +$_['text_confirm_refund_full'] = 'Are you sure you want to request refund?'; +$_['text_confirm_void'] = 'Are you sure you want to cancel this AUthorization?'; +$_['text_txn_actions'] = 'Actions'; +$_['text_mastercard'] = 'Mastercard Payment Gateway Services'; // Help $_['help_title'] = 'This controls the title which the user sees during checkout.'; @@ -86,3 +109,7 @@ $_['error_test_merchant_id_prefix'] = 'Test Merchant ID must be prefixed with TEST'; $_['error_live_merchant_id_prefix'] = 'Live Merchant ID must not have TEST prefix'; $_['error_credentials_validation'] = 'API credentials are not valid. Please provide valid credentials.'; +$_['error_entry_title'] = 'Enter a Title'; +$_['error_warning'] = 'Warning: Please check the form carefully for errors!'; + + diff --git a/src/admin/model/payment/mastercard.php b/src/admin/model/payment/mastercard.php new file mode 100755 index 0000000..21d2076 --- /dev/null +++ b/src/admin/model/payment/mastercard.php @@ -0,0 +1,160 @@ +db->query(" + CREATE TABLE IF NOT EXISTS `".DB_PREFIX."mgps_order_transaction` ( + `mgps_order_transaction_id` INT(11) NOT NULL AUTO_INCREMENT, + `order_id` varchar(255) NOT NULL, + `oc_order_id` varchar(255) NOT NULL, + `transaction_id` varchar(255), + `date_added` DATETIME NOT NULL, + `type` varchar(255) DEFAULT NULL, + `merchant_name` varchar(255) DEFAULT NULL, + `merchant_id` varchar(255) DEFAULT NULL, + `status` varchar(255) DEFAULT NULL, + `amount` varchar(255) NOT NULL, + `refunded_amount` varchar(255) DEFAULT NULL, + PRIMARY KEY (`mgps_order_transaction_id`) + ) ENGINE=MyISAM DEFAULT COLLATE=utf8_general_ci; + "); + } + + public function deleteEvents(): void{ + $this->load->model('setting/event'); + + $this->model_setting_event->deleteEventByCode('mastercard_update_page_header'); + } + + public function addEvents(){ + $this->load->model('setting/event'); + $eventData = array( + 'code' => 'mastercard_update_page_header', + 'trigger' => 'catalog/controller/common/header/before', + 'action' => 'extension/mastercard/payment/mastercard.update_page_header', + 'status' => 1, + 'sort_order' => 0, + 'description' => '' + ); + + $this->model_setting_event->addEvent($eventData); + } + + public function createTable(){ + $this->db->query(" + CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "mpgs_hpf_token` ( + `hpf_token_id` INT(11) unsigned NOT NULL AUTO_INCREMENT, + `customer_id` INT(11) NOT NULL, + `token` VARCHAR(50) NOT NULL, + `created_at` DATETIME NOT NULL, + PRIMARY KEY (`hpf_token_id`), + KEY `customer_id` (`customer_id`) + ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; + "); + } + + public function uninstall(){ + $this->db->query("DROP TABLE IF EXISTS `".DB_PREFIX."mgps_order_transaction`;"); + $this->load->model('setting/event'); + $this->model_setting_event->deleteEventByCode('mastercard'); + if (VERSION < '4.0.2.0') { + $this->model_setting_event->deleteEventByCode('mastercard_extension_get_extensions_by_type'); + $this->model_setting_event->deleteEventByCode('mastercard_extension_get_extension_by_code'); + } + } + + public function getOrder($order_id){ + $pattern = '/\d+/'; + preg_match($pattern, $order_id, $matches); + if (isset($matches[0])) { + $result = $matches[0]; + } + $this->load->model('sale/order'); + $order_info = $this->model_sale_order->getOrder($result); + + if ($order_info && is_array($order_info) && isset($order_info['payment_method']['code']) && $order_info['payment_method']['code'] === 'mastercard.mastercard') { + return $order_info; + } + + return null; + } + + public function addOrderHistory($order_id, $order_status_id, $comment = '', $notify = false) { + + $this->db->query("INSERT INTO `" . DB_PREFIX . "order_history` SET order_id = '" . (int)$order_id . "', order_status_id = '" . (int)$order_status_id . "', notify = '" . (int)$notify . "', comment = '" . $this->db->escape($comment) . "', date_added = NOW()"); + } + + public function getOrderStatusIdByName($statusName) { + $query = $this->db->query("SELECT order_status_id FROM " . DB_PREFIX . "order_status WHERE name = '" . $this->db->escape($statusName) . "'"); + if ($query->num_rows) { + return $query->row['order_status_id']; + } else { + return false; + } + } + + public function getTransactions($order_id){ + + $query = $this->db->query("SELECT * FROM `".DB_PREFIX."mgps_order_transaction` WHERE `order_id` = '".$order_id."'"); + $transactions = array(); + if ($query->num_rows) { + foreach ($query->rows as $row) { + $transactions[] = $this->rowTxn($row); + } + } + + return $transactions; + } + + protected function rowTxn($row){ + $amount = $row['amount']; + $row['amount'] = $row['amount']; + + return $row; + } + + public function dropTable(){ + $this->db->query("DROP TABLE IF EXISTS `" . DB_PREFIX . "mpgs_hpf_token`"); + } + + public function getMerchantId(){ + if ($this->isTestModeEnabled()) { + + return $this->config->get('payment_mastercard_test_merchant_id'); + } else { + return $this->config->get('payment_mastercard_live_merchant_id'); + } + } + + public function isTestModeEnabled(){ + return $this->config->get('payment_mastercard_test'); + } + + + + + + + + + +} \ No newline at end of file diff --git a/admin/view/image/payment/mastercard.png b/src/admin/view/image/payment/mastercard.png similarity index 100% rename from admin/view/image/payment/mastercard.png rename to src/admin/view/image/payment/mastercard.png diff --git a/admin/view/javascript/mpgs-hosted-checkout/custom.js b/src/admin/view/javascript/custom.js old mode 100644 new mode 100755 similarity index 55% rename from admin/view/javascript/mpgs-hosted-checkout/custom.js rename to src/admin/view/javascript/custom.js index 7cb99fe..bf4b3d5 --- a/admin/view/javascript/mpgs-hosted-checkout/custom.js +++ b/src/admin/view/javascript/custom.js @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Mastercard + * Copyright (c) 2023 Mastercard * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,9 @@ $(function ($) { 'use strict'; + if ($('#tab-mastercard').length > 0) { + $('a[href="#tab-mastercard"]').tab('show'); + } var mpgs_admin_config = { init: function () { var liveMerchantId = $('#live-merchant-container'), @@ -78,4 +81,68 @@ $(function ($) { } }; mpgs_admin_config.init(); -}); \ No newline at end of file + + $(document).ready(function() { + var userToken = $('script[src$="custom.js"]').data('user-token'); + $("#partialrefundButton").on("click", function() { + var maxrefundAmount = parseInt($(this).data("amount")); + $('.refund_reason_container').show(); + $("#refundInput").val(""); + $("#refundBoxContainer").show(); + $('.payment_button_wrapper').hide(); + $('.refund_form_wrapper').show(); + $('#partialrefundButton,#refundButton').hide(); + $('#partail_refund_form,.action_wrapper').show(); + }); + + + $('#refundInput').on("keypress", function(event) { + const allowedCharsRegex = /^[0-9.]+$/; + const enteredChar = String.fromCharCode(event.which); + if (!allowedCharsRegex.test(enteredChar)) { + event.preventDefault(); + } + }); + + $('#partail_refund_form').on('submit', function(event) { + event.preventDefault(); + }); + + $('.cancel_refund_button').click(function(){ + $('#refundButton,#partialrefundButton').show(); + $('#partail_refund_form,.action_wrapper').hide(); + }); + + $('.refundReason').on('input', function() { + var maxLength = 500; + var currentLength = $(this).val().length; + var remaining = maxLength - currentLength; + + if (remaining >= 0) { + $('#charCount').text(remaining); + } else { + var text = $(this).val().substring(0, maxLength); + $(this).val(text); + } + }); + + $(".refund_amount").on("input", function () { + // Remove any non-numeric characters except the decimal point + $(this).val($(this).val().replace(/[^0-9.]/g, '')); + + // Ensure that there's only one decimal point + if ($(this).val().split('.').length > 2) { + $(this).val($(this).val().slice(0, -1)); // Remove the last character + } + + // Limit to a maximum of two decimal places + const parts = $(this).val().split('.'); + if (parts[1] && parts[1].length > 2) { + parts[1] = parts[1].substring(0, 2); + $(this).val(parts.join('.')); + } + }); + + }); + +}); diff --git a/src/admin/view/stylesheet/mastercard.css b/src/admin/view/stylesheet/mastercard.css new file mode 100755 index 0000000..ece4ff4 --- /dev/null +++ b/src/admin/view/stylesheet/mastercard.css @@ -0,0 +1,37 @@ +.partial_refund_form label { + display: block; + margin-bottom: 10px; +} + +.button_wrapper { + margin-bottom: 22px; +} + +.refund_button_container, +.partial_refund_container { + display: flex; + margin: 20px; +} + +.refund_amount { + width: 130px; + margin-bottom: 20px; +} + +.refundBoxContainer { + margin: 0 30px; +} + + +span.img_loading_refundButton i.fa.fa-cog.fa-spin.fa-lg { + vertical-align: -75%; + padding: 0 10px; +} + +span.img_loading_captureButton .capture_Spinner { + padding: 17px; +} + +.action_wrapper { + margin-top: 15px; +} \ No newline at end of file diff --git a/src/admin/view/template/payment/mastercard.twig b/src/admin/view/template/payment/mastercard.twig new file mode 100755 index 0000000..5e39693 --- /dev/null +++ b/src/admin/view/template/payment/mastercard.twig @@ -0,0 +1,366 @@ +{{ header }}{{ column_left }} +

+ + +
+
+
{{ text_edit }}
+
+
+ +
+
+ +
+ +
+
+ +
+
+
+ + +
+ +
+ +
+
+ +
+ +
+ {% if payment_mastercard_title is empty %} + +
+ {{ entry_title }} is required. +
+ {% else %} + + {% endif %} +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+ {% if error_live_merchant_id %} + +
{{ error_live_merchant_id }}
+ {% else %} + + {% endif %} +
+
+ +
+ +
+ {% if error_live_api_password %} + +
{{ error_live_api_password }}
+ {% else %} + + {% endif %} +
+
+ +
+ +
+ {% if error_test_merchant_id %} + +
{{ error_test_merchant_id }}
+ {% else %} + + {% endif %} +
+
+ +
+ +
+ {% if error_test_api_password %} + +
{{ error_test_api_password }}
+ {% else %} + + {% endif %} +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
{{ help_geocode }}
+
+
+ +
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ + + +
+
+ +{{ footer }} diff --git a/src/admin/view/template/payment/mastercard_order.twig b/src/admin/view/template/payment/mastercard_order.twig new file mode 100755 index 0000000..a5d35ae --- /dev/null +++ b/src/admin/view/template/payment/mastercard_order.twig @@ -0,0 +1,314 @@ +{% for txn in mgps_hosted_checkout_order.transactions %} +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {% if txn.refunded_amount %} + + + + + {% endif %} + + +
+

{{ text_payment_txn_info }}

+
{{ text_date_created }}{{ txn.date_added }}
{{ text_order_ref }}{{ txn.oc_order_id }}
{{ text_txn_ref }}{{ txn.transaction_id }}
{{ text_txn_status }}{{ txn.status|replace({'_': ' '})|title }}
{{ text_txn_amount }} {{currency}}{{ txn.amount | number_format(2, '.', ',') }}
{{ text_refunded_amount }} {{currency}}{{ txn.refunded_amount | number_format(2, '.', ',') }}
+ +
+
+ {% if txn.status == 'AUTHORIZED'%} +
+ + +
+ {% elseif txn.status == 'CAPTURED' or txn.status == 'Captured' %} + +
+
+ + + +
+ + + +
+ {% elseif txn.status == 'PARTIALLY_REFUNDED' %} +
+
+ + +
+ + + +
+ {% endif %} + +
+{% endfor %} + + \ No newline at end of file diff --git a/src/admin/view/template/payment/mgps_hosted_checkout_mail.twig b/src/admin/view/template/payment/mgps_hosted_checkout_mail.twig new file mode 100755 index 0000000..195dfda --- /dev/null +++ b/src/admin/view/template/payment/mgps_hosted_checkout_mail.twig @@ -0,0 +1,49 @@ + + + + + +

Dear {{ customer_name }},

+ + {% for txn in mgps_hosted_checkout_order.transactions %} +

Your payment against this order is successfully {{ txn.status|replace({'_': ' '})|title }}. Please find order details below.

+ + + + + + + + + + + + +
Order details
+ Date Added : {{ txn.date_added }}
+ Order ID: {{ txn.order_id }}
+ Transaction ID: {{ txn.transaction_id }}
+ Transaction Status:{{ txn.status|replace({'_': ' '})|title }}
+ Email : {{ receiver_address }}
+ Captured Amount: {{ currency }}{{ txn.amount | number_format(2, '.', ',') }}
+ {% if txn.refunded_amount %} + Refunded Amount: {{currency}}{{ txn.refunded_amount | number_format(2, '.', ',') }} + {% endif %} +
+ {% endfor %} +

Please Don't reply to this email

+ + + + + + \ No newline at end of file diff --git a/src/catalog/controller/payment/mastercard.php b/src/catalog/controller/payment/mastercard.php new file mode 100755 index 0000000..3f76865 --- /dev/null +++ b/src/catalog/controller/payment/mastercard.php @@ -0,0 +1,944 @@ +load->language('extension/mastercard/payment/mastercard'); + $this->load->model('extension/mastercard/payment/mastercard'); + $gatewayUri = $this->model_extension_mastercard_payment_mastercard->getGatewayUri(); + $apiVersion = $this->model_extension_mastercard_payment_mastercard->getApiVersion(); + $integrationModel = $this->model_extension_mastercard_payment_mastercard->getIntegrationModel(); + if (!empty($this->session->data['order_id']) && !empty($this->session->data['currency']) && !empty($this->session->data['shipping_address'])) { + try { + if ($integrationModel === 'hostedcheckout') { + unset($this->session->data['HostedCheckout_sessionId']); + $built = $this->buildCheckoutSession(); + if ($built === true) { + $data['configured_variables'] = json_encode($this->configureHostedCheckout()); + } + } + } catch (\Exception $e) { + $data['error_session'] = $e->getMessage(); + } + } + if (empty($data['error_session'])) { + if ($integrationModel === 'hostedcheckout') { + $cacheBust = (int)round(microtime(true)); + $data['hosted_checkout_js'] = $gatewayUri . 'static/checkout/checkout.min.js?_='.$cacheBust; + $data['checkout_interaction'] = $this->config->get('payment_mastercard_hc_type'); + $data['completeCallback'] = $this->url->link('extension/mastercard/payment/mastercard.processHostedCheckout', '', false); + $data['cancelCallback'] = $this->url->link('extension/mastercard/payment/mastercard.cancelCallback', '', true); + $data['errorCallback'] = $this->url->link('extension/mastercard/payment/mastercard.errorCallback', '', true); + } + } + if ($integrationModel === 'hostedcheckout') { + $checkout_session_id =json_decode($data['configured_variables']); + $data['session_id'] = $checkout_session_id->session->id; + $data['merchant'] = $checkout_session_id->merchant; + $data['version'] = $checkout_session_id->session->version; + $data['mgps_order_id'] = $this->getOrderPrefix($this->session->data['order_id']); + $data['order_id'] = $this->session->data['order_id']; + $data['success_indicator'] = $this->session->data['mpgs_hosted_checkout']['successIndicator']; + $data['OCSESSID'] = $_COOKIE['OCSESSID']; + $jsonData = json_encode($data); + $data['jsonData'] = $jsonData; + setcookie('OCSESSID', $data['OCSESSID'], time() + 24 * 3600, '/'); + return $this->load->view('extension/mastercard/payment/mgps_hosted_checkout', $data); + } + } + + /** + * @param $route + */ + public function init($route){ + $allowed = ['checkout/checkout']; + if (!in_array($route, $allowed)) { + return; + } + $this->load->model('extension/mastercard/payment/mastercard'); + $gatewayUri = $this->model_extension_mastercard_payment_mastercard->getGatewayUri(); + $apiVersion = $this->model_extension_mastercard_payment_mastercard->getApiVersion(); + $integrationModel = $this->model_extension_mastercard_payment_mastercard->getIntegrationModel(); + $apiUsername = $this->model_extension_mastercard_payment_mastercard->getMerchantId(); + } + + /** + * @return bool + * @throws Exception + */ + public function buildCheckoutSession(){ + $this->load->model('extension/mastercard/payment/mastercard'); + $this->model_extension_mastercard_payment_mastercard->clearCheckoutSession(); + $order = $this->getOrder(); + $txnId = uniqid(sprintf('%s-', $order['id'])); + $notificationUrl = "example.com"; + $requestData = [ + 'apiOperation' => 'INITIATE_CHECKOUT', + 'partnerSolutionId' => $this->model_extension_mastercard_payment_mastercard->buildPartnerSolutionId(), + 'order' => array_merge( + + $this->getOrder(), + $this->getOrderItemsTaxAndTotals(), + + ), + 'interaction' => $this->getInteraction(), + 'billing' => $this->getBillingAddress(), + 'customer' => $this->getCustomer(), + 'transaction' => [ + 'reference' => $txnId + ] + ]; + $requestData['order']['notificationUrl'] =$this->url->link('extension/mastercard/payment/mastercard.callback', '', true); + if (!empty($this->getShippingAddress())) { + $requestData = array_merge($requestData, ['shipping' => $this->getShippingAddress()]); + } + unset($this->session->data['HostedCheckout_sessionId']); + $uri = $this->model_extension_mastercard_payment_mastercard->getApiUri() . '/session'; + $response = $this->model_extension_mastercard_payment_mastercard->apiRequest('POST', $uri, $requestData); + if (!empty($response['result']) && $response['result'] === 'SUCCESS') { + if ($this->model_extension_mastercard_payment_mastercard->getIntegrationModel() === 'hostedcheckout') { + + $this->session->data['mpgs_hosted_checkout'] = $response; + if (isset($this->session->data['mpgs_hosted_checkout'])) { + $this->session->data['mgps_redirect_session'] = $this->session->data['mpgs_hosted_checkout']; + } + } + return true; + } elseif (!empty($response['result']) && $response['result'] === 'ERROR') { + throw new \Exception(json_encode($response['error'])); + } + return false; + } + + /** + * @return mixed + */ + protected function getInteraction(){ + $this->load->model('extension/mastercard/payment/mastercard'); + $integration['merchant']['name'] = $this->config->get('config_name'); + $integration['operation'] = $this->model_extension_mastercard_payment_mastercard->getPaymentAction(); + $integration['returnUrl'] = $this->url->link('extension/mastercard/payment/mastercard.processHostedCheckout', '', true); + $integration['displayControl']['shipping'] = 'HIDE'; + $integration['displayControl']['billingAddress'] = 'HIDE'; + $integration['displayControl']['customerEmail'] = 'HIDE'; + return $integration; + } + + /** + * @return mixed + */ + protected function getOrder(){ + $orderId = $this->getOrderPrefix($this->session->data['order_id']); + $orderData['id'] = $orderId; + $orderData['reference'] = $orderId; + $orderData['currency'] = $this->session->data['currency']; + $orderData['description'] = 'Ordered goods'; + $orderData['notificationUrl'] = $this->url->link('extension/mastercard/payment/mastercard.callback', '', true); + return $orderData; + } + + /** + * Order items, tax and order totals + * + * @return array + */ + protected function getOrderItemsTaxAndTotals(){ + $orderData = []; + $sendLineItems = $this->config->get('payment_mastercard_send_line_items'); + if ($sendLineItems) { + + $this->load->model('catalog/product'); + foreach ($this->cart->getProducts() as $product) { + $productModel = $this->model_catalog_product->getProduct($product['product_id']); + $items = []; + $description = []; + foreach ($product['option'] as $option) { + if ($option['type'] != 'file') { + $value = isset($option['value']) ? $option['value'] : ''; + } else { + $uploadInfo = $this->model_tool_upload->getUploadByCode($option['value']); + if ($uploadInfo) { + $value = $uploadInfo['name']; + } else { + $value = ''; + } + } + $description[] = $option['name'] . ':' . (utf8_strlen($value) > 20 ? utf8_substr($value, 0, + 20) . '..' : $value); + } + if (!empty($description)) { + $items['description'] = substr(implode(', ', $description), 0, 127); + } elseif ($product['model']) { + $items['description'] = substr($product['model'], 0, 127); + } + $items['name'] = substr($product['name'], 0, 127); + $items['quantity'] = $product['quantity']; + if ($product['model']) { + $items['sku'] = substr($product['model'], 0, 127); + } + $items['unitPrice'] = round($product['price'], 2); + + $orderData['item'][] = $items; + } + } + /** Tax, Shipping, Discount and Order Total */ + $totals = []; + $taxes = $this->cart->getTaxes(); + $total = 0; + + // Because __call can not keep var references so we put them into an array. + $totalData = [ + 'totals' => &$totals, + 'taxes' => &$taxes, + 'total' => &$total + ]; + + $this->load->model('setting/extension'); + + // Display prices + $sort_order = []; + $results = $this->model_setting_extension->getExtensionsByType('total'); + foreach ($results as $key => $value) { + $sort_order[$key] = $this->config->get('total_' . $value['code'] . '_sort_order'); + } + array_multisort($sort_order, SORT_ASC, $results); + foreach ($results as $result) { + if ($this->config->get('total_' . $result['code'] . '_status')) { + $this->load->model('extension/' . $result['extension'] . '/total/' . $result['code']); + // __call can not pass-by-reference so we get PHP to call it as an anonymous function. + ($this->{'model_extension_' . $result['extension'] . '_total_' . $result['code']}->getTotal)($totals, $taxes, $total); + } + } + + $sort_order = []; + foreach ($totals as $key => $value) { + $sort_order[$key] = $value['sort_order']; + } + + array_multisort($sort_order, SORT_ASC, $totals); + $skipTotals = [ + 'sub_total', + 'total', + 'tax' + ]; + $formattedTotal = round($total, 2); + $subTotal = 0; + $tax = 0; + $taxInfo = []; + $shipping = 0; + + foreach ($totals as $key => $value) { + $formattedValue = round($value['value'], 2); + if ($value['code'] == 'sub_total') { + $subTotal += $formattedValue; + } + if ($value['code'] == 'tax') { + $tax += $formattedValue; + $taxInfo[] = [ + 'amount' => $formattedValue, + 'type' => $value['title'] + ]; + } + if (!in_array($value['code'], $skipTotals)) { + $shipping += $formattedValue; + } + } + $finalTotal = $subTotal + $tax + $shipping; + if ($finalTotal == $formattedTotal) { + $this->orderAmount = $formattedTotal; + $orderData['amount'] = $formattedTotal; + if ($sendLineItems) { + $orderData['itemAmount'] = $subTotal; + $orderData['shippingAndHandlingAmount'] = $shipping; + $orderData['taxAmount'] = $tax; + } + } + /** Order Tax Details */ + if (!empty($taxInfo) && $sendLineItems) { + $orderData['tax'] = $taxInfo; + } + + return $orderData; + } + /** + * @return array + */ + protected function getBillingAddress(){ + + $this->load->model('account/customer'); + $this->load->model('account/address'); + $this->load->model('account/order'); + $billingAddress = []; + if ($this->customer->isLogged() && $this->customer->getAddressId()) { + if (VERSION >= '4.0.2.0') { + $paymentAddress = $this->model_account_address->getAddress($this->customer->getId(),$this->customer->getAddressId()); + $this->session->data['payment_address'] = $this->model_account_address->getAddress($this->customer->getId(),$this->customer->getAddressId()); + } else { + $this->session->data['payment_address'] = $this->model_account_address->getAddress($this->customer->getAddressId()); + } + + if (!empty($paymentAddress['city'])) { + $billingAddress['address']['city'] = substr($paymentAddress['city'], 0, 100); + } + + if (!empty($paymentAddress['company'])) { + $billingAddress['address']['company'] = $paymentAddress['company']; + } + + if (!empty($paymentAddress['iso_code_3'])) { + $billingAddress['address']['country'] = $paymentAddress['iso_code_3']; + } + + if (!empty($paymentAddress['postcode'])) { + $billingAddress['address']['postcodeZip'] = substr($paymentAddress['postcode'], 0, 10); + } + + if (!empty($paymentAddress['zone'])) { + $billingAddress['address']['stateProvince'] = substr($paymentAddress['zone'], 0, 20); + } + + if (!empty($paymentAddress['address_1'])) { + $billingAddress['address']['street'] = substr($paymentAddress['address_1'], 0, 100); + } + + if (!empty($paymentAddress['address_2'])) { + $billingAddress['address']['street2'] = substr($paymentAddress['address_2'], 0, 100); + } + } + else{ + if (isset($this->session->data['payment_address'])) { + $paymentAddress = $this->session->data['payment_address']; + if (!empty($paymentAddress['city'])) { + $billingAddress['address']['city'] = substr($paymentAddress['city'], 0, 100); + } + if (!empty($paymentAddress['company'])) { + $billingAddress['address']['company'] = $paymentAddress['company']; + } + if (!empty($paymentAddress['iso_code_3'])) { + $billingAddress['address']['country'] = $paymentAddress['iso_code_3']; + } + if (!empty($paymentAddress['postcode'])) { + $billingAddress['address']['postcodeZip'] = substr($paymentAddress['postcode'], 0, 10); + } + if (!empty($paymentAddress['zone'])) { + $billingAddress['address']['stateProvince'] = substr($paymentAddress['zone'], 0, 20); + } + if (!empty($paymentAddress['address_1'])) { + $billingAddress['address']['street'] = substr($paymentAddress['address_1'], 0, 100); + } + if (!empty($paymentAddress['address_2'])) { + $billingAddress['address']['street2'] = substr($paymentAddress['address_2'], 0, 100); + } + } elseif (isset($this->session->data['shipping_address'])){ + $paymentAddress = $this->session->data['shipping_address']; + if (!empty($paymentAddress['city'])) { + $billingAddress['address']['city'] = substr($paymentAddress['city'], 0, 100); + } + if (!empty($paymentAddress['company'])) { + $billingAddress['address']['company'] = $paymentAddress['company']; + } + if (!empty($paymentAddress['iso_code_3'])) { + $billingAddress['address']['country'] = $paymentAddress['iso_code_3']; + } + if (!empty($paymentAddress['postcode'])) { + $billingAddress['address']['postcodeZip'] = substr($paymentAddress['postcode'], 0, 10); + } + if (!empty($paymentAddress['zone'])) { + $billingAddress['address']['stateProvince'] = substr($paymentAddress['zone'], 0, 20); + } + if (!empty($paymentAddress['address_1'])) { + $billingAddress['address']['street'] = substr($paymentAddress['address_1'], 0, 100); + } + if (!empty($paymentAddress['address_2'])) { + $billingAddress['address']['street2'] = substr($paymentAddress['address_2'], 0, 100); + } + } + else{ + $order_id = $this->session->data['order_id']; + $query = $this->db->query("SELECT * FROM `oc_order` WHERE `order_id` = $order_id"); + $shippingData = $query->row; + $addressArray = array( + 'address' => array( + 'city' => $shippingData['shipping_city'], + 'country' => $shippingData['shipping_country'], + 'postcodeZip' => $shippingData['shipping_postcode'], + 'stateProvince' => $shippingData['shipping_zone'], + 'street' => $shippingData['shipping_address_1'], + ) + ); + } + } + + return $billingAddress; + } + + /** + * @return array + */ + protected function getShippingAddress(){ + $shippingAddress = []; + if (isset($this->session->data['shipping_address'])) { + $shippingAddressData = $this->session->data['shipping_address']; + + if (!empty($shippingAddressData['city'])) { + $shippingAddress['address']['city'] = substr($shippingAddressData['city'], 0, 100); + } + + if (!empty($shippingAddressData['company'])) { + $shippingAddress['address']['company'] = $shippingAddressData['company']; + } + + if (!empty($shippingAddressData['iso_code_3'])) { + $shippingAddress['address']['country'] = $shippingAddressData['iso_code_3']; + } + + if (!empty($shippingAddressData['postcode'])) { + $shippingAddress['address']['postcodeZip'] = substr($shippingAddressData['postcode'], 0, 10); + } + + if (!empty($shippingAddressData['zone'])) { + $shippingAddress['address']['stateProvince'] = substr($shippingAddressData['zone'], 0, 20); + } + + if (!empty($shippingAddressData['address_1'])) { + $shippingAddress['address']['street'] = substr($shippingAddressData['address_1'], 0, 100); + } + + if (!empty($shippingAddressData['address_2'])) { + $shippingAddress['address']['street2'] = substr($shippingAddressData['address_2'], 0, 100); + } + + if (!empty($shippingAddressData['firstname'])) { + $shippingAddress['contact']['firstName'] = substr($shippingAddressData['firstname'], 0, 50); + } + + if (!empty($shippingAddressData['lastname'])) { + $shippingAddress['contact']['lastName'] = substr($shippingAddressData['lastname'], 0, 50); + } + + if ($this->customer->isLogged()) { + $this->load->model('account/customer'); + $customerModel = $this->model_account_customer->getCustomer($this->customer->getId()); + $shippingAddress['contact']['email'] = $customerModel['email']; + } else { + $order_id = $this->session->data['order_id']; + $query = $this->db->query("SELECT * FROM `oc_order` WHERE `order_id` = $order_id"); + $shippingData = $query->row; + $shippingAddress['contact']['email'] = $shippingData['email']; + } + + } + + return $shippingAddress; + } + + /** + * @return array + */ + protected function getCustomer(){ + if ($this->customer->isLogged()) { + $this->load->model('account/customer'); + $customerModel = $this->model_account_customer->getCustomer($this->customer->getId()); + $customerData['firstName'] = substr($customerModel['firstname'], 0, 50); + $customerData['lastName'] = substr($customerModel['lastname'], 0, 50); + $customerData['email'] = $customerModel['email']; + } else{ + $order_id = $this->session->data['order_id']; + $query = $this->db->query("SELECT * FROM `oc_order` WHERE `order_id` = $order_id"); + $shippingData = $query->row; + $customerData['firstName'] = substr($shippingData['firstname'], 0, 50); + $customerData['lastName'] = substr($shippingData['lastname'], 0, 50); + $customerData['email'] = $shippingData['email']; + } + + return $customerData; + + } + + /** + * Process Hosted Checkout Payment Method + */ + public function processHostedCheckout(){ + setcookie("OCSESSID", "", time() - 1, "/"); + $this->load->language('extension/mastercard/payment/mastercard'); + $this->load->model('extension/mastercard/payment/mastercard'); + $requestIndicator = $this->request->get['resultIndicator']; + if (isset($_COOKIE['mgps_order']) && isset($_COOKIE['mgps_sucesss_indicator'])) { + $mgpsSuccessIndicator = $_COOKIE['mgps_sucesss_indicator']; + $orderId = $_COOKIE['mgps_order']; + $ocessid = $_COOKIE['mgps_OCSESSID']; + $ocOrderId = $_COOKIE['order_id']; + $this->session->data['mgps_order_id'] = $orderId; + $this->session->data['order_id'] = $ocOrderId; + setcookie('OCSESSID', $ocessid, time() + 24 * 3600, '/'); + setcookie('mgps_order', '', time() - 3600, '/'); + setcookie('mgps_sucesss_indicator', '', time() - 3600, '/'); + } + $requestSessionVersion = $this->request->get['sessionVersion']; + try { + if ($mgpsSuccessIndicator !== $requestIndicator) { + throw new \Exception($this->language->get('error_indicator_mismatch')); + } + $retrievedOrder = $this->retrieveOrder($orderId); + if ($retrievedOrder['result'] !== 'SUCCESS') { + throw new \Exception($this->language->get('error_payment_declined')); + } + $txn = $retrievedOrder['transaction'][0]; + $transactionId = isset($txn['authentication']['3ds']['transactionId']) ? $txn['authentication']['3ds']['transactionId'] : $txn['transaction']['id']; + $transactionAmount = $txn['transaction']['amount']; + $transactionCurrency = $txn['transaction']['currency']; + $transactionStatus = $txn['order']['status']; + $transactionOrderID = $txn['order']['id']; + $merchantName = $txn['merchant']; + $merchantId = $txn['transaction']['acquirer']['merchantId']; + $customer_email = $txn['customer']['email']; + $customer_name = $txn['customer']['firstName'] . ' ' . $txn['customer']['lastName']; + $email_status = "Payment" . '' . $transactionStatus ; + $transactionType = ""; + $this->processOrder($retrievedOrder, $txn); + $this->db->query("INSERT INTO ".DB_PREFIX."mgps_order_transaction SET order_id ='".$this->session->data['order_id'] ."', oc_order_id ='".$transactionOrderID ."', transaction_id = '".$transactionId."', type = '".$transactionStatus."', merchant_name = '".$merchantName."', merchant_id = '".$merchantId."' ,status = '".$transactionStatus ."', amount = '".$transactionAmount."', date_added = NOW()"); + if ($this->config->get('config_mail_engine')) { + $this->sendCustomEmail($orderId, $customer_email,$transactionStatus, $customer_name ); + } + $this->cart->clear(); + $this->clearTokenSaveCardSessionData(); + $this->response->redirect($this->url->link('checkout/success', '', true)); + $this->model_extension_mastercard_payment_mastercard->clearCheckoutSession(); + } catch (\Exception $e) { + $this->session->data['error'] = $e->getMessage(); + $this->addOrderHistory($orderId, self::ORDER_FAILED, $e->getMessage()); + $this->response->redirect($this->url->link('checkout/checkout', '', true)); + } + } + + private function sendCustomEmail($orderId,$reciever_address, $subject , $customer_name ) { + $data['order_id'] = $orderId; + $data['receiver_address'] = $reciever_address; + $data['order_status'] =$subject; + $data['customer_name'] =$customer_name; + if ($this->config->get('config_mail_engine')) { + $mail_option = [ + 'parameter' => $this->config->get('config_mail_parameter'), + 'smtp_hostname' => $this->config->get('config_mail_smtp_hostname'), + 'smtp_username' => $this->config->get('config_mail_smtp_username'), + 'smtp_password' => html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'), + 'smtp_port' => $this->config->get('config_mail_smtp_port'), + 'smtp_timeout' => $this->config->get('config_mail_smtp_timeout') + ]; + + $mail = new \Opencart\System\Library\Mail($this->config->get('config_mail_engine'), $mail_option); + $mail->setTo($reciever_address); + $mail->setFrom($this->config->get('config_email')); + $mail->setSender($this->config->get('config_name')); + $mail->setSubject(html_entity_decode("Payment" . ' '. ucwords(strtolower(str_replace('_', ' ', $subject))), ENT_QUOTES, 'UTF-8')); + $mail->setHtml($this->load->view('extension/mastercard/payment/mgps_hosted_authorize_mail', $data)); + $mail->send(); + } + } + + public function callback(){ + $this->load->language('extension/mastercard/payment/mastercard'); + $this->load->model('extension/mastercard/payment/mastercard'); + $requestHeaders = $this->request->server; + $webhookSecret = isset($requestHeaders[self::HEADER_WEBHOOK_SECRET]) ? $requestHeaders[self::HEADER_WEBHOOK_SECRET] : null; + $webhookAttempt = isset($requestHeaders[self::HEADER_WEBHOOK_ATTEMPT]) ? $requestHeaders[self::HEADER_WEBHOOK_ATTEMPT] : null; + $webhookId = isset($requestHeaders[self::HEADER_WEBHOOK_ID]) ? $requestHeaders[self::HEADER_WEBHOOK_ID] : null; + $content = file_get_contents('php://input'); + $content = trim($content); + $parsedData = @json_decode($content, true); + $jsonError = json_last_error(); + if ($jsonError !== JSON_ERROR_NONE) { + $this->model_extension_mastercard_payment_mastercard->log('Could not parse response JSON, error: '. $jsonError, json_encode(['rawContent' => $content])); + header('HTTP/1.1 500 ' . $jsonError); + exit; + } + try { + if ($requestHeaders['REQUEST_METHOD'] != 'POST') { + throw new \Exception($this->language->get('error_request_method')); + } + + if (!$this->isSecure($requestHeaders)) { + throw new \Exception($this->language->get('error_insecure_connection')); + } + + if ($this->model_extension_mastercard_payment_mastercard->getWebhookSecret() !== $webhookSecret) { + throw new \Exception($this->language->get('error_secret_mismatch')); + } + + if ($this->model_extension_mastercard_payment_mastercard->getMerchantId() !== $parsedData['merchant']) { + throw new \Exception($this->language->get('error_merchant_mismatch')); + } + + if (!isset($parsedData['order']) || !isset($parsedData['order']['id'])) { + throw new \Exception($this->language->get('error_invalid_order')); + } + + if (!isset($parsedData['transaction']) || !isset($parsedData['transaction']['id'])) { + throw new \Exception($this->language->get('error_invalid_transaction')); + } + + } catch (\Exception $e) { + $errorMessage = sprintf("WebHook Exception: '%s'", $e->getMessage()); + $this->model_extension_mastercard_payment_mastercard->log($errorMessage); + header('HTTP/1.1 500 ' . $e->getMessage()); + exit; + } + + $webhookResponse = json_encode([ + 'notification_id' => $webhookId, + 'notification_attempt' => $webhookAttempt, + 'order.id' => $parsedData['order']['id'], + 'transaction.id' => $parsedData['transaction']['id'], + 'transaction.type' => $parsedData['transaction']['type'], + 'response.gatewayCode' => $parsedData['response']['gatewayCode'] + ]); + $this->model_extension_mastercard_payment_mastercard->log("Webhook Response: " . $webhookResponse); + try { + $response = $this->retrieveTransaction($parsedData['order']['id'], $parsedData['transaction']['id']); + + if (isset($response['result']) && $response['result'] == 'ERROR') { + $error = $this->language->get('error_payment_declined'); + if (isset($response['error']['explanation'])) { + $error = sprintf('%s: %s', $response['error']['cause'], $response['error']['explanation']); + } + throw new \Exception($error); + } + } catch (\Exception $e) { + $this->model_extension_mastercard_payment_mastercard->log('Gateway Error: ' . $e->getMessage()); + header('HTTP/1.1 500 ' . 'Gateway Error'); + exit; + } + + if (!$this->isApproved($response)) { + $this->model_extension_mastercard_payment_mastercard->log(sprintf('Unexpected gateway code "%s"', $response['response']['gatewayCode'])); + exit; + } + + $mpgsOrderId = $response['order']['id']; + $prefix = trim($this->config->get('payment_mastercard_order_id_prefix')); + if ($prefix) { + $mpgsOrderId = substr($mpgsOrderId, strlen($prefix)); + } + + $this->load->model('checkout/order'); + $order = $this->model_checkout_order->getOrder($mpgsOrderId); + + if (isset($response['risk']['response'])) { + $risk = $response['risk']['response']; + switch ($risk['gatewayCode']) { + case 'REJECTED': + if ($order['order_status_id'] != $this->config->get('payment_mastercard_declined_status_id')) { + $message = sprintf($this->language->get('text_risk_review_rejected'), $risk['gatewayCode'], $response['transaction']['id'], $response['transaction']['type']); + } + break; + case 'REVIEW_REQUIRED': + if (!empty($risk['review']['decision']) && in_array($risk['review']['decision'], ['NOT_REQUIRED', 'ACCEPTED'])) { + $this->setOrderHistoryTransactionType($order, $response); + } else { + $message = sprintf($this->language->get('text_risk_review_required'), $risk['gatewayCode'], $response['transaction']['id'], $response['transaction']['type']); + } + break; + default: + $this->setOrderHistoryTransactionType($order, $response); + break; + } + + $this->model_extension_mastercard_payment_mastercard->log('webhook completed (200 OK)'); + exit; + } + } + + /** + * @param $order + * @param $response + */ + protected function setOrderHistoryTransactionType($order, $response){ + switch ($response['transaction']['type']) { + case 'AUTHORIZATION': + case 'AUTHORIZATION_UPDATE': + if ($order['order_status_id'] != $this->config->get('payment_mastercard_pending_status_id')) { + $this->model_extension_mastercard_payment_mastercard->log(sprintf($this->language->get('text_not_allow_authorization'), $order['order_status_id'])); + } else { + $message = sprintf($this->language->get('text_webhook_authorize_capture'), $response['transaction']['type'], $response['result'], $response['transaction']['id'], $response['transaction']['authorizationCode']); + $orderStatusId = $this->config->get('payment_mastercard_approved_status_id'); + } + break; + + case 'PAYMENT': + case 'CAPTURE': + if ($order['order_status_id'] != $this->config->get('payment_mastercard_approved_status_id') && $order['order_status_id'] != $this->config->get('payment_mastercard_pending_status_id')) { + $this->model_extension_mastercard_payment_mastercard->log(sprintf($this->language->get('text_not_allow_capture'), $order['order_status'])); + } else { + $message = sprintf($this->language->get('text_webhook_authorize_capture'), $response['transaction']['type'], $response['result'], $response['transaction']['id'], $response['transaction']['authorizationCode']); + $orderStatusId = self::ORDER_CAPTURED; + } + break; + + case 'REFUND_REQUEST': + case 'REFUND': + if ($order['order_status_id'] != self::ORDER_CAPTURED) { + $this->model_extension_mastercard_payment_mastercard->log(sprintf($this->language->get('text_not_allow_refund'), $order['order_status'])); + } else { + $message = sprintf($this->language->get('text_webhook_refund_void'), $response['transaction']['type'], $response['result'], $response['transaction']['id']); + $orderStatusId = self::ORDER_REFUNDED; + } + break; + + case 'VOID_AUTHORIZATION': + case 'VOID_CAPTURE': + case 'VOID_PAYMENT': + case 'VOID_REFUND': + if ($order['order_status_id'] != $this->config->get('payment_mastercard_approved_status_id')) { + $this->model_extension_mastercard_payment_mastercard->log(sprintf($this->language->get('text_not_allow_void'), $order['order_status'])); + } else { + $message = sprintf($this->language->get('text_webhook_refund_void'), $response['transaction']['type'], $response['result'], $response['transaction']['id']); + $orderStatusId = self::ORDER_VOIDED; + } + break; + + case 'CANCELLED': + if ($order['order_status_id'] != self::ORDER_CANCELLED) { + $message = sprintf($this->language->get('text_webhook_refund_void'), $response['transaction']['type'], $response['result'], $response['transaction']['id']); + $orderStatusId = self::ORDER_CANCELLED; + } + break; + + default: + if ($order['order_status_id'] != self::ORDER_CANCELLED) { + $orderStatusId = self::ORDER_CANCELLED; + $message = sprintf($this->language->get('text_webhook_unknown'), $response['transaction']['type']); + } + break; + } + } + + /** + * @param $response + * @return bool + */ + public function isApproved($response){ + $gatewayCode = $response['response']['gatewayCode']; + + if (!in_array($gatewayCode, array('APPROVED', 'APPROVED_AUTO'))) { + return false; + } + + return true; + } + + /** + * @param $headers + * @return bool + */ + protected function isSecure($headers){ + $https = $headers['HTTPS']; + $serverPort = $headers['SERVER_PORT']; + return (!empty($https) && $https === "1") || $serverPort === "443"; + } + + /** + * @param $customerId + * @return array + */ + public function getTokenizeCards($customerId){ + $this->load->language('extension/mastercard/payment/mastercard'); + $this->load->model('extension/mastercard/payment/mastercard'); + + $customerTokens = $this->model_extension_mastercard_payment_mastercard->getCustomerTokens($customerId); + $uri = $this->model_extension_mastercard_payment_mastercard->getApiUri() . '/token/'; + + $cards = []; + + foreach ($customerTokens as $token) { + $response = $this->model_extension_mastercard_payment_mastercard->apiRequest('GET', $uri . urlencode($token['token'])); + + if ($response['result'] !== 'SUCCESS' || $response['status'] !== 'VALID') { + $this->db->query("DELETE FROM `" . DB_PREFIX . "mpgs_hpf_token` WHERE hpf_token_id='" . (int)$token['hpf_token_id'] . "'"); + } else { + $expiry = []; + $cardNumber = substr($response['sourceOfFunds']['provided']['card']['number'], - 4); + preg_match( '/^(\d{2})(\d{2})$/', $response['sourceOfFunds']['provided']['card']['expiry'], $expiry); + + $cards[] = [ + 'id' => (int)$token['hpf_token_id'], + 'type' => sprintf($this->language->get('text_card_type'), ucfirst(strtolower($response['sourceOfFunds']['provided']['card']['brand']))), + 'label' => sprintf($this->language->get('text_card_label'), $cardNumber), + 'expiry' => sprintf($this->language->get('text_card_expiry'), $expiry[1] . '/' . $expiry[2]) + ]; + } + } + + return $cards; + } + + protected function getTokenById($tokenId) { + $tokensResult = $this->db->query("SELECT token FROM `" . DB_PREFIX . "mpgs_hpf_token` WHERE hpf_token_id='" . (int)$tokenId . "'"); + return $tokensResult->row; + } + + /** + * Up session from get parameter + * + * Known issue with MasterCard API + */ + private function restartOCSession() { + if (empty($this->request->get['OCSESSID'])) { + return; + } + $this->session->start($this->request->get['OCSESSID']); + + setcookie( + $this->config->get('session_name'), + $this->session->getId(), + ini_get('session.cookie_lifetime'), + ini_get('session.cookie_path'), + ini_get('session.cookie_domain') + ); + + (new ControllerStartupStartup($this->registry))->index(); + } + + /** + * Clear values of Hosted Payment Form + * fields from session + */ + protected function clearTokenSaveCardSessionData(){ + unset($this->session->data['save_card']); + unset($this->session->data['token_id']); + unset($this->session->data['source_of_funds']); + } + + + /** + * Cancel callback + */ + public function cancelCallback(){ + $ocessid = $_COOKIE['mgps_OCSESSID']; + setcookie('OCSESSID', $ocessid, time() + 24 * 3600, '/'); + } + + /** + * Cancel callback + */ + public function errorCallback(){ + $this->response->redirect($this->url->link('checkout/cart', '', true)); + } + + /** + * @param $retrievedOrder + * @param $txn + * @throws Exception + */ + protected function processOrder($retrievedOrder, $txn){ + if ($retrievedOrder['status'] === 'CAPTURED') { + $message = sprintf($this->language->get('text_payment_captured'), $txn['transaction']['id'], isset($txn['transaction']['authorizationCode']) ? $txn['transaction']['authorizationCode'] : ''); + $orderStatusId = self::ORDER_CAPTURED; + } elseif ($retrievedOrder['status'] === 'AUTHORIZED') { + $message = sprintf($this->language->get('text_payment_authorized'), $txn['transaction']['id'], isset($txn['transaction']['authorizationCode']) ? $txn['transaction']['authorizationCode'] : ''); + $orderStatusId = $this->config->get('payment_mastercard_approved_status_id'); + } else { + throw new Exception($this->language->get('error_transaction_unsuccessful')); + } + + + $this->addOrderHistory($this->session->data['order_id'], $orderStatusId, $message); + } + + /** + * @param $orderId + * @param $orderStatusId + * @param $message + */ + protected function addOrderHistory($orderId, $orderStatusId, $message){ + $this->load->model('checkout/order'); + $this->model_checkout_order->addHistory($orderId, $orderStatusId , $message); + } + + /** + * @param $orderId + * @return mixed + */ + protected function retrieveOrder($orderId){ + + $this->load->model('extension/mastercard/payment/mastercard'); + + $uri = $this->model_extension_mastercard_payment_mastercard->getApiUri() . '/order/' . $orderId; + + $response = $this->model_extension_mastercard_payment_mastercard->apiRequest('GET', $uri); + return $response; + } + + /** + * @param $orderId + * @param $txnId + * @return mixed + */ + protected function retrieveTransaction($orderId, $txnId){ + $this->load->model('extension/mastercard/payment/mastercard'); + $uri = $this->model_extension_mastercard_payment_mastercard->getApiUri() . '/order/' . $orderId . '/transaction/' . $txnId; + $response = $this->model_extension_mastercard_payment_mastercard->apiRequest('GET', $uri); + return $response; + } + + /** + * @return array + */ + public function configureHostedCheckout(){ + $this->load->helper('utf8'); + $this->load->model('extension/mastercard/payment/mastercard'); + $params = [ + 'merchant' => $this->model_extension_mastercard_payment_mastercard->getMerchantId(), + 'session' => [ + 'id' => $this->session->data['mpgs_hosted_checkout']['session']['id'], + 'version' => $this->session->data['mpgs_hosted_checkout']['session']['version'] + ] + ]; + return $params; + } + + /** + * @param $orderId + * @return string + */ + protected function getOrderPrefix($orderId){ + $prefix = trim($this->config->get('payment_mastercard_order_id_prefix')); + if (!empty($prefix)) { + $orderId = $prefix . $orderId; + } + return $orderId; + } + + public function getWebhookUrl() { + return $this->url->link('extension/mastercard/payment/mastercard.webhook', '', 'SSL'); + } +} diff --git a/catalog/language/en-gb/extension/payment/mpgs_hosted_checkout.php b/src/catalog/language/en-gb/payment/mastercard.php old mode 100644 new mode 100755 similarity index 97% rename from catalog/language/en-gb/extension/payment/mpgs_hosted_checkout.php rename to src/catalog/language/en-gb/payment/mastercard.php index cdbdfca..77c0347 --- a/catalog/language/en-gb/extension/payment/mpgs_hosted_checkout.php +++ b/src/catalog/language/en-gb/payment/mastercard.php @@ -1,63 +1,64 @@ - 'mpgs_hosted_checkout', - 'title' => $this->config->get('payment_mpgs_hosted_checkout_title'), - 'terms' => '', - 'sort_order' => $this->config->get('payment_mpgs_hosted_checkout_sort_order') - ]; + public function getMethods(array $address = []): array { + + // loading example payment language + $this->load->language('extension/mastercard/payment/mastercard'); + + if ($this->cart->hasSubscription()) { + $status = false; + } elseif (!$this->cart->hasShipping()) { + $status = false; + } elseif (!$this->config->get('config_checkout_payment_address')) { + $status = true; + } elseif (!$this->config->get('payment_example_payment_geo_zone_id')) { + $status = true; + } else { + // getting payment data using zeo zone + $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "zone_to_geo_zone` WHERE `geo_zone_id` = '" . (int)$this->config->get('payment_example_payment_geo_zone_id') . "' AND `country_id` = '" . (int)$address['country_id'] . "' AND (`zone_id` = '" . (int)$address['zone_id'] . "' OR `zone_id` = '0')"); + + // if the rows found the status set to True + if ($query->num_rows) { + $status = true; + } else { + $status = false; + } + } + + $method_data = []; + + if ($status) { + $option_data['mastercard'] = [ + 'code' => 'mastercard.mastercard', + 'name' => $this->config->get('payment_mastercard_title') ?: 'Pay With Mastercard Payment Gateway Services', + ]; + + $method_data = [ + 'code' => 'mastercard', + 'name' => $this->config->get('payment_mastercard_title') ?: 'Pay with Pay With Mastercard Payment Gateway Services', + 'option' => $option_data, + 'sort_order' => $this->config->get('payment_mastercard_sort_order') + ]; + } return $method_data; } /** * @return mixed - */ + */ + public function getIntegrationModel() { - return $this->config->get('payment_mpgs_hosted_checkout_integration_model'); + return $this->config->get('payment_mastercard_integration_model'); } /** @@ -58,7 +93,11 @@ public function getIntegrationModel() */ public function getGatewayUri() { - $apiGateway = $this->config->get('payment_mpgs_hosted_checkout_api_gateway'); + + + $gatewayUrl = ''; // Initialize $gatewayUrl before the conditional statements + + $apiGateway = $this->config->get('payment_mastercard_api_gateway'); if ($apiGateway === self::API_AMERICA) { $gatewayUrl = 'https://na-gateway.mastercard.com/'; } elseif ($apiGateway === self::API_EUROPE) { @@ -68,7 +107,7 @@ public function getGatewayUri() } elseif ($apiGateway === self::API_MTF) { $gatewayUrl = 'https://mtf.gateway.mastercard.com/'; } elseif ($apiGateway === self::API_OTHER) { - $url = $this->config->get('payment_mpgs_hosted_checkout_api_gateway_other'); + $url = $this->config->get('payment_mastercard_api_gateway_other'); if (!empty($url)) { if (substr($url, -1) !== '/') { $url = $url . '/'; @@ -77,14 +116,17 @@ public function getGatewayUri() $gatewayUrl = $url; } + return $gatewayUrl; } + /** * @return string */ public function getApiUri() { + return $this->getGatewayUri() . 'api/rest/version/' . $this->getApiVersion() . '/merchant/' . $this->getMerchantId(); } @@ -94,27 +136,30 @@ public function getApiUri() public function getMerchantId() { if ($this->isTestModeEnabled()) { - return $this->config->get('payment_mpgs_hosted_checkout_test_merchant_id'); + + return $this->config->get('payment_mastercard_test_merchant_id'); } else { - return $this->config->get('payment_mpgs_hosted_checkout_live_merchant_id'); + return $this->config->get('payment_mastercard_live_merchant_id'); } } /** * @return mixed - */ + **/ + public function getApiPassword() { if ($this->isTestModeEnabled()) { - return $this->config->get('payment_mpgs_hosted_checkout_test_api_password'); + return $this->config->get('payment_mastercard_test_api_password'); } else { - return $this->config->get('payment_mpgs_hosted_checkout_live_api_password'); + return $this->config->get('payment_mastercard_live_api_password'); } } /** - * @return mixed - */ + * @return mixed + */ + public function getWebhookSecret() { if ($this->isTestModeEnabled()) { @@ -137,7 +182,7 @@ public function getApiVersion() */ public function isTestModeEnabled() { - return $this->config->get('payment_mpgs_hosted_checkout_test'); + return $this->config->get('payment_mastercard_test'); } /** @@ -164,7 +209,7 @@ public function threeDSApiVersion() */ public function getPaymentAction() { - $paymentAction = $this->config->get('payment_mpgs_hosted_checkout_initial_transaction'); + $paymentAction = $this->config->get('payment_mastercard_initial_transaction'); if ($paymentAction === 'pay') { return 'PURCHASE'; } else { @@ -177,7 +222,7 @@ public function getPaymentAction() */ public function buildPartnerSolutionId() { - return 'OC_' . VERSION . '_ONTAP_' . self::MODULE_VERSION; + return 'OC_' . VERSION . '_MASTERCARD_' . self::MODULE_VERSION; } /** @@ -191,11 +236,16 @@ public function apiRequest($method, $uri, $data = []) $userId = 'merchant.' . $this->getMerchantId(); $requestLog = 'Send Request: "' . $method . ' ' . $uri . '" '; + + if (!empty($data)) { $requestLog .= json_encode(['request' => $data]); + } $this->log($requestLog); + + $curl = curl_init(); switch ($method){ case 'POST': @@ -217,11 +267,9 @@ public function apiRequest($method, $uri, $data = []) curl_setopt($curl, CURLOPT_URL, $uri); curl_setopt($curl, CURLOPT_USERPWD, $userId . ':' . $this->getApiPassword()); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); - $output = curl_exec($curl); $httpResponseCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); curl_close($curl); - $responseText = 'Receive Response: "' . $httpResponseCode . '" for the request: "' . $method . ' ' . $uri . '" '; $responseText .= json_encode(['response' => json_decode($output)]); $this->log($responseText); @@ -236,6 +284,8 @@ public function clearCheckoutSession() { unset($this->session->data['mpgs_hosted_checkout']); unset($this->session->data['mpgs_hosted_session']); + unset($this->session->data['mpgs_hosted_checkout']['successIndicator']); + } /** @@ -248,14 +298,6 @@ public function getCustomerTokens($customerId) return $tokensResult->rows; } - /** - * @return mixed - */ - public function isSavedCardsEnabled() - { - return $this->config->get('payment_mpgs_hosted_checkout_saved_cards'); - } - /** * @param $message */ @@ -266,4 +308,10 @@ public function log($message) $this->debugLog->write($message); } } -} + + public function getExtensions($type) { + $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "extension WHERE `type` = '" . $this->db->escape($type) . "'"); + return $query->rows; + } + +} \ No newline at end of file diff --git a/src/catalog/view/javascript/mgps.js b/src/catalog/view/javascript/mgps.js new file mode 100755 index 0000000..c4e5a8b --- /dev/null +++ b/src/catalog/view/javascript/mgps.js @@ -0,0 +1,36 @@ +var scriptTag = document.querySelector('script[src*="mgps.js"]'); +var jsonData = scriptTag.getAttribute('data-sessionid'); + +var sessionKeysToClear = []; +function cleanupBrowserSession() { + var sessionKey, i; + for (i = 0; i < sessionKeysToClear.length; i++) { + sessionKey = sessionKeysToClear[i]; + if (sessionStorage.key(sessionKey)) { + sessionStorage.removeItem(sessionKey); + } + } +} + +function errorCallback(error) { + let err = JSON.stringify(error); + console.error(err); + alert('Error: ' + JSON.stringify(error)); +} + +function loadScript(src, onloadCallback) { + var script = document.createElement('script'); + script.src = src; + script.onload = function() { + checkoutLoaded = true; + onloadCallback(); + }; + document.head.appendChild(script); +} + +function clearEmbedTarget() { + + var embedTarget = document.getElementById('embed-target'); + embedTarget.innerHTML = ''; +} + diff --git a/src/catalog/view/stylesheet/embedded-payment-form.css b/src/catalog/view/stylesheet/embedded-payment-form.css new file mode 100755 index 0000000..1825dfc --- /dev/null +++ b/src/catalog/view/stylesheet/embedded-payment-form.css @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2013-2021 Mastercard + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@media only screen and (min-width: 500px) { + .simplify-embedded-payment-title { + text-align: left; + } + + .simplify-embedded-iframe-wrapper { + margin-left: -15px; + } +} + +@media only screen and (max-width: 499px) { + .simplify-embedded-payment-title { + text-align: center; + } +} + +.simplify-embedded-iframe-wrapper iframe { + border: none; + overflow: hidden; + min-height: 450px; +} + +.simplify-embedded-form { + display: none; +} diff --git a/src/catalog/view/template/payment/mgps_hosted_authorize_mail.twig b/src/catalog/view/template/payment/mgps_hosted_authorize_mail.twig new file mode 100755 index 0000000..26008b1 --- /dev/null +++ b/src/catalog/view/template/payment/mgps_hosted_authorize_mail.twig @@ -0,0 +1,43 @@ + + + + +Payment {{ order_status }} + + +
{{ store_name }} +

{{ text_greeting }}

+ {% if customer_id %} +

{{ text_link }}

+

{{ link }}

+ {% endif %} + {% if download %} +

{{ text_download }}

+

{{ download }}

+ {% endif %} +

Dear {{customer_name}} ,

+ +

Thank you for shopping

+ +

Your payment has been sucessfully {{ order_status|title }}

+ + + + + + + + + + + + +
Order details
+ Order ID: {{ order_id }}
+
+ Email : {{ receiver_address }}
+ Order Status: {{ order_status|title }}
+

Please Don't reply to this email

+
+ + diff --git a/src/catalog/view/template/payment/mgps_hosted_checkout.twig b/src/catalog/view/template/payment/mgps_hosted_checkout.twig new file mode 100755 index 0000000..c134915 --- /dev/null +++ b/src/catalog/view/template/payment/mgps_hosted_checkout.twig @@ -0,0 +1,121 @@ +{# + Copyright (c) 2023 Mastercard + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + #} + + + + +
+ + + + +
+
+ {% if checkout_interaction == 'modal' %} + + + {% else %} + + + {% endif %} +
+
+ + + + + + diff --git a/src/install.json b/src/install.json new file mode 100755 index 0000000..02d9aa8 --- /dev/null +++ b/src/install.json @@ -0,0 +1,7 @@ +{ + "name": "Mastercard Payment Extension", + "version": "1.3.0", + "author": "Mastercard Payment Gateway Services Pvt Ltd.", + "link": "https://www.mastercard.com", + "instruction": "" + } \ No newline at end of file