diff --git a/CHANGELOG.md b/CHANGELOG.md
index 15e666e..485f03c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,18 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+***
+
+## 3.9.0
+Release date: March, 19th 2021
+
+### Added
++ PLGOPNS-374: Add generic gateway
+
+### Changed
++ PLGOPNS-384: Upgrade PHP-SDK to 5.1.0
+
+***
## 3.8.0
Release date: February, 11th 2021
@@ -11,6 +23,7 @@ Release date: February, 11th 2021
### Fixed
+ PLGOPNS-382: Fix bug to get the proper settings in a multi store OpenCart site
+***
## 3.7.0
Release date: February, 9th 2021
@@ -18,6 +31,7 @@ Release date: February, 9th 2021
### Fixed
+ PLGOPNS-381: Fix percentage coupon applied before taxes
+***
## 3.6.0
Release date: February, 8th 2021
@@ -35,6 +49,7 @@ Release date: February, 8th 2021
+ PLGOPNS-375: Remove unneded code related with the shopping cart of the transaction
+ PLGOPNS-378: Fix bug for fixed coupons applied before taxes
+***
## 3.5.0
Release date: December, 18th 2020
@@ -54,6 +69,7 @@ Release date: December, 18th 2020
+ PLGOPNS-366: Fix bug, gift voucher items should pass to the transaction as negative amounts
+ PLGOPNS-371: Fix filter per customer group; when customer is not logged
+***
## 3.4.0
Release date: November, 19th 2020
@@ -67,6 +83,8 @@ Release date: November, 19th 2020
### Changed
+ PLGOPNS-257: Include in support tab the contact details of international offices
+***
+
## 3.3.0
Release date: October, 13th 2020
@@ -78,6 +96,8 @@ Release date: October, 13th 2020
+ PLGOPNS-303: Improve iDEAL issuer selection list
+ PLGOPNS-245: Improve the alignment of payment methods logos in checkout page
+***
+
## 3.2.0
Release date: September, 17th 2020
@@ -88,6 +108,8 @@ Release date: September, 17th 2020
+ PLGOPNS-295: Add getEventByCode function, which does not exist prior to OC 3.0.2
+ PLGOPNS-284: Fix placeholder for 'lifetime payment link' field
+***
+
## 3.1.0
Release date: September, 14th 2020
@@ -97,6 +119,8 @@ Release date: September, 14th 2020
+ PLGOPNS-253: Validate the field lifetime of payment link to avoid negative number
+ PLGOPNS-252: Improve description for each payment method on backoffice
+***
+
## 3.0.0
Release date: September, 7th 2020
@@ -118,7 +142,6 @@ Release date: September, 7th 2020
+ Add support to update order status as cancelled or expired from the admin
+ Add support for payment method in3, CBC
-
### Fixed
+ PLGOPNS-226: Tax issue
+ PLGOPNS-212: Fix PHP DocBlock declaration and correct @author property
@@ -134,7 +157,6 @@ Release date: September, 7th 2020
+ Fix support for taxes
+ Fix support for coupons
-
### Removed
+ PLGOPNS-228: Remove payment methods BABYGIFTCARD, EROTIEKBON.
+ PLGOPNS-225: Reorder the directories to put MultiSafepay.combined.php in the OpenCart library folder
@@ -142,6 +164,7 @@ Release date: September, 7th 2020
+ PLGOPNS-174: Remove unsupported giftcards
+ Remove VqMod dependency
+***
## 2.3.0
Release date: April 2nd, 2020
@@ -202,6 +225,8 @@ Release date: June 15th, 2018
+ PLGOPNS-74: MultiStore is now correctly supported
+ PLGOPNS-75: Configuration form is now applied for geozone and min/max amount
+***
+
## 2.1.0
Release date: November 13th, 2017
### Improvements
diff --git a/composer.json b/composer.json
index cc5d997..ee7b3eb 100755
--- a/composer.json
+++ b/composer.json
@@ -9,7 +9,7 @@
"php-http/guzzle6-adapter": "^2.0",
"guzzlehttp/psr7": "^1.6",
"http-interop/http-factory-guzzle": "^1.0",
- "multisafepay/php-sdk": "^4.0"
+ "multisafepay/php-sdk": "^5.0"
},
"require-dev": {
"phpunit/phpunit" : "^7.5",
diff --git a/phpcs.xml b/phpcs.xml
index 8229251..54f506c 100644
--- a/phpcs.xml
+++ b/phpcs.xml
@@ -68,7 +68,7 @@
*/src/system/library/multisafepay.php
-
+
diff --git a/src/admin/controller/extension/payment/multisafepay.php b/src/admin/controller/extension/payment/multisafepay.php
index 1993b82..cf57dc6 100644
--- a/src/admin/controller/extension/payment/multisafepay.php
+++ b/src/admin/controller/extension/payment/multisafepay.php
@@ -175,7 +175,6 @@ public function index() {
$fields = $this->getFields();
$data['payment_methods_fields_values'] = $this->getPaymentMethodsFieldsValues($data['store_id']);
-
foreach ($fields as $field) {
if (isset($this->request->post[$field])) {
$data[$field] = $this->request->post[$field];
@@ -187,6 +186,9 @@ public function index() {
}
}
+ // Generic
+ $data['payment_generic_fields_values'] = $this->getPaymentGenericFieldsValues($data['store_id']);
+
$data['header'] = $this->load->controller('common/header');
$data['column_left']= $this->load->controller('common/column_left');
$data['footer'] = $this->load->controller('common/footer');
@@ -194,6 +196,82 @@ public function index() {
$this->response->setOutput($this->load->view($this->route . $this->view_extension_file, $data));
}
+
+ /**
+ * Define the common fields for each payment method
+ *
+ * @return array
+ *
+ */
+ private function getPaymentGenericFields() {
+ return array(
+ 'name',
+ 'code',
+ 'image',
+ 'require_shopping_cart'
+ );
+ }
+
+ /**
+ * Return the values of fields for each generic methods keys
+ *
+ * @param int $store_id
+ * @return array
+ *
+ */
+ private function getPaymentGenericFieldsValues($store_id = 0) {
+ $this->registry->set('multisafepay', new Multisafepay($this->registry));
+ $generic_gateways = $this->multisafepay->getGatewayByType('generic');
+ $fields = array();
+ foreach($generic_gateways as $gateway) {
+ $fields = $this->extractGenericFieldsByGateway($gateway, $fields, $store_id);
+ }
+ return $fields;
+ }
+
+ /**
+ * Extract the values of fields for each generic methods keys for each gateway
+ *
+ * @param string $gateway
+ * @param array $fields
+ * @param int $store_id
+ * @return array
+ *
+ */
+ // phpcs:ignore ObjectCalisthenics.Metrics.MaxNestingLevel
+ private function extractGenericFieldsByGateway($gateway, $fields, $store_id) {
+ $this->load->model('tool/image');
+ $payment_fields = $this->getPaymentGenericFields();
+ foreach ($payment_fields as $payment_field) {
+ if ($payment_field !== 'image' && isset($this->request->post[$this->key_prefix . 'multisafepay_'.$gateway['code'].'_'.$payment_field])) {
+ $fields[$gateway['code']][$payment_field] = $this->request->post[$this->key_prefix . 'multisafepay_'.$gateway['code'].'_'.$payment_field];
+ continue;
+ }
+ if ($payment_field !== 'image' && !isset($this->request->post[$this->key_prefix . 'multisafepay_'.$gateway['code'].'_'.$payment_field])) {
+ $fields[$gateway['code']][$payment_field] = $this->{$this->model_call}->getSettingValue($this->key_prefix . 'multisafepay_'.$gateway['code'].'_'.$payment_field, $store_id);
+ continue;
+ }
+ if ($payment_field === 'image' && isset($this->request->post[$this->key_prefix . 'multisafepay_'.$gateway['code'].'_'.$payment_field])) {
+ $fields[$gateway['code']][$payment_field] = $this->request->post[$this->key_prefix . 'multisafepay_'.$gateway['code'].'_'.$payment_field];
+ $fields[$gateway['code']]['thumb'] = $this->model_tool_image->resize($this->request->post[$this->key_prefix . 'multisafepay_'.$gateway['code'].'_'.$payment_field], 100, 100);
+ continue;
+ }
+ if ($payment_field === 'image' && !isset($this->request->post[$this->key_prefix . 'multisafepay_'.$gateway['code'].'_'.$payment_field])) {
+ $fields[$gateway['code']][$payment_field] = $this->{$this->model_call}->getSettingValue($this->key_prefix . 'multisafepay_'.$gateway['code'].'_'.$payment_field, $store_id);
+ $image = $this->{$this->model_call}->getSettingValue($this->key_prefix . 'multisafepay_'.$gateway['code'].'_'.$payment_field, $store_id);
+ if($image) {
+ $fields[$gateway['code']]['thumb'] = $this->model_tool_image->resize($image, 100, 100);
+ }
+ if(!$image) {
+ $fields[$gateway['code']]['thumb'] = $this->model_tool_image->resize('no_image.png', 100, 100);
+ }
+ continue;
+ }
+ }
+ return $fields;
+ }
+
+
/**
* Return error message is PHP Version is not supported by the extension
*
@@ -530,29 +608,6 @@ protected function validate() {
$this->error['api_key'] = $this->language->get('error_empty_api_key');
}
- $this->registry->set('multisafepay', new Multisafepay($this->registry));
- $gateways = $this->multisafepay->getGateways();
- $enviroment = (empty($this->request->post[$this->key_prefix . 'multisafepay_environment'])) ? true : false;
- $enviroment_key = (empty($this->request->post[$this->key_prefix . 'multisafepay_environment'])) ? '' : 'sandbox_';
- $api_key = $this->request->post[$this->key_prefix . 'multisafepay_' . $enviroment_key . 'api_key'];
- $available_gateways = $this->multisafepay->getAvailableGateways($enviroment, $api_key);
-
- if(!$available_gateways) {
- $this->error[$enviroment_key . 'api_key'] = $this->language->get('error_invalid_api_key');
- $this->error['warning'] = $this->language->get('error_check_form');
- return !$this->error;
- }
-
- foreach($gateways as $gateway) {
- if ($this->request->post[$this->key_prefix . 'multisafepay_'.$gateway['code'].'_status'] && $this->isGatewayAvailable($gateway, $available_gateways) !== null) {
- $this->error['gateway'][$gateway['code']] = $this->isGatewayAvailable($gateway, $available_gateways);
- }
- }
-
- if(!empty($this->error['gateway'])) {
- $this->error['warning'] = $this->language->get('error_gateways_not_available');
- }
-
if (!isset($this->request->post[$this->key_prefix . 'multisafepay_days_active']) || $this->request->post[$this->key_prefix . 'multisafepay_days_active'] < 1) {
$this->error['days_active'] = $this->language->get('error_days_active');
}
@@ -757,16 +812,14 @@ public function refundOrder() {
$this->registry->set('multisafepay', new Multisafepay($this->registry));
$msp_order = $this->multisafepay->getAdminOrderObject($this->request->get['order_id']);
+ $order_info = $this->multisafepay->getAdminOrderInfo($this->request->get['order_id']);
$data['status'] = $msp_order->getStatus();
$refund_request = $this->multisafepay->createRefundRequestObject($msp_order);
$refund_request->addMoney($msp_order->getMoney());
$description = sprintf($this->language->get('text_description_refunded'), $this->request->get['order_id'], date($this->language->get('datetime_format')));
$refund_request->addDescriptionText($description);
- $payment_details = $msp_order->getPaymentDetails();
- $gateway_id = $payment_details->getType();
- $gateways_with_shopping_cart = array('AFTERPAY', 'KLARNA', 'EINVOICE', 'PAYAFTER', 'IN3');
- if(in_array($gateway_id, $gateways_with_shopping_cart)) {
+ if($this->refundWithShoppingCart($order_info, $msp_order)) {
$msp_shopping_cart = $msp_order->getShoppingCart();
$msp_shopping_cart_data = $msp_shopping_cart->getData();
foreach ($msp_shopping_cart_data['items'] as $msp_cart_item) {
@@ -793,6 +846,26 @@ public function refundOrder() {
$this->response->addHeader('Content-Type: application/json');
$this->response->setOutput(json_encode($json));
+ }
+
+ /**
+ * Check if ShoppingCart is required to process a refund
+ *
+ * @param array $order_info
+ * @param \MultiSafepay\Api\Transactions\TransactionResponse $msp_order
+ */
+ private function refundWithShoppingCart($order_info, $msp_order) {
+
+ if($order_info['payment_code'] === 'multisafepay/generic' && $this->{$this->model_call}->getSettingValue($this->key_prefix . 'multisafepay_generic_require_shopping_cart', $order_info['store_id'])) {
+ return true;
+ }
+
+ if($msp_order->requiresShoppingCart()) {
+ return true;
+ }
+
+ return false;
+
}
/**
diff --git a/src/admin/controller/payment/multisafepay.php b/src/admin/controller/payment/multisafepay.php
index 1993b82..cf57dc6 100644
--- a/src/admin/controller/payment/multisafepay.php
+++ b/src/admin/controller/payment/multisafepay.php
@@ -175,7 +175,6 @@ public function index() {
$fields = $this->getFields();
$data['payment_methods_fields_values'] = $this->getPaymentMethodsFieldsValues($data['store_id']);
-
foreach ($fields as $field) {
if (isset($this->request->post[$field])) {
$data[$field] = $this->request->post[$field];
@@ -187,6 +186,9 @@ public function index() {
}
}
+ // Generic
+ $data['payment_generic_fields_values'] = $this->getPaymentGenericFieldsValues($data['store_id']);
+
$data['header'] = $this->load->controller('common/header');
$data['column_left']= $this->load->controller('common/column_left');
$data['footer'] = $this->load->controller('common/footer');
@@ -194,6 +196,82 @@ public function index() {
$this->response->setOutput($this->load->view($this->route . $this->view_extension_file, $data));
}
+
+ /**
+ * Define the common fields for each payment method
+ *
+ * @return array
+ *
+ */
+ private function getPaymentGenericFields() {
+ return array(
+ 'name',
+ 'code',
+ 'image',
+ 'require_shopping_cart'
+ );
+ }
+
+ /**
+ * Return the values of fields for each generic methods keys
+ *
+ * @param int $store_id
+ * @return array
+ *
+ */
+ private function getPaymentGenericFieldsValues($store_id = 0) {
+ $this->registry->set('multisafepay', new Multisafepay($this->registry));
+ $generic_gateways = $this->multisafepay->getGatewayByType('generic');
+ $fields = array();
+ foreach($generic_gateways as $gateway) {
+ $fields = $this->extractGenericFieldsByGateway($gateway, $fields, $store_id);
+ }
+ return $fields;
+ }
+
+ /**
+ * Extract the values of fields for each generic methods keys for each gateway
+ *
+ * @param string $gateway
+ * @param array $fields
+ * @param int $store_id
+ * @return array
+ *
+ */
+ // phpcs:ignore ObjectCalisthenics.Metrics.MaxNestingLevel
+ private function extractGenericFieldsByGateway($gateway, $fields, $store_id) {
+ $this->load->model('tool/image');
+ $payment_fields = $this->getPaymentGenericFields();
+ foreach ($payment_fields as $payment_field) {
+ if ($payment_field !== 'image' && isset($this->request->post[$this->key_prefix . 'multisafepay_'.$gateway['code'].'_'.$payment_field])) {
+ $fields[$gateway['code']][$payment_field] = $this->request->post[$this->key_prefix . 'multisafepay_'.$gateway['code'].'_'.$payment_field];
+ continue;
+ }
+ if ($payment_field !== 'image' && !isset($this->request->post[$this->key_prefix . 'multisafepay_'.$gateway['code'].'_'.$payment_field])) {
+ $fields[$gateway['code']][$payment_field] = $this->{$this->model_call}->getSettingValue($this->key_prefix . 'multisafepay_'.$gateway['code'].'_'.$payment_field, $store_id);
+ continue;
+ }
+ if ($payment_field === 'image' && isset($this->request->post[$this->key_prefix . 'multisafepay_'.$gateway['code'].'_'.$payment_field])) {
+ $fields[$gateway['code']][$payment_field] = $this->request->post[$this->key_prefix . 'multisafepay_'.$gateway['code'].'_'.$payment_field];
+ $fields[$gateway['code']]['thumb'] = $this->model_tool_image->resize($this->request->post[$this->key_prefix . 'multisafepay_'.$gateway['code'].'_'.$payment_field], 100, 100);
+ continue;
+ }
+ if ($payment_field === 'image' && !isset($this->request->post[$this->key_prefix . 'multisafepay_'.$gateway['code'].'_'.$payment_field])) {
+ $fields[$gateway['code']][$payment_field] = $this->{$this->model_call}->getSettingValue($this->key_prefix . 'multisafepay_'.$gateway['code'].'_'.$payment_field, $store_id);
+ $image = $this->{$this->model_call}->getSettingValue($this->key_prefix . 'multisafepay_'.$gateway['code'].'_'.$payment_field, $store_id);
+ if($image) {
+ $fields[$gateway['code']]['thumb'] = $this->model_tool_image->resize($image, 100, 100);
+ }
+ if(!$image) {
+ $fields[$gateway['code']]['thumb'] = $this->model_tool_image->resize('no_image.png', 100, 100);
+ }
+ continue;
+ }
+ }
+ return $fields;
+ }
+
+
/**
* Return error message is PHP Version is not supported by the extension
*
@@ -530,29 +608,6 @@ protected function validate() {
$this->error['api_key'] = $this->language->get('error_empty_api_key');
}
- $this->registry->set('multisafepay', new Multisafepay($this->registry));
- $gateways = $this->multisafepay->getGateways();
- $enviroment = (empty($this->request->post[$this->key_prefix . 'multisafepay_environment'])) ? true : false;
- $enviroment_key = (empty($this->request->post[$this->key_prefix . 'multisafepay_environment'])) ? '' : 'sandbox_';
- $api_key = $this->request->post[$this->key_prefix . 'multisafepay_' . $enviroment_key . 'api_key'];
- $available_gateways = $this->multisafepay->getAvailableGateways($enviroment, $api_key);
-
- if(!$available_gateways) {
- $this->error[$enviroment_key . 'api_key'] = $this->language->get('error_invalid_api_key');
- $this->error['warning'] = $this->language->get('error_check_form');
- return !$this->error;
- }
-
- foreach($gateways as $gateway) {
- if ($this->request->post[$this->key_prefix . 'multisafepay_'.$gateway['code'].'_status'] && $this->isGatewayAvailable($gateway, $available_gateways) !== null) {
- $this->error['gateway'][$gateway['code']] = $this->isGatewayAvailable($gateway, $available_gateways);
- }
- }
-
- if(!empty($this->error['gateway'])) {
- $this->error['warning'] = $this->language->get('error_gateways_not_available');
- }
-
if (!isset($this->request->post[$this->key_prefix . 'multisafepay_days_active']) || $this->request->post[$this->key_prefix . 'multisafepay_days_active'] < 1) {
$this->error['days_active'] = $this->language->get('error_days_active');
}
@@ -757,16 +812,14 @@ public function refundOrder() {
$this->registry->set('multisafepay', new Multisafepay($this->registry));
$msp_order = $this->multisafepay->getAdminOrderObject($this->request->get['order_id']);
+ $order_info = $this->multisafepay->getAdminOrderInfo($this->request->get['order_id']);
$data['status'] = $msp_order->getStatus();
$refund_request = $this->multisafepay->createRefundRequestObject($msp_order);
$refund_request->addMoney($msp_order->getMoney());
$description = sprintf($this->language->get('text_description_refunded'), $this->request->get['order_id'], date($this->language->get('datetime_format')));
$refund_request->addDescriptionText($description);
- $payment_details = $msp_order->getPaymentDetails();
- $gateway_id = $payment_details->getType();
- $gateways_with_shopping_cart = array('AFTERPAY', 'KLARNA', 'EINVOICE', 'PAYAFTER', 'IN3');
- if(in_array($gateway_id, $gateways_with_shopping_cart)) {
+ if($this->refundWithShoppingCart($order_info, $msp_order)) {
$msp_shopping_cart = $msp_order->getShoppingCart();
$msp_shopping_cart_data = $msp_shopping_cart->getData();
foreach ($msp_shopping_cart_data['items'] as $msp_cart_item) {
@@ -793,6 +846,26 @@ public function refundOrder() {
$this->response->addHeader('Content-Type: application/json');
$this->response->setOutput(json_encode($json));
+ }
+
+ /**
+ * Check if ShoppingCart is required to process a refund
+ *
+ * @param array $order_info
+ * @param \MultiSafepay\Api\Transactions\TransactionResponse $msp_order
+ */
+ private function refundWithShoppingCart($order_info, $msp_order) {
+
+ if($order_info['payment_code'] === 'multisafepay/generic' && $this->{$this->model_call}->getSettingValue($this->key_prefix . 'multisafepay_generic_require_shopping_cart', $order_info['store_id'])) {
+ return true;
+ }
+
+ if($msp_order->requiresShoppingCart()) {
+ return true;
+ }
+
+ return false;
+
}
/**
diff --git a/src/admin/language/de-de/extension/payment/multisafepay.php b/src/admin/language/de-de/extension/payment/multisafepay.php
index 2369b1d..71335a9 100644
--- a/src/admin/language/de-de/extension/payment/multisafepay.php
+++ b/src/admin/language/de-de/extension/payment/multisafepay.php
@@ -269,3 +269,14 @@
$_['error_gateway_not_available'] = 'Gateway: %s sind nicht verfügbar in ihrem MultiSafepay-Konto';
$_['error_php_version'] = 'Es scheint, dass Ihre PHP-Bibliothek veraltet ist. Diese Erweiterung erfordert PHP 7.1 oder höher';
$_['error_days_active'] = 'Die Lebensdauer einer Zahlungsverbindung sollte mindestens 1 betragen';
+
+// Generic Gateways
+$_['entry_name'] = 'Gateway Name';
+$_['entry_code'] = 'Gateway Code';
+$_['entry_image'] = 'Gateway Symbol';
+$_['text_help_require_shopping_cart'] = 'Aktivieren Sie diese Option, wenn Sie eine Zahlungsmethode der Billing Suite verwenden.';
+$_['text_help_image_generic'] = 'Empfohlene Größe: 420px * 180px';
+$_['entry_require_shopping_cart'] = 'Warenkorb erforderlich';
+$_['text_brief_description_generic'] = 'Diese generische Zahlungsmethode kann mit jedem MultiSafepay-Gateway oder Geschenkkartencode verwendet werden.';
+$_['text_title_generic'] = 'Generisches Gateway';
+$_['text_show_generic'] = 'Nur generische Zahlungsgateways anzeigen';
\ No newline at end of file
diff --git a/src/admin/language/de-de/payment/multisafepay.php b/src/admin/language/de-de/payment/multisafepay.php
index 2369b1d..71335a9 100644
--- a/src/admin/language/de-de/payment/multisafepay.php
+++ b/src/admin/language/de-de/payment/multisafepay.php
@@ -269,3 +269,14 @@
$_['error_gateway_not_available'] = 'Gateway: %s sind nicht verfügbar in ihrem MultiSafepay-Konto';
$_['error_php_version'] = 'Es scheint, dass Ihre PHP-Bibliothek veraltet ist. Diese Erweiterung erfordert PHP 7.1 oder höher';
$_['error_days_active'] = 'Die Lebensdauer einer Zahlungsverbindung sollte mindestens 1 betragen';
+
+// Generic Gateways
+$_['entry_name'] = 'Gateway Name';
+$_['entry_code'] = 'Gateway Code';
+$_['entry_image'] = 'Gateway Symbol';
+$_['text_help_require_shopping_cart'] = 'Aktivieren Sie diese Option, wenn Sie eine Zahlungsmethode der Billing Suite verwenden.';
+$_['text_help_image_generic'] = 'Empfohlene Größe: 420px * 180px';
+$_['entry_require_shopping_cart'] = 'Warenkorb erforderlich';
+$_['text_brief_description_generic'] = 'Diese generische Zahlungsmethode kann mit jedem MultiSafepay-Gateway oder Geschenkkartencode verwendet werden.';
+$_['text_title_generic'] = 'Generisches Gateway';
+$_['text_show_generic'] = 'Nur generische Zahlungsgateways anzeigen';
\ No newline at end of file
diff --git a/src/admin/language/deutsch/payment/multisafepay.php b/src/admin/language/deutsch/payment/multisafepay.php
index 2369b1d..71335a9 100644
--- a/src/admin/language/deutsch/payment/multisafepay.php
+++ b/src/admin/language/deutsch/payment/multisafepay.php
@@ -269,3 +269,14 @@
$_['error_gateway_not_available'] = 'Gateway: %s sind nicht verfügbar in ihrem MultiSafepay-Konto';
$_['error_php_version'] = 'Es scheint, dass Ihre PHP-Bibliothek veraltet ist. Diese Erweiterung erfordert PHP 7.1 oder höher';
$_['error_days_active'] = 'Die Lebensdauer einer Zahlungsverbindung sollte mindestens 1 betragen';
+
+// Generic Gateways
+$_['entry_name'] = 'Gateway Name';
+$_['entry_code'] = 'Gateway Code';
+$_['entry_image'] = 'Gateway Symbol';
+$_['text_help_require_shopping_cart'] = 'Aktivieren Sie diese Option, wenn Sie eine Zahlungsmethode der Billing Suite verwenden.';
+$_['text_help_image_generic'] = 'Empfohlene Größe: 420px * 180px';
+$_['entry_require_shopping_cart'] = 'Warenkorb erforderlich';
+$_['text_brief_description_generic'] = 'Diese generische Zahlungsmethode kann mit jedem MultiSafepay-Gateway oder Geschenkkartencode verwendet werden.';
+$_['text_title_generic'] = 'Generisches Gateway';
+$_['text_show_generic'] = 'Nur generische Zahlungsgateways anzeigen';
\ No newline at end of file
diff --git a/src/admin/language/dutch/payment/multisafepay.php b/src/admin/language/dutch/payment/multisafepay.php
index 1f3e97c..2e0e2f0 100644
--- a/src/admin/language/dutch/payment/multisafepay.php
+++ b/src/admin/language/dutch/payment/multisafepay.php
@@ -126,6 +126,7 @@
$_['text_brief_description_wijncadeau'] = '';
$_['text_brief_description_winkelcheque'] = '';
$_['text_brief_description_yourgift'] = '';
+$_['text_brief_description_generic'] = '';
$_['entry_account_type'] = 'Selecteer het type account';
$_['entry_environment'] = 'Type account';
$_['entry_debug_mode'] = 'Debug-modus';
@@ -217,6 +218,7 @@
$_['text_title_wijncadeau'] = 'Wijncadeau';
$_['text_title_winkel_cheque'] = 'Winkelcheque';
$_['text_title_yourgift'] = 'YourGift';
+$_['text_title_generic'] = 'Generic Gateway';
$_['tab_order'] = 'MultiSafepay Opdracht';
$_['text_refund_confirm'] = 'Weet u zeker dat u de totaliteit van deze bestelling wilt terugbetalen? Deze actie kan niet ongedaan worden gemaakt. Als u bevestigt wordt het totale bedrag van de bestelling aan de klant terugbetaald en verandert de status van de bestelling in een terugbetaling.';
$_['text_refund_success'] = 'De terugbetaling is succesvol verwerkt.';
@@ -269,3 +271,14 @@
$_['error_gateway_not_available'] = 'Gateway: %s zijn niet beschikbaar in uw MultiSafepay account';
$_['error_php_version'] = 'Het lijkt erop dat uw PHP-bibliotheek verouderd is. Deze extensie vereist PHP 7.1 of hoger';
$_['error_days_active'] = 'De levensduur van een betaallink moet minimaal 1 zijn';
+
+// Generic Gateways
+$_['entry_name'] = 'Gateway naam';
+$_['entry_code'] = 'Gateway code';
+$_['entry_image'] = 'Gateway icoon';
+$_['text_help_image_generic'] = 'Aanbevolen afmetingen: 420px * 180px';
+$_['entry_require_shopping_cart'] = 'Verstuur winkelwagen';
+$_['text_help_require_shopping_cart'] = 'Schakel deze optie in als u een Billing Suite-betaalmethode gebruikt.';
+$_['text_brief_description_generic'] = 'Alle door MultiSafepay ondersteunde betaalmethodes of giftcards kunnen worden gebruikt met deze betaalmethode.';
+$_['text_title_generic'] = 'Generieke gateway Gateway';
+$_['text_show_generic'] = 'Laat alleen generieke betaalmethodes zien';
diff --git a/src/admin/language/en-gb/extension/payment/multisafepay.php b/src/admin/language/en-gb/extension/payment/multisafepay.php
index d909ddf..ec7233b 100644
--- a/src/admin/language/en-gb/extension/payment/multisafepay.php
+++ b/src/admin/language/en-gb/extension/payment/multisafepay.php
@@ -270,3 +270,14 @@
$_['error_gateway_not_available'] = 'Gateway: %s is not available for your MultiSafepay account';
$_['error_php_version'] = 'It seems your PHP library is outdated. This extension requires PHP 7.1 or higher';
$_['error_days_active'] = 'The value for the timelife of a payment link should be as minimum 1';
+
+// Generic Gateways
+$_['entry_name'] = 'Gateway Name';
+$_['entry_code'] = 'Gateway Code';
+$_['entry_image'] = 'Gateway Icon';
+$_['entry_require_shopping_cart'] = 'Require shopping cart';
+$_['text_help_require_shopping_cart'] = 'Enable this option if you are using a Billing Suite payment method.';
+$_['text_help_image_generic'] = 'Recommended size: 420px * 180px';
+$_['text_brief_description_generic'] = 'This generic payment method can be used with any MultiSafepay gateway or giftcard code.';
+$_['text_title_generic'] = 'Generic Gateway';
+$_['text_show_generic'] = 'Show only generic payment gateways';
\ No newline at end of file
diff --git a/src/admin/language/en-gb/payment/multisafepay.php b/src/admin/language/en-gb/payment/multisafepay.php
index d909ddf..ec7233b 100644
--- a/src/admin/language/en-gb/payment/multisafepay.php
+++ b/src/admin/language/en-gb/payment/multisafepay.php
@@ -270,3 +270,14 @@
$_['error_gateway_not_available'] = 'Gateway: %s is not available for your MultiSafepay account';
$_['error_php_version'] = 'It seems your PHP library is outdated. This extension requires PHP 7.1 or higher';
$_['error_days_active'] = 'The value for the timelife of a payment link should be as minimum 1';
+
+// Generic Gateways
+$_['entry_name'] = 'Gateway Name';
+$_['entry_code'] = 'Gateway Code';
+$_['entry_image'] = 'Gateway Icon';
+$_['entry_require_shopping_cart'] = 'Require shopping cart';
+$_['text_help_require_shopping_cart'] = 'Enable this option if you are using a Billing Suite payment method.';
+$_['text_help_image_generic'] = 'Recommended size: 420px * 180px';
+$_['text_brief_description_generic'] = 'This generic payment method can be used with any MultiSafepay gateway or giftcard code.';
+$_['text_title_generic'] = 'Generic Gateway';
+$_['text_show_generic'] = 'Show only generic payment gateways';
\ No newline at end of file
diff --git a/src/admin/language/english/payment/multisafepay.php b/src/admin/language/english/payment/multisafepay.php
index d909ddf..ec7233b 100644
--- a/src/admin/language/english/payment/multisafepay.php
+++ b/src/admin/language/english/payment/multisafepay.php
@@ -270,3 +270,14 @@
$_['error_gateway_not_available'] = 'Gateway: %s is not available for your MultiSafepay account';
$_['error_php_version'] = 'It seems your PHP library is outdated. This extension requires PHP 7.1 or higher';
$_['error_days_active'] = 'The value for the timelife of a payment link should be as minimum 1';
+
+// Generic Gateways
+$_['entry_name'] = 'Gateway Name';
+$_['entry_code'] = 'Gateway Code';
+$_['entry_image'] = 'Gateway Icon';
+$_['entry_require_shopping_cart'] = 'Require shopping cart';
+$_['text_help_require_shopping_cart'] = 'Enable this option if you are using a Billing Suite payment method.';
+$_['text_help_image_generic'] = 'Recommended size: 420px * 180px';
+$_['text_brief_description_generic'] = 'This generic payment method can be used with any MultiSafepay gateway or giftcard code.';
+$_['text_title_generic'] = 'Generic Gateway';
+$_['text_show_generic'] = 'Show only generic payment gateways';
\ No newline at end of file
diff --git a/src/admin/language/es/extension/payment/multisafepay.php b/src/admin/language/es/extension/payment/multisafepay.php
index 467c1cd..8c4b08b 100644
--- a/src/admin/language/es/extension/payment/multisafepay.php
+++ b/src/admin/language/es/extension/payment/multisafepay.php
@@ -270,3 +270,14 @@
$_['error_gateway_not_available'] = 'El método de pago: %s no está disponible en su cuenta MultiSafepay';
$_['error_php_version'] = 'Parece que su biblioteca PHP está desactualizada. Esta extensión requiere PHP 7.1 o superior';
$_['error_days_active'] = 'El tiempo de vida del enlace de pago debe ser como mínimo 1';
+
+// Generic Gateways
+$_['entry_name'] = 'Nombre Gateway';
+$_['entry_code'] = 'Código Gateway';
+$_['entry_image'] = 'Logo Gateway';
+$_['entry_require_shopping_cart'] = 'Requiere carrito de compras';
+$_['text_help_require_shopping_cart'] = 'Habilita esta opción si estas usando una código de pasarela catalogada como Billing Suite';
+$_['text_help_image_generic'] = 'Tamaño recomendado: 420px * 180px';
+$_['text_brief_description_generic'] = 'Este método de pago se puede utilizar con cualquier pasarela de MultiSafepay o código de tarjeta de regalo.';
+$_['text_title_generic'] = 'Gateway Genérica';
+$_['text_show_generic'] = 'Mostrar solo pasarelas de pago genéricas';
\ No newline at end of file
diff --git a/src/admin/language/es/payment/multisafepay.php b/src/admin/language/es/payment/multisafepay.php
index 467c1cd..8c4b08b 100644
--- a/src/admin/language/es/payment/multisafepay.php
+++ b/src/admin/language/es/payment/multisafepay.php
@@ -270,3 +270,14 @@
$_['error_gateway_not_available'] = 'El método de pago: %s no está disponible en su cuenta MultiSafepay';
$_['error_php_version'] = 'Parece que su biblioteca PHP está desactualizada. Esta extensión requiere PHP 7.1 o superior';
$_['error_days_active'] = 'El tiempo de vida del enlace de pago debe ser como mínimo 1';
+
+// Generic Gateways
+$_['entry_name'] = 'Nombre Gateway';
+$_['entry_code'] = 'Código Gateway';
+$_['entry_image'] = 'Logo Gateway';
+$_['entry_require_shopping_cart'] = 'Requiere carrito de compras';
+$_['text_help_require_shopping_cart'] = 'Habilita esta opción si estas usando una código de pasarela catalogada como Billing Suite';
+$_['text_help_image_generic'] = 'Tamaño recomendado: 420px * 180px';
+$_['text_brief_description_generic'] = 'Este método de pago se puede utilizar con cualquier pasarela de MultiSafepay o código de tarjeta de regalo.';
+$_['text_title_generic'] = 'Gateway Genérica';
+$_['text_show_generic'] = 'Mostrar solo pasarelas de pago genéricas';
\ No newline at end of file
diff --git a/src/admin/language/it-it/extension/payment/multisafepay.php b/src/admin/language/it-it/extension/payment/multisafepay.php
index ebbd0d8..0b5659b 100644
--- a/src/admin/language/it-it/extension/payment/multisafepay.php
+++ b/src/admin/language/it-it/extension/payment/multisafepay.php
@@ -268,3 +268,14 @@
$_['error_gateway_not_available'] = 'Gateway: %s non sono disponibili nel tuo account MultiSafepay';
$_['error_php_version'] = 'Sembra che la tua libreria PHP non sia aggiornata. Questa estensione richiede PHP 7.1 o superiore';
$_['error_days_active'] = 'La durata di un collegamento di pagamento dovrebbe essere almeno 1';
+
+// Generic Gateways
+$_['entry_name'] = 'Nome del metodo di pagamento';
+$_['entry_code'] = 'Codice del metodo di pagamento';
+$_['entry_image'] = 'Icona del metodo di pagamento';
+$_['entry_require_shopping_cart'] = 'Carrello obbligatorio';
+$_['text_help_require_shopping_cart'] = 'Abilita questa opzione se stai utilizzando un metodo di pagamento Billing Suite.';
+$_['text_help_image_generic'] = 'Dimensione raccomandata: 420px * 180px';
+$_['text_brief_description_generic'] = 'Questo metodo di pagamento generico può essere usato con qualsiasi metodo di pagamento o giftcard di MultiSafepay.';
+$_['text_title_generic'] = 'Metodo di pagamento generico';
+$_['text_show_generic'] = 'Mostra solo i metodi di pagamento generici';
diff --git a/src/admin/language/it-it/payment/multisafepay.php b/src/admin/language/it-it/payment/multisafepay.php
index ebbd0d8..0b5659b 100644
--- a/src/admin/language/it-it/payment/multisafepay.php
+++ b/src/admin/language/it-it/payment/multisafepay.php
@@ -268,3 +268,14 @@
$_['error_gateway_not_available'] = 'Gateway: %s non sono disponibili nel tuo account MultiSafepay';
$_['error_php_version'] = 'Sembra che la tua libreria PHP non sia aggiornata. Questa estensione richiede PHP 7.1 o superiore';
$_['error_days_active'] = 'La durata di un collegamento di pagamento dovrebbe essere almeno 1';
+
+// Generic Gateways
+$_['entry_name'] = 'Nome del metodo di pagamento';
+$_['entry_code'] = 'Codice del metodo di pagamento';
+$_['entry_image'] = 'Icona del metodo di pagamento';
+$_['entry_require_shopping_cart'] = 'Carrello obbligatorio';
+$_['text_help_require_shopping_cart'] = 'Abilita questa opzione se stai utilizzando un metodo di pagamento Billing Suite.';
+$_['text_help_image_generic'] = 'Dimensione raccomandata: 420px * 180px';
+$_['text_brief_description_generic'] = 'Questo metodo di pagamento generico può essere usato con qualsiasi metodo di pagamento o giftcard di MultiSafepay.';
+$_['text_title_generic'] = 'Metodo di pagamento generico';
+$_['text_show_generic'] = 'Mostra solo i metodi di pagamento generici';
diff --git a/src/admin/language/italian/payment/multisafepay.php b/src/admin/language/italian/payment/multisafepay.php
index ebbd0d8..0b5659b 100644
--- a/src/admin/language/italian/payment/multisafepay.php
+++ b/src/admin/language/italian/payment/multisafepay.php
@@ -268,3 +268,14 @@
$_['error_gateway_not_available'] = 'Gateway: %s non sono disponibili nel tuo account MultiSafepay';
$_['error_php_version'] = 'Sembra che la tua libreria PHP non sia aggiornata. Questa estensione richiede PHP 7.1 o superiore';
$_['error_days_active'] = 'La durata di un collegamento di pagamento dovrebbe essere almeno 1';
+
+// Generic Gateways
+$_['entry_name'] = 'Nome del metodo di pagamento';
+$_['entry_code'] = 'Codice del metodo di pagamento';
+$_['entry_image'] = 'Icona del metodo di pagamento';
+$_['entry_require_shopping_cart'] = 'Carrello obbligatorio';
+$_['text_help_require_shopping_cart'] = 'Abilita questa opzione se stai utilizzando un metodo di pagamento Billing Suite.';
+$_['text_help_image_generic'] = 'Dimensione raccomandata: 420px * 180px';
+$_['text_brief_description_generic'] = 'Questo metodo di pagamento generico può essere usato con qualsiasi metodo di pagamento o giftcard di MultiSafepay.';
+$_['text_title_generic'] = 'Metodo di pagamento generico';
+$_['text_show_generic'] = 'Mostra solo i metodi di pagamento generici';
diff --git a/src/admin/language/nl-nl/extension/payment/multisafepay.php b/src/admin/language/nl-nl/extension/payment/multisafepay.php
index 1f3e97c..2e0e2f0 100644
--- a/src/admin/language/nl-nl/extension/payment/multisafepay.php
+++ b/src/admin/language/nl-nl/extension/payment/multisafepay.php
@@ -126,6 +126,7 @@
$_['text_brief_description_wijncadeau'] = '';
$_['text_brief_description_winkelcheque'] = '';
$_['text_brief_description_yourgift'] = '';
+$_['text_brief_description_generic'] = '';
$_['entry_account_type'] = 'Selecteer het type account';
$_['entry_environment'] = 'Type account';
$_['entry_debug_mode'] = 'Debug-modus';
@@ -217,6 +218,7 @@
$_['text_title_wijncadeau'] = 'Wijncadeau';
$_['text_title_winkel_cheque'] = 'Winkelcheque';
$_['text_title_yourgift'] = 'YourGift';
+$_['text_title_generic'] = 'Generic Gateway';
$_['tab_order'] = 'MultiSafepay Opdracht';
$_['text_refund_confirm'] = 'Weet u zeker dat u de totaliteit van deze bestelling wilt terugbetalen? Deze actie kan niet ongedaan worden gemaakt. Als u bevestigt wordt het totale bedrag van de bestelling aan de klant terugbetaald en verandert de status van de bestelling in een terugbetaling.';
$_['text_refund_success'] = 'De terugbetaling is succesvol verwerkt.';
@@ -269,3 +271,14 @@
$_['error_gateway_not_available'] = 'Gateway: %s zijn niet beschikbaar in uw MultiSafepay account';
$_['error_php_version'] = 'Het lijkt erop dat uw PHP-bibliotheek verouderd is. Deze extensie vereist PHP 7.1 of hoger';
$_['error_days_active'] = 'De levensduur van een betaallink moet minimaal 1 zijn';
+
+// Generic Gateways
+$_['entry_name'] = 'Gateway naam';
+$_['entry_code'] = 'Gateway code';
+$_['entry_image'] = 'Gateway icoon';
+$_['text_help_image_generic'] = 'Aanbevolen afmetingen: 420px * 180px';
+$_['entry_require_shopping_cart'] = 'Verstuur winkelwagen';
+$_['text_help_require_shopping_cart'] = 'Schakel deze optie in als u een Billing Suite-betaalmethode gebruikt.';
+$_['text_brief_description_generic'] = 'Alle door MultiSafepay ondersteunde betaalmethodes of giftcards kunnen worden gebruikt met deze betaalmethode.';
+$_['text_title_generic'] = 'Generieke gateway Gateway';
+$_['text_show_generic'] = 'Laat alleen generieke betaalmethodes zien';
diff --git a/src/admin/language/nl-nl/payment/multisafepay.php b/src/admin/language/nl-nl/payment/multisafepay.php
index 1f3e97c..2e0e2f0 100644
--- a/src/admin/language/nl-nl/payment/multisafepay.php
+++ b/src/admin/language/nl-nl/payment/multisafepay.php
@@ -126,6 +126,7 @@
$_['text_brief_description_wijncadeau'] = '';
$_['text_brief_description_winkelcheque'] = '';
$_['text_brief_description_yourgift'] = '';
+$_['text_brief_description_generic'] = '';
$_['entry_account_type'] = 'Selecteer het type account';
$_['entry_environment'] = 'Type account';
$_['entry_debug_mode'] = 'Debug-modus';
@@ -217,6 +218,7 @@
$_['text_title_wijncadeau'] = 'Wijncadeau';
$_['text_title_winkel_cheque'] = 'Winkelcheque';
$_['text_title_yourgift'] = 'YourGift';
+$_['text_title_generic'] = 'Generic Gateway';
$_['tab_order'] = 'MultiSafepay Opdracht';
$_['text_refund_confirm'] = 'Weet u zeker dat u de totaliteit van deze bestelling wilt terugbetalen? Deze actie kan niet ongedaan worden gemaakt. Als u bevestigt wordt het totale bedrag van de bestelling aan de klant terugbetaald en verandert de status van de bestelling in een terugbetaling.';
$_['text_refund_success'] = 'De terugbetaling is succesvol verwerkt.';
@@ -269,3 +271,14 @@
$_['error_gateway_not_available'] = 'Gateway: %s zijn niet beschikbaar in uw MultiSafepay account';
$_['error_php_version'] = 'Het lijkt erop dat uw PHP-bibliotheek verouderd is. Deze extensie vereist PHP 7.1 of hoger';
$_['error_days_active'] = 'De levensduur van een betaallink moet minimaal 1 zijn';
+
+// Generic Gateways
+$_['entry_name'] = 'Gateway naam';
+$_['entry_code'] = 'Gateway code';
+$_['entry_image'] = 'Gateway icoon';
+$_['text_help_image_generic'] = 'Aanbevolen afmetingen: 420px * 180px';
+$_['entry_require_shopping_cart'] = 'Verstuur winkelwagen';
+$_['text_help_require_shopping_cart'] = 'Schakel deze optie in als u een Billing Suite-betaalmethode gebruikt.';
+$_['text_brief_description_generic'] = 'Alle door MultiSafepay ondersteunde betaalmethodes of giftcards kunnen worden gebruikt met deze betaalmethode.';
+$_['text_title_generic'] = 'Generieke gateway Gateway';
+$_['text_show_generic'] = 'Laat alleen generieke betaalmethodes zien';
diff --git a/src/admin/language/spanish/payment/multisafepay.php b/src/admin/language/spanish/payment/multisafepay.php
index 467c1cd..8c4b08b 100644
--- a/src/admin/language/spanish/payment/multisafepay.php
+++ b/src/admin/language/spanish/payment/multisafepay.php
@@ -270,3 +270,14 @@
$_['error_gateway_not_available'] = 'El método de pago: %s no está disponible en su cuenta MultiSafepay';
$_['error_php_version'] = 'Parece que su biblioteca PHP está desactualizada. Esta extensión requiere PHP 7.1 o superior';
$_['error_days_active'] = 'El tiempo de vida del enlace de pago debe ser como mínimo 1';
+
+// Generic Gateways
+$_['entry_name'] = 'Nombre Gateway';
+$_['entry_code'] = 'Código Gateway';
+$_['entry_image'] = 'Logo Gateway';
+$_['entry_require_shopping_cart'] = 'Requiere carrito de compras';
+$_['text_help_require_shopping_cart'] = 'Habilita esta opción si estas usando una código de pasarela catalogada como Billing Suite';
+$_['text_help_image_generic'] = 'Tamaño recomendado: 420px * 180px';
+$_['text_brief_description_generic'] = 'Este método de pago se puede utilizar con cualquier pasarela de MultiSafepay o código de tarjeta de regalo.';
+$_['text_title_generic'] = 'Gateway Genérica';
+$_['text_show_generic'] = 'Mostrar solo pasarelas de pago genéricas';
\ No newline at end of file
diff --git a/src/admin/view/template/extension/payment/multisafepay.tpl b/src/admin/view/template/extension/payment/multisafepay.tpl
index 7821774..0d98cd9 100644
--- a/src/admin/view/template/extension/payment/multisafepay.tpl
+++ b/src/admin/view/template/extension/payment/multisafepay.tpl
@@ -387,6 +387,7 @@
+
@@ -435,6 +436,37 @@
+
+
+
+
+
+
+
@@ -685,19 +717,28 @@