From 6349694cc4c08bca4e8093b16e566a8a8f8aac37 Mon Sep 17 00:00:00 2001 From: Gitdyr Date: Sun, 23 Jun 2019 08:04:10 +0200 Subject: [PATCH] Version 4.0.46 Added confirmation page for MobilePay Checkout Added Resurs Bank and Vipps Added alternative state for capture Added support for Dankort 3D Updated logos (Maestro/Mastercard) --- changelog.txt | 7 + controllers/front/mobilepay.php | 23 +++ quickpay.php | 286 +++++++++++++++++++---------- translations/da.php | 22 +++ views/css/front.css | 10 + views/css/front15.css | 7 + views/img/dk_3d.png | Bin 0 -> 1842 bytes views/img/maestro.png | Bin 3654 -> 1530 bytes views/img/maestro_3d.png | Bin 3654 -> 1530 bytes views/img/mastercard_3d.png | Bin 3580 -> 1649 bytes views/img/mobilepay_white.png | Bin 0 -> 2410 bytes views/img/resurs.png | Bin 0 -> 751 bytes views/img/vipps.png | Bin 0 -> 3099 bytes views/img/visa_3d.png | Bin 2883 -> 1569 bytes views/js/mobilepay.js | 63 +++++++ views/templates/front/fail17.tpl | 34 ++++ views/templates/hook/mobilepay.tpl | 68 +++++++ 17 files changed, 424 insertions(+), 96 deletions(-) create mode 100644 controllers/front/mobilepay.php create mode 100644 views/img/dk_3d.png create mode 100644 views/img/mobilepay_white.png create mode 100644 views/img/resurs.png create mode 100644 views/img/vipps.png create mode 100644 views/js/mobilepay.js create mode 100644 views/templates/front/fail17.tpl create mode 100644 views/templates/hook/mobilepay.tpl diff --git a/changelog.txt b/changelog.txt index 672be61..4ef7edd 100644 --- a/changelog.txt +++ b/changelog.txt @@ -170,3 +170,10 @@ Version 4.0.45 2019-01-07 2019-01-14 Fixed phone number for MobilePay Checkout. MobilePay Checkout option was not always properly disabled. +Version 4.0.46 +2019-01-14 2019-06-23 +Added confirmation page for MobilePay Checkout +Added Resurs Bank and Vipps +Added alternative state for capture +Added support for Dankort 3D +Updated logos (Maestro/Mastercard) diff --git a/controllers/front/mobilepay.php b/controllers/front/mobilepay.php new file mode 100644 index 0000000..7df6765 --- /dev/null +++ b/controllers/front/mobilepay.php @@ -0,0 +1,23 @@ +mobilePay(); + } +} diff --git a/quickpay.php b/quickpay.php index cc2036f..6e08e8e 100644 --- a/quickpay.php +++ b/quickpay.php @@ -6,7 +6,7 @@ * @copyright 2015 QuickPay * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * -* $Date: 2019/01/14 21:29:48 $ +* $Date: 2019/06/23 05:58:45 $ * E-mail: helpdesk@quickpay.net */ @@ -19,7 +19,7 @@ public function __construct() { $this->name = 'quickpay'; $this->tab = 'payments_gateways'; - $this->version = '4.0.45'; + $this->version = '4.0.46'; $this->v14 = _PS_VERSION_ >= '1.4.1.0'; $this->v15 = _PS_VERSION_ >= '1.5.0.0'; $this->v16 = _PS_VERSION_ >= '1.6.0.0'; @@ -174,10 +174,13 @@ public function getSetup() $this->l('Auto-capture payments'), 0, ''), array('_QUICKPAY_STATECAPTURE', 'statecapture', $this->l('Capture payments in state'), 0, ''), + array('_QUICKPAY_STATECAPTURE2', 'statecapture2', + $this->l('Alternative state for payment capture'), 0, ''), array('_QUICKPAY_BRANDING', 'branding', $this->l('Branding in payment window'), 0, ''), array('_QUICKPAY_FEE_TAX', 'feetax', $this->l('Tax for card fee'), 0, ''), + array('_QUICKPAY_CMS_ID', 'cmsid', $this->l('Info page for MobilePay Checkout'), 0, ''), array('_QUICKPAY_VIABILL', 'viabill', $this->l('ViaBill - buy now, pay whenever you want'), 0, 'viabill'), array('_QUICKPAY_DK', 'dk', @@ -204,6 +207,8 @@ public function getSetup() $this->l('Diners Club'), 0, 'diners,diners-dk'), array('_QUICKPAY_JCB', 'jcb', $this->l('JCB'), 0, 'jcb'), + array('_QUICKPAY_DK_3D', 'dk_3d', + $this->l('Dankort (3D)'), 0, '3d-dankort'), array('_QUICKPAY_VISA_3D', 'visa_3d', $this->l('Visa card (3D)'), 0, '3d-visa,3d-visa-dk'), array('_QUICKPAY_VELECTRON_3D', 'visaelectron_3d', @@ -223,7 +228,11 @@ public function getSetup() array('_QUICKPAY_APPLEPAY', 'applepay', $this->l('Apple Pay'), 0, 'applepay'), array('_QUICKPAY_BITCOIN', 'bitcoin', - $this->l('Bitcoin'), 0, 'bitcoin')); + $this->l('Bitcoin'), 0, 'bitcoin'), + array('_QUICKPAY_VIPPS', 'vipps', + $this->l('Vipps'), 0, 'vipps'), + array('_QUICKPAY_RESURS', 'resurs', + $this->l('Resurs Bank'), 0, 'resurs')); $this->setup = new StdClass(); $this->setup->lock_names = array(); $this->setup->card_type_locks = array(); @@ -624,39 +633,41 @@ protected function useCheckBox($vars) return $vars->def_val !== '' && $vars->var_name != 'orderprefix' && $vars->var_name != 'statecapture' && + $vars->var_name != 'statecapture2' && $vars->var_name != 'branding' && - $vars->var_name != 'feetax'; + $vars->var_name != 'feetax' && + $vars->var_name != 'cmsid'; } protected function getConfigInput15($vars) { if ($this->useCheckBox($vars)) { $input = array( - 'type' => 'select', - 'name' => $vars->glob_name, - 'label' => $vars->card_text, - 'options' => array( - 'query' => array( - array( - 'id' => '0', - 'name' => $this->l('No') - ), - array( - 'id' => '1', - 'name' => $this->l('Yes') - ) - ), - 'id' => 'id', - 'name' => 'name' + 'type' => 'select', + 'name' => $vars->glob_name, + 'label' => $vars->card_text, + 'options' => array( + 'query' => array( + array( + 'id' => '0', + 'name' => $this->l('No') + ), + array( + 'id' => '1', + 'name' => $this->l('Yes') ) - ); + ), + 'id' => 'id', + 'name' => 'name' + ) + ); } else { $input = array( - 'size' => strpos($vars->var_name, '_key') === false ? 10 : 60, - 'type' => 'text', - 'name' => $vars->glob_name, - 'label' => $vars->card_text - ); + 'size' => strpos($vars->var_name, '_key') === false ? 10 : 60, + 'type' => 'text', + 'name' => $vars->glob_name, + 'label' => $vars->card_text + ); } return $input; } @@ -668,29 +679,29 @@ protected function getConfigInput($vars) } if ($this->useCheckBox($vars)) { $input = array( - 'type' => 'switch', - 'name' => $vars->glob_name, - 'label' => $vars->card_text, - 'values' => array( - array( - 'id' => 'on', - 'value' => '1', - 'label' => $this->l('Yes'), - ), - array( - 'id' => 'off', - 'value' => '0', - 'label' => $this->l('No'), - ) - ) - ); + 'type' => 'switch', + 'name' => $vars->glob_name, + 'label' => $vars->card_text, + 'values' => array( + array( + 'id' => 'on', + 'value' => '1', + 'label' => $this->l('Yes'), + ), + array( + 'id' => 'off', + 'value' => '0', + 'label' => $this->l('No'), + ) + ) + ); } else { $input = array( - 'col' => strpos($vars->var_name, '_key') === false ? 3 : 6, - 'type' => 'text', - 'name' => $vars->glob_name, - 'label' => $vars->card_text - ); + 'col' => strpos($vars->var_name, '_key') === false ? 3 : 6, + 'type' => 'text', + 'name' => $vars->glob_name, + 'label' => $vars->card_text + ); } if ($vars->var_name == 'statementtext') { $input['desc'] = $this->l('Max. 22 ASCII characters. Only for Clearhaus.'); @@ -705,20 +716,20 @@ protected function getStatesInput($vars) $query[] = array('id' => 0, 'name' => $this->l('Never')); foreach ($order_states as $order_state) { $query[] = array( - 'id' => $order_state['id_order_state'], - 'name' => $order_state['name'] - ); + 'id' => $order_state['id_order_state'], + 'name' => $order_state['name'] + ); } $input = array( - 'type' => 'select', - 'name' => $vars->glob_name, - 'label' => $vars->card_text, - 'options' => array( - 'query' => $query, - 'id' => 'id', - 'name' => 'name' - ) - ); + 'type' => 'select', + 'name' => $vars->glob_name, + 'label' => $vars->card_text, + 'options' => array( + 'query' => $query, + 'id' => 'id', + 'name' => 'name' + ) + ); return $input; } @@ -732,20 +743,20 @@ protected function getBrandingInput($vars) $query[] = array('id' => 0, 'name' => $this->l('Standard')); foreach ($brandings as $id => $name) { $query[] = array( - 'id' => $id, - 'name' => $name - ); + 'id' => $id, + 'name' => $name + ); } $input = array( - 'type' => 'select', - 'name' => $vars->glob_name, - 'label' => $vars->card_text, - 'options' => array( - 'query' => $query, - 'id' => 'id', - 'name' => 'name' - ) - ); + 'type' => 'select', + 'name' => $vars->glob_name, + 'label' => $vars->card_text, + 'options' => array( + 'query' => $query, + 'id' => 'id', + 'name' => 'name' + ) + ); return $input; } @@ -759,20 +770,44 @@ protected function getFeeTaxInput($vars) $query = array(); foreach ($taxes as $id => $name) { $query[] = array( - 'id' => $id, - 'name' => $name - ); + 'id' => $id, + 'name' => $name + ); } $input = array( - 'type' => 'select', - 'name' => $vars->glob_name, - 'label' => $vars->card_text, - 'options' => array( - 'query' => $query, - 'id' => 'id', - 'name' => 'name' - ) - ); + 'type' => 'select', + 'name' => $vars->glob_name, + 'label' => $vars->card_text, + 'options' => array( + 'query' => $query, + 'id' => 'id', + 'name' => 'name' + ) + ); + return $input; + } + + protected function getCmsIdInput($vars) + { + $query = array(); + $query[] = array('id' => 0, 'name' => $this->l('None')); + $cmsPages = CMS::getCMSPages($this->context->language->id); + foreach ($cmsPages as $cmsPage) { + $query[] = array( + 'id' => $cmsPage['id_cms'], + 'name' => $cmsPage['meta_title'] + ); + } + $input = array( + 'type' => 'select', + 'name' => $vars->glob_name, + 'label' => $vars->card_text, + 'options' => array( + 'query' => $query, + 'id' => 'id', + 'name' => 'name' + ) + ); return $input; } @@ -784,7 +819,7 @@ protected function getConfigSettings() if ($vars->card_type_lock) { continue; } - if ($vars->var_name == 'statecapture') { + if ($vars->var_name == 'statecapture' || $vars->var_name == 'statecapture2') { $inputs[] = $this->getStatesInput($vars); continue; } @@ -796,19 +831,23 @@ protected function getConfigSettings() $inputs[] = $this->getFeeTaxInput($vars); continue; } + if ($vars->var_name == 'cmsid') { + $inputs[] = $this->getCmsIdInput($vars); + continue; + } $inputs[] = $this->getConfigInput($vars); } $submit = array( - 'title' => $this->l('Save'), - ); + 'title' => $this->l('Save'), + ); $form = array( - 'legend' => array( - 'title' => $this->l('Settings'), - 'icon' => 'icon-cogs', - ), - 'input' => $inputs, - 'submit' => $submit, - ); + 'legend' => array( + 'title' => $this->l('Settings'), + 'icon' => 'icon-cogs', + ), + 'input' => $inputs, + 'submit' => $submit, + ); return array('form' => $form); } @@ -1228,6 +1267,10 @@ public function hookHeader() } else { $this->context->controller->addCSS($this->_path.'/views/css/front15.css'); } + if ($this->getConf('_QUICKPAY_MOBILEPAY_CHECKOUT')) { + $this->context->controller->addJqueryUI('ui.dialog'); + $this->context->controller->addJS($this->_path.'views/js/mobilepay.js'); + } } public function hookPaymentTop() @@ -1346,6 +1389,11 @@ public function makePayment($params, &$paymentOptions, $select_option = 0) $invoice_country_code != 'SWE') { continue; } + if ($vars->var_name == 'vipps' && + empty($cart->qpPreview) && + $invoice_country_code != 'NOR') { + continue; + } if ($vars->var_name == 'viabill') { if (empty($cart->qpPreview) && $invoice_country_code != 'DNK') { @@ -2017,8 +2065,9 @@ public function hookPostUpdateOrderStatus($params) $this->getSetup(); $new_state = $params['newOrderStatus']; $order = new Order($params['id_order']); - $capture_statue = Configuration::get('_QUICKPAY_STATECAPTURE'); - if ($capture_statue == $new_state->id) { + $capture_state = Configuration::get('_QUICKPAY_STATECAPTURE'); + $capture_state2 = Configuration::get('_QUICKPAY_STATECAPTURE2'); + if ($capture_state == $new_state->id || $capture_state2 == $new_state->id) { $trans = Db::getInstance()->getRow( 'SELECT * FROM '._DB_PREFIX_.'quickpay_execution @@ -2060,7 +2109,15 @@ public function hookDisplayExpressCheckout($params) 'mobilepay_checkout' => 1 ); $payment_url = $this->getModuleLink('payment', $parms); - $this->context->smarty->assign('payment_url', $payment_url); + $mobilepay_url = $this->getModuleLink('mobilepay'); + $id_cms = (int)$this->getConf('_QUICKPAY_CMS_ID'); + $this->context->smarty->assign( + array( + 'payment_url' => $payment_url, + 'mobilepay_url' => $mobilepay_url, + 'id_cms' => $id_cms + ) + ); return $this->display(__FILE__, 'mobilepay.tpl'); } @@ -2269,6 +2326,43 @@ public function payment() Tools::redirect($vars->url, ''); } + public function mobilePay() + { + $cart = $this->context->cart; + $delivery_option = $cart->getDeliveryOption(); + $carrier = new Carrier((int)reset($delivery_option)); + $id_lang = (int)$cart->id_lang; + $prefix = $this->getConf('_QUICKPAY_ORDER_PREFIX'); + $order_id = $prefix.(int)$cart->id; + $id_cms = (int)$this->getConf('_QUICKPAY_CMS_ID'); + $links = CMS::getLinks( + Context::getContext()->language->id, + array($id_cms) + ); + $link = reset($links); + if (isset($link['link'])) { + $mobilepay_link = $link['link']; + } else { + $mobilepay_link = ''; + } + $parms = array( + 'option' => 'mobilepay', + 'order_id' => $order_id, + 'mobilepay_checkout' => 1 + ); + $payment_url = $this->getModuleLink('payment', $parms); + $this->context->smarty->assign( + array( + 'payment_url' => $payment_url, + 'mobilepay_link' => $mobilepay_link, + 'carrier_name' => $carrier->name, + 'carrier_delay' => $carrier->delay[$id_lang] + ) + ); + print $this->display(__FILE__, 'mobilepay.tpl'); + exit; + } + public function addCustomer($vars, &$cart) { $query = parse_url($vars->link->continue_url, PHP_URL_QUERY); diff --git a/translations/da.php b/translations/da.php index 64d8716..0cff328 100644 --- a/translations/da.php +++ b/translations/da.php @@ -24,8 +24,10 @@ $_MODULE['<{quickpay}prestashop>quickpay_6cc5efb2ee12dc9a1c8225192a04c034'] = 'Vis kortlogoer i bunden'; $_MODULE['<{quickpay}prestashop>quickpay_ec1dd175ee75fc15bdfa0c91e3b8c21e'] = 'Hæv betalinger automatisk'; $_MODULE['<{quickpay}prestashop>quickpay_e010c6bb4e58b15e80a756b6e1cc7153'] = 'Hæv betalinger med status'; +$_MODULE['<{quickpay}prestashop>quickpay_64239b51bbfa2d8240b873ac1adcc5e8'] = 'Alternativ status for hævning'; $_MODULE['<{quickpay}prestashop>quickpay_f2e386b59ed58fc5fbaf31a9cde29030'] = 'Tilpasning af betalingsvindue'; $_MODULE['<{quickpay}prestashop>quickpay_f056a0b69af5efd9c1e2b19b804c5b0a'] = 'Moms for kortgebyr'; +$_MODULE['<{quickpay}prestashop>quickpay_828749b7c6bd01f8013e94118a1128ee'] = 'Informationsside for MobilePay Checkout'; $_MODULE['<{quickpay}prestashop>quickpay_59269d41b8c2ec7d24a8787ff8f368ee'] = 'ViaBill - køb nu, betal når du vil'; $_MODULE['<{quickpay}prestashop>quickpay_3544cb7112990a6bc4bcb9554f4e52ca'] = 'Dankort'; $_MODULE['<{quickpay}prestashop>quickpay_e27edbd3f3b1ff46274adcb27fdc5e9b'] = 'Visa-kort'; @@ -39,6 +41,7 @@ $_MODULE['<{quickpay}prestashop>quickpay_9ae76b2ad5b437f8841291ed62fc2666'] = 'Forbrugsforeningen af 1886'; $_MODULE['<{quickpay}prestashop>quickpay_8cf5364c4259be0f1a5010e052991c0e'] = 'Diners Club'; $_MODULE['<{quickpay}prestashop>quickpay_53619d5dc16df90ad84a8958b7121aa8'] = 'JCB'; +$_MODULE['<{quickpay}prestashop>quickpay_9069b9b11960d45c4b94568779767f7f'] = 'Dankort (3D)'; $_MODULE['<{quickpay}prestashop>quickpay_d0dc13b1ecdc04488facfc385fdfea38'] = 'Visa-kort (3D)'; $_MODULE['<{quickpay}prestashop>quickpay_e913b0c4e7d93866e02b284d5c27f717'] = 'Visa Electron (3D)'; $_MODULE['<{quickpay}prestashop>quickpay_53ae753803c9b0e64b90b9baa218ac8b'] = 'MasterCard (3D)'; @@ -49,6 +52,8 @@ $_MODULE['<{quickpay}prestashop>quickpay_9ca50bdec53227b0e50ee53d20edcb4a'] = 'Sofort'; $_MODULE['<{quickpay}prestashop>quickpay_697abb9a95cfe2c76cc3b71312ea176a'] = 'Apple Pay'; $_MODULE['<{quickpay}prestashop>quickpay_d023ec040f79f1a9b2ac960b43785089'] = 'Bitcoin'; +$_MODULE['<{quickpay}prestashop>quickpay_1a0dce2f66c1b47b00ed1fea5684f1cc'] = 'Vipps'; +$_MODULE['<{quickpay}prestashop>quickpay_73cbeebc8ed290acfa64f9fe256fad3f'] = 'Resurs Bank'; $_MODULE['<{quickpay}prestashop>quickpay_2aaa3e8ae5da0cb963cd62087faf5566'] = 'Maestro'; $_MODULE['<{quickpay}prestashop>quickpay_c898cef7df11ef28c7331168af73c747'] = 'Dette modul forudsætter, at modulet til bagudkompatibilitet er installeret.'; $_MODULE['<{quickpay}prestashop>quickpay_d6968c7638f76436c16b71dbf420a3b3'] = 'Du kan hente modulet gratis fra'; @@ -125,6 +130,13 @@ $_MODULE['<{quickpay}prestashop>form_1908624a0bca678cd26b99bfd405324e'] = 'Filstørrelse'; $_MODULE['<{quickpay}prestashop>form_f2a6c498fb90ee345d997f888fce3b18'] = 'Slet'; $_MODULE['<{quickpay}prestashop>form_19f823c6453c2b1ffd09cb715214813d'] = 'Påkrævet felt'; +$_MODULE['<{quickpay}prestashop>fail17_5ac69d5fef49cbb623600e53de1aabc9'] = 'Problem med betaling'; +$_MODULE['<{quickpay}prestashop>fail17_2e2117b7c81aa9ea6931641ea2c6499f'] = 'Din ordre hos'; +$_MODULE['<{quickpay}prestashop>fail17_c24a90cdb8ea72327cfdb579eb431f4d'] = 'fejlede, fordi valutaen var blevet ændret.'; +$_MODULE['<{quickpay}prestashop>fail17_52184f2783945c4e31235e64973cc330'] = 'Læg venligst varerne i kurven igen.'; +$_MODULE['<{quickpay}prestashop>fail17_0db71da7150c27142eef9d22b843b4a9'] = 'Hvis du har spørgsmål eller ønsker yderligere information, kontakt da venligst vores'; +$_MODULE['<{quickpay}prestashop>fail17_64430ad2835be8ad60c59e7d44e4b0b1'] = 'kundeservice'; +$_MODULE['<{quickpay}prestashop>fail17_9a0712a287176b822b5aed1423972494'] = 'fejlede, fordi der blev benyttet et testkort som betaling.'; $_MODULE['<{quickpay}prestashop>fail_2e2117b7c81aa9ea6931641ea2c6499f'] = 'Din ordre hos'; $_MODULE['<{quickpay}prestashop>fail_c24a90cdb8ea72327cfdb579eb431f4d'] = 'fejlede, fordi valutaen var blevet ændret.'; $_MODULE['<{quickpay}prestashop>fail_52184f2783945c4e31235e64973cc330'] = 'Læg venligst varerne i kurven igen.'; @@ -150,4 +162,14 @@ $_MODULE['<{quickpay}prestashop>list_7acdf85c69cc3c5305456a293524386e'] = 'Skjult'; $_MODULE['<{quickpay}prestashop>list_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Aktiveret'; $_MODULE['<{quickpay}prestashop>list_b9f5c797ebbf55adccdd8539a65a0241'] = 'Deaktiveret'; +$_MODULE['<{quickpay}prestashop>mobilepay_ad88a6c9e8c880f23639321d78ec859d'] = 'Jeg accepterer handelsbetingelserne.'; +$_MODULE['<{quickpay}prestashop>mobilepay_af5479ae042d5839971b43f024693eb1'] = 'Læs mere om vores'; +$_MODULE['<{quickpay}prestashop>mobilepay_f4af8b5789576c000ce9105b25609bd6'] = 'betingelser'; +$_MODULE['<{quickpay}prestashop>mobilepay_f7cd9e59f2f6e354d66bacebb0f40d5a'] = 'Leveringsmetode:'; +$_MODULE['<{quickpay}prestashop>mobilepay_2a08bd3364d511e7573f0ebdbeda7c3d'] = 'Leveringstid:'; +$_MODULE['<{quickpay}prestashop>mobilepay_693a88377e00001606b66cf4f1fa5927'] = 'MobilePay Checkout'; +$_MODULE['<{quickpay}prestashop>mobilepay_c4408d335012a56ff58937d78050efad'] = 'Accepter'; +$_MODULE['<{quickpay}prestashop>mobilepay_ea4788705e6873b424c65e91c2846b19'] = 'Fortryd'; +$_MODULE['<{quickpay}prestashop>mobilepay_e4045598261988d9988c594243a9434d'] = 'Handelsbetingelser'; +$_MODULE['<{quickpay}prestashop>quickpay17_f73965f727d67bccbb4b1a96882c4552'] = 'Betal med kreditkort'; $_MODULE['<{quickpay}prestashop>quickpay_f73965f727d67bccbb4b1a96882c4552'] = 'Betal med betalingskort'; diff --git a/views/css/front.css b/views/css/front.css index 4680d86..55530f7 100644 --- a/views/css/front.css +++ b/views/css/front.css @@ -25,3 +25,13 @@ p.payment_module.quickpay a:after { width: 14px; color: #777; } +a.mobilepay-checkout img { + height: 20px; +} + +.mobilepay-confirm .ui-icon { + display: inline-block; + float: left; + margin-top: 2px; + margin-right: 2px; +} diff --git a/views/css/front15.css b/views/css/front15.css index d9ecd7e..3baf62f 100644 --- a/views/css/front15.css +++ b/views/css/front15.css @@ -11,3 +11,10 @@ p.payment_module.quickpay a { p.payment_module.quickpay img { margin: 1px 2px 1px 0px; } + +.mobilepay-confirm span.ui-icon { + display: inline-block; + float: left; + margin-top: 0px; + margin-right: 2px; +} diff --git a/views/img/dk_3d.png b/views/img/dk_3d.png new file mode 100644 index 0000000000000000000000000000000000000000..b5aa83954e699781eb4abd91b0094dbcf37d411e GIT binary patch literal 1842 zcmV-22hI42P)RA00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmYE+YT{E+YYWr9XB6000McNliru;t2^79WL8gD<1#=2ER!} zK~!ko-CAjER8Kw{lMOcX_h5Q7>OHAIuTi%TMi3l*^_ zZc(5Jky>$yRYaj;zy%aU5vvFUT8%|0ooe@)=`3$K{+NoC4(+^owbY(u{>D&K&%T^hZ6lcbdNUE1)VI-(%LGBB51F3*<9F+N1*L7-Yh!|I zH&zi*-)63^fx`;)mR7L8BXSnj0i9t6eBsW3u*6;SSw1)aqKp;Gx1A6aW=;Wc7(nuW zetUOxKyPk==4n9q$13)fy-jM(Zy<*ww*Lo$NW6I_oJ&f~ZbfN-@%ht-%z608i9p#2 zVEoA{gTYOoQ`^Glpw#>Zl6#20uEQ~HD$-tk!L-x1XBNY^Y}G#Nc?IXVD=HWOq+UIDS%q##b9Efrv_1Ogx z8rO7KMw|)Phwt>wE%SOA$YJmPV@SQ_pG+CqA8ZqkSw;*8SuC)O9tHR24S>aB4v>Y5 z;eDmFQ!hoS^kHR8%e)6uWdH?+n>*G4RgF!o2|2=Xap)f5bVAB>!~OC5rU7n!qBxQv z2|ZB0&InX~a~CmlDS$f+Ie6?z_)1szu1pyqn-%iu!;mufAvms_V*E6k7M+C*Wk?Bp zOIHE1)cbyu?0blrzXveEh?B!Pc|GfhXi?8dN9MO*bS-ZEU~R>V;C*E|C?O%%R-{b; z$Ti}mevB^$XUApkZPp)^1u55$YwLVK`A{Ako$Ko zl{D){NZCUT7BXQKhN2w`LD_%6`0jKa*70LOmi`5W91gfYTW7q$189kLap02;(A(PM zX_1k-Xo2xgt-1#4fofC02&WSn73E+>jWK{67658vXPsg|Rl&hv@1H;r&@@=`^Wfg} z3CM0Ye4y~IDl}X=62VzsaR`aD0WI#RcMC}#jZE37D$aF*-2JkX+6uiJ8v=up0yHk;R`^Ooy`XK$i_WUn)VujA`bE zHj08jFP#eY_k&S^NxE(NQ0nZGy#NNxfZAX77Fy>m=%!>@RpEO7P1w#aH0K~3M*Z0H zq5J$@*~)JHC8v6K!9P$vG*AEue*Ps|9+@9i+LJ7!`OZ1ujt+B9tX5>aR|crc@!yvn zou?2{DFDyO1|+b)5{)<9)+1Bt%`Iq{bcOj2{G3t9sCesNMj}GutZ6HbpS(SNvcS;l z>d<)Yjc6``U&rpd z>sTOn#6%8iUm;dm9GmCPfs+79!t{KkTlcMV+)-mzFB{f$WYh7%>}K_a7f#XYo7Y3v zB@9+0f}EQ(EAy+(<wN?mf7730m@)@VB gaj#oz_(j0K0U6M@8`3$nlK=n!07*qoM6N<$g1`l4i~s-t literal 0 HcmV?d00001 diff --git a/views/img/maestro.png b/views/img/maestro.png index 877da8b5f8efa3e24550830a4e1d22af06fb85de..98b8b49c8db76ff374ce837b44c0bf90f4f76cf6 100644 GIT binary patch literal 1530 zcmVjTS`Ktf`1&2vQ zK~!ko#hO`cRAm&$fA^cVGab4!EN!W`Ov9B>L6!#;3KUdqj2IH*0}`v3V0>v@5)w2< zqYoxNC<(?FV|2s~eKHtGP^n?FYyq^`6b89viUqV&XeqRJ*6YKaX{JM$nKEDeKiy>J zJLmkrbIy0pwz~8_*;0SOQxTu=Jp~P5JGdN0~*XPI3 zwdA)Os7uIQ1uO(=fMOsH^Z{MK8Q>sr9=K%a+9)}bLCKQvCSV6p4mdL$76n4U*FcME z2BWFulg4^|et?gG%|H>5m!bR+5Cq;dbZuAqMBWqefXnk7@GdZyd&dXBJE|GHlQ6Oj zcpccD1KC%Aw+&tUVzLQP#wI!g)$AqU@{|H?zyflN{Ai@1;nP$7z)8TJWAUef6^5>b z$0IMs@NSayqrfF8q$4ILAAaWGvTMD6#uX*kqyd%z|9XA?hf>lg6OVgVCKe_|f>E@s zX{LQ~69thFot|<|RnC;7$VQW)Yd@uXUKxY*dSJf{(s|J^CmJ?!cG(6L%d!oyEV{}| zIZ{)Ff+d4^99UxLTKl*j54b#KiSVw-wRXj_xUgU~txYWygof_={b)@kMtLd1vSfL_ z76>H0o}S}pWsn9Kc9(FxVe^=z0U8566h$IP#IDqQ7b)I;Au%gCM?rX))}|K11%=}m zdm&iWeN|?zukrf)FC{&$q!7OfRLaoUUAvh5Pi?~yo!FzoviMQ+a?@2HYXV}xbYMUv zNVmu$4GJ9(uAh`NfTbujcJ~k!LYCJZz(zyY5CNA*0B_0C6wP;XwR(O=|FwWpGsNsW z!!mPyTQbMz0i`lDh**@)`nALy`I*O}qEK^dP$uyQygq-80P3^YaAX%(@hBaO9z(=q zS&f@9G>nB*Y!Sd(S<;8xW!x^FKGLjYit^zQD2hzt8w9XKmh{^toHtw*>IJEa}CA!70V;P<}pfx#g@!0KdwTUU;XU zqQO3_EJ@sSIYDkY+be($AS~tRLpZ2E_X}~6m({r5X@#=aw$B9cm#hUY?#N?7`vF8e zn)zyLSzIY8l1aM5(6w%%n!yf3)N=9oO(70crAeN{N(acSEJV2{`5A9d!oU6!^w|8eGA>A+INB)RRT-{q8<->(|F z)@SINt>dz5I<;mW0hi|jpvll^78dhe^M~W^%@tseHkVt@0$HSw8M?N@>+??oqUp!W zg}`;7B_-#!y?Mt3OvFtp~i^u8oRB)ntmMp?CpwZB^qv^f6Jsmb_R5RELtV|5ZDI)n! zmLJ`X+I40m-!FJ7Xqz)z<|_VtI_Xiw0aSB@d|QHi&Kny`2p-?NgXL}CbGm9K$Es)H zkkh5bfK`UBeUr_lVR916fL83+3AsdXg&EvB|I15ZXDs#=;K{N4KY(?HuHBeuTY48# zJl_v22cFEKQ6B;Gis8qe=DPjZ&ph7Gk?e57)}@B7-5AT$6B197PadSGW^kWs1{L6C z?1uu`q6_<(M~!L*Us28A06?8>m}%(R8-NPzOtjG1;yCac;5Kw^ANCFDgwH`T?iB(q zPiizcfMV!Z literal 3654 zcmV-M4!QA(P)a$$63WFTUBAV*M4AV+9# zb98fKa%pgMASh&Ic4=c}J#cPqa$$EV3I`|7@Bjb}ut`KgR9J`+W;yVL9{i4!3i!guAuQ4mobisag3UoM2#bHGAC+0(ael`jN>>u(TN!M zHPNV1+=&P-?6Ncn-7HP--FN+}-udI+#zsUN=RMya_td@h)>Cz#dfw%enwkeXJ98qU z$`_b`5kZhagNmYf_~Q8pYET()HsGN2h~LZa=UFhMUl{@L4(GJI${-{NSd2x$eKvH9 z2ONPT0%jlB9zsJ=z?HxK|9~#TEdVB65uG+HI;keon3AYPQRl<${e=x(g*EN2y$3)d z7#R%R;uUcuK&t7QMax0#nm|W_q9P%tnVMCMT+XOn)PfOm2LJic_YYb?488yoKYVO@ z{**-1=%79((SgG)nMXrhTQRqMNAFV`vWqusn8(CWMAhIOaf6%3stZ{@j}0T}f)E(= zcL~@YDqmy#z07=ugF}**tOwl>VdS$pErKY%5SuZ&_D6>$zE&?0G>aA$j}D?onc@*K z2~ct$bavjlEc4nXBStiE#ExR!&HU*oHYiSrdhEX3HK@TU1wmFY?i!B!12YT-@SjQa z&jKw19?_ah53jl85Q*Y@6$K;vy($V`0jUryeT&xbzUdvwgg40ZSLvSx=ZGs}@%wim z4iPZq1%EF`UB>AdB8GzBhbsGk7D1iFZQU*N(x;4Z9f}7#)O(Fr)p7nRaQ9FhZ!hk(9iOge=NTB$bVKZSemO$ex$m>qfBajBEXgl!(=01$%+VZ_v| z?RomvOHSZb@0~@5ju}8ai|>604{ENVYCwW)T@YeGq7C z@VUzG%&56+hHv*ozF03mWug?L5-)_E)zxn|&HQNcq*v!0R@EIIzWh}+(IG^yz09IT zV&iE^;s3-8OJR?g3`m{`t{9B2t-XAv_JciO#K!wWgLs^)a8{pFVzpdBd4cKHRXgMN|V9TIZvM zLOhq-HGDLL)o0)*iZp(`S|Be`@56H1323~Z^G{M)g1WYl%4SSbw^ zpg$~!zqG*^dK^Ushzb>h7$n|j6Xu9z%m4br_ww;Xi43Jp8SncmQazPbU_j82uoDET zpro++$%j4nZO{d9NI?E9K3KwJgYE$hnB<&B2I7xEUYQcr6Glj=WIT^`(d+!Tt7LRs zEUeD*QZEr9R0N_1qg?&(*EGHRf;ZOqeaR3YHOA+{>f!dnA4oRGJ&SxHH0luppbi_s zJ2V6^5h(wg28CcA8!VX+BOo=k4|H~9O+{?X)ANH-Ni8Ty5M@_u_R>u)H+*jrsvV)s zX(sl3^PA^2#A{*#ziH?`O5QQf3`A^3bb1#tCBMGcq$AvKD^|f z+lOynasStUeD>n&A|I~SLyr^9W0Ux-g2XGy>?BCLRJC|Dy*oi5fqDf&3)n-r;v?z} z#XtmbK|{(8OK1opcqJl!NB^{x0QsCViJ)&w?|0&1q9)dt_oiGVcC`!Nb z$1bkh5!`p$Nte}eNt%($YT>#Lp6%kIYA&c{g7c|`XLbMdmR!q-2ry%6;f8BAE?z(V z!GH00|K7|!+$~C?sw{GbhH??~7>bCPvtlP4+KVc=+klgzG=0s(j6H-;$o!1Z?g$eQUbk z``YQ#Yiit&FYZ<8Xeo}n{CgUYKK?@6=n>JT6XxoDcgUPmODU78fN!9Oa()7!CK-_k zrEn`ybky`@rcX|<-qg2oTPCl3Ga8PaT=mS$+pAK+4%qZpbvGnyUl?A!rKV!Th8|$_ zy0&wNTaahtl}{Gq>o#XcS!sNyC6bO8irn2WVeL)-+WX>D!;hK{NFFN_TKwMaQx9XoxiBRfHWPdQzk(UF$$oyWJ|hMzKH5QI-qn$av7$m ziw;YySl^lJEFLfXaDL;Ou5d#~F;*E}+V1B~t@xj*)ixLQPPB>P383&%=h(T!QLY`W z*IhZ0-okFj3vKT4yVuVD{Y7(pm`PKo)B$5}SvWIWT|2%C zsCex6r?Pfic4cQsMKT~B8=Q8B*s^GpC9Ain`I7En0t#LEiBW)6p>*avP%|>|;F?TL zJODNt)xnaV>wbQQOaO%t5UH>?H!Am_y z&tKfOwV!Vs+kVb@^|ivbRyMBd{>qdQ;{rN6cyDc6#aGk=m{er}4*J%th9rF4BF&p1 zS|SIqi)3jJ0jgkJTgGRd#4MpoMBMJotZ_+Ttq;ChP@o^4*qHg%ge0)~t=1FI9uLev zdE|`?Mh=V846ko5u3EnPpr(<(UN~)OP7Y47sySboCiUaiQ4_}aUm=dtwmA3XBxU$X7v#j>>CXHM%?<c+B=TR`ntF{T;QbAV0kNkmltN z{O9>=82?c6s0pLuO)X0n7aN_8UJ$;M@Oi{<(A0x=cF;I(R4g}b`-+)8%OfTM0p2;p zl7E9KbGSq(4hCIJ9y4Lo-Sd2}A|g>pqB+Q6(x{-lNDSiT!Jvw~M+?LwIE(c7p13*X zjo0qF=HkvErp^amt)NlsiY_!kypXSK?^5wX7WEJZ2Obh2ieQ|O$9wP)!6tDY6ePq1 z^#6qUzvkG0{ty$Ca}t8=TP=lk-H{1ZnpZ7Au9Pf@?=I&`no}|$f+6hGKtKp{l*-3M zktNd(eXo9U!_Mt42tZYlP&H!3hjs1SAgXGeREoi<_bLb$MO9Gmt&<88K?g$7Hv!+ru9rx5FX zXl?qm$?+M(e4idrX;`u#^!cbc>+z>1Z~UmQB5j=$)HwIu2kwN#m#70g5>VX2$kmJ( z%eIdhR?5)!WO<4aEf(8vcze|SCrV({^Ce1wFhWnd`m(!z26;t<7>G(GL=Lpv0z4QB z|HP>sBr7QH0W_#aRIowV+UYyPiW3_(H<0EI*;FJ})Kyc*zjee3Z_hsQf6w}1L+kFw z?c3GFL=Wtk6+%pezMDDzHs)@nY8NR8OSt#0##OOFenqQhOvSMcS_H=d)zK;v&-u;c z>X*!&e#Y}Joc+*mL!$No5qrcV5&G`o>zA>h)M{c+n(^tr2jCPN>$-bs+to|NU{a!? ze!8^UFJvWDjhjkq&CgbLUB4J{0r?O!#5S%+Laa~>$lb(=7jc%Mpr}U%BiQ?-%WH!T z@+(_1Z|;mvuZvDhfKb$O%Vl4}D0o%HM8#A|xHY@u>en+5z5k~D>dQLuNVe6{21W_o z0Q9{Z+@+qFQN$2hGOdjGJI=m?xt6@5`YVA(Nfj70j~2lX zl(hm@BtT+d2tUsEJi4y?{ttb3KQ?BabHo$m|A9At#M@)orKk{q^%yNT160cHiUMs6 zyNlWX#?hTrSu*=;`0gJxB{q9}K@!R2*BX=G7#E*0BB-yBq>(6qhG<4zdp5taEwgxQ z|Kg8*R}T_FY-v{(uUJn!MbGi9TfnL&wl>lekRNC&SVyFl%4LjxifKQu$K~m7nKA zDD@RAjTS`Ktf`1&2vQ zK~!ko#hO`cRAm&$fA^cVGab4!EN!W`Ov9B>L6!#;3KUdqj2IH*0}`v3V0>v@5)w2< zqYoxNC<(?FV|2s~eKHtGP^n?FYyq^`6b89viUqV&XeqRJ*6YKaX{JM$nKEDeKiy>J zJLmkrbIy0pwz~8_*;0SOQxTu=Jp~P5JGdN0~*XPI3 zwdA)Os7uIQ1uO(=fMOsH^Z{MK8Q>sr9=K%a+9)}bLCKQvCSV6p4mdL$76n4U*FcME z2BWFulg4^|et?gG%|H>5m!bR+5Cq;dbZuAqMBWqefXnk7@GdZyd&dXBJE|GHlQ6Oj zcpccD1KC%Aw+&tUVzLQP#wI!g)$AqU@{|H?zyflN{Ai@1;nP$7z)8TJWAUef6^5>b z$0IMs@NSayqrfF8q$4ILAAaWGvTMD6#uX*kqyd%z|9XA?hf>lg6OVgVCKe_|f>E@s zX{LQ~69thFot|<|RnC;7$VQW)Yd@uXUKxY*dSJf{(s|J^CmJ?!cG(6L%d!oyEV{}| zIZ{)Ff+d4^99UxLTKl*j54b#KiSVw-wRXj_xUgU~txYWygof_={b)@kMtLd1vSfL_ z76>H0o}S}pWsn9Kc9(FxVe^=z0U8566h$IP#IDqQ7b)I;Au%gCM?rX))}|K11%=}m zdm&iWeN|?zukrf)FC{&$q!7OfRLaoUUAvh5Pi?~yo!FzoviMQ+a?@2HYXV}xbYMUv zNVmu$4GJ9(uAh`NfTbujcJ~k!LYCJZz(zyY5CNA*0B_0C6wP;XwR(O=|FwWpGsNsW z!!mPyTQbMz0i`lDh**@)`nALy`I*O}qEK^dP$uyQygq-80P3^YaAX%(@hBaO9z(=q zS&f@9G>nB*Y!Sd(S<;8xW!x^FKGLjYit^zQD2hzt8w9XKmh{^toHtw*>IJEa}CA!70V;P<}pfx#g@!0KdwTUU;XU zqQO3_EJ@sSIYDkY+be($AS~tRLpZ2E_X}~6m({r5X@#=aw$B9cm#hUY?#N?7`vF8e zn)zyLSzIY8l1aM5(6w%%n!yf3)N=9oO(70crAeN{N(acSEJV2{`5A9d!oU6!^w|8eGA>A+INB)RRT-{q8<->(|F z)@SINt>dz5I<;mW0hi|jpvll^78dhe^M~W^%@tseHkVt@0$HSw8M?N@>+??oqUp!W zg}`;7B_-#!y?Mt3OvFtp~i^u8oRB)ntmMp?CpwZB^qv^f6Jsmb_R5RELtV|5ZDI)n! zmLJ`X+I40m-!FJ7Xqz)z<|_VtI_Xiw0aSB@d|QHi&Kny`2p-?NgXL}CbGm9K$Es)H zkkh5bfK`UBeUr_lVR916fL83+3AsdXg&EvB|I15ZXDs#=;K{N4KY(?HuHBeuTY48# zJl_v22cFEKQ6B;Gis8qe=DPjZ&ph7Gk?e57)}@B7-5AT$6B197PadSGW^kWs1{L6C z?1uu`q6_<(M~!L*Us28A06?8>m}%(R8-NPzOtjG1;yCac;5Kw^ANCFDgwH`T?iB(q zPiizcfMV!Z literal 3654 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 literal 3580 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 CryV{3 diff --git a/views/img/mobilepay_white.png b/views/img/mobilepay_white.png new file mode 100644 index 0000000000000000000000000000000000000000..ed755f8c29ba2169c7c531b8f5193af368ea32b6 GIT binary patch literal 2410 zcmV-w36=JVP)mL^bBMMNR}P+Qw3 zZ77KiX<`a#X`z9VVEE`tlvaan45Fl^7_1aDD7y;oE<3x+?9A*AJG=Yly}7^s@$Oq5 z!+y-n?#>4%+3bDu-o5wye)rsS?z`_EU;>5YwIqK|@*R>%l0763kz7tv;Yt>gcaYpo z(&q4TfaFzI8t__@t4W?@_Okm*0sncDe=w##l(dmtM{_+ONj8v74FmoI zl0PI_n`L_z$xj0He^si$Cy`u5^1Wez+lH9C^KAc@B zGmh?>vGkKna(c>kY}-z;zu%_aXFpg9;J--n@G!vBCa!;TJQq0w1NMu3$pQBE_A`;_ zd$ZUCJUGn4riWS_@ z7EOH673pTAGtNk7_m*Ojuq6OKM)KZ5_8*DFpXvxl8E)%hxHZxfiA3r~(Dg==kCNO> z@^zApMrU6JO!!`zD+$ekMxHG6AjD#^$*nD&y)B<~@a&m(HlOYIQ9!q=Nj^^UuO!=Z zSdKT6lx%fS0Hz17j})4O`uh4Ft@TT(lnd8!;n>b<;@DPA$IW#*Lz&*KG zLO8(SvSLih=H|$vrqkybIUi>#<#3#2e=a1v5UBW%LKBcoCKvYi*}Db?Qrfm1I*v=N z^>~orlDs}!626-8;&Wpmz(=FencdyVmoFreO!oGB3nn|oRLY_2rkM>7T5IaGW;&f_ zI<1*@)BXySsgy(8c7BtME@FsyAAldDpBIs5CNLVQ?r35S1Qcz04QUawE zL&z%4$%8o0O#>;sF&UP(%EO2*ksF322W^Lxu-n@R`hOX#Mb~rcU0O4GEJ0v;pw9 zyB-md9pgzrxV7tk4ek)ZWTiX;1_3KCnt7wIASSper2sJl8vseI0f=V>n#M9bW-gWu z3BcRePOD!sDhZ~-RsgHa<#7>NI8Np-&1XB;i{KX?ZUanUNKl>&6+j!ST-bl0l@zP_ihuBV`C-Y1p7 zc?7_h%ui1M$eV<9>(;5$r&@L@ODz-aIX0gJ0RUwjof6d6)}Xeo236ISG(t1Bzs^jH>LoXGS{ zAHeL-Oh;u^No*#qxnu}LBn99vfuEkpXA@=N!ntp`Zu$%fXlgI41;f^5Hds^{()0WY zK-!e&L4`|+epTTSkab+C1g6tJ4oJ~`;=JRmvY>Fmsvx(kRT#Q0sMEY)*!Ch2tWskKp9yA z%x^~G=uS4|fuoM(T9WtWL&DOG54iJ+;mmqs zz28mrB$?<*vbVS2P9~Gn3lSasaQPO1_xwu$tBXNG)0q$VDNBVbLKZBgDl1gQ%7Q9D za!tS*;>9|$Z`;m#+fFfMJ4~hAmR$VGc#u$+ajJb~F-S-zIm30+sdQTV=NaxRv^D%O zK*I52Ep$k}ShSNiCeI;wo@7apNVuyQCvAcX1djplED{Mq@>D>N^@UboS)lWNl2eOB z#LohH9G>tHnISI$=rrYO0FM;OH8cgvR~M87^8q*bed6&VrTX0-e6=WsDb6xy27UQ@ z0sB@YA2TULzWlgYVQPOsiB}8IUp>jENj7D?5w>QVf;16IeJvwFWcCF0b1TUmL!>77 zuj02BZD+=Wsm6dp8^*Ei8j{~9d2EENoQ8=aK38R*3MdvCYr=?0M%iH68cO0MH-S zi$-~Vkx4)78zF<`S(5cACn5QE0L0&hxL<2hdQJ=j+#$Koq#y{&QAmC#1JoXpcapq^ z|D0dYnFvx2djJ3c07*qoM6N<$g0J>z2LJ#7 literal 0 HcmV?d00001 diff --git a/views/img/resurs.png b/views/img/resurs.png new file mode 100644 index 0000000000000000000000000000000000000000..5ac67e6c090b3b76bc60341e67232ac26da3ba6f GIT binary patch literal 751 zcmV1ONfKm+q*5iqx!-{g#1ctXFR+Q864|;W0|KVdX zJe~+vk@nymR_czfVmY3Rp+3qgD>io#3O>co@eF-ED}U8}{W9_L7v&FFm;l&(MfqcO z$BMEC7tt>b-7{u>j)29|(QKK4yuNg^5(4YRiX3aDr&T$=N)W6+uZz6Yv^cLT&(yRa zm!`5D!wG`j&T&0Ku$y`9W>VAT948Y5JD=Be(Bp)lp5d`Wk9dmEXN4{9?q&_y%Sk5MtaW#4Av0Y2<7)Ke@J z!*FB68^Z{`!)S-Wwu@odvF3(%yu-6j)!XWXHj3fIo6VJp)x~&&BZfb)zW%37l}50w z5!AbyDmCQbOtRBckPuh!jTnZSebBfbtDuNWN5rraKjFrE0J?)cV)#r9LyE!X1=*yg zEy^9(kGYcsdW2nKIH;*yrjy#TBbxEO7O|Ed50002ovPDHLkV1mG_TXg^c literal 0 HcmV?d00001 diff --git a/views/img/vipps.png b/views/img/vipps.png new file mode 100644 index 0000000000000000000000000000000000000000..dd848924b8fcfbed45c2caaf4bc1506f7caa6389 GIT binary patch literal 3099 zcmV+$4CM2PP)e?3#6L;(>Kjj~8&4rak1F)AhsVit|yiAqciiDq-jF;WBN7FUcI z7bu`mNz|Me4iUGg39fil77Y@2kQhZ!5j6o>XF$-Y?#>^t8k(kG^?Uu^3_7R3bLNQs z>fO3k_0_F=Z&kgFkg6we7?5XsEU-quN0ks#4F>iq`MJd!JyS@9HJY?gkSC-%9T)@j z1KtLv0Dl1T)z&AZ8U*ZH^7DFY^b=+3-xoLm_#V(7*c-?ItASU6CxFMT(JvOiSEXJ( zfkR7v{>U2rV39tB|8{XY4F|pk><4rN)&om`r+~+-(Q^Rm&sAh^sD6BQ9X*;YlO`4P z><=6Xd;@3z_5dvK0q_R!EbtQKp0j4s4tKj0W+=9xsIdGiD170@G}$+u)DPpoE4t_3cva!7N)i@;#u!#ZH9 zr|{)*$mz%eaBN7Cb=K%vMdcF14eT)$ij5$B{7y*qnp>*6R4LZd^1JC7BS zDoyNCssCsl^aFNJD5DqfR>5aX3Ht+|O(^3t&TsA&MK7oSLBOw5YQsu^I%{+m_^qel zi7_l_2Kc?F$l0w#l*cPPpCuX%c-cz^kH=R7f>DWs;U+Gq4O;1S|%k1iBIUn;};4)yQbDwe{~4vqs-1t; z-Lf4)osx@zcS9-}7GVbU4_PKi7}dok>Sk;7QfqV*K-NrX&FY@DMqd^uP2?u3&*eD7 zn(>Ld0XQj&Ue;*p8x_{*rNDWfqE`#4>O9ZGEb!Svs?HI!F=c&>;xxfTV04%Xw?;4b zSkSOUc_C6=(aM%AbyUcM0vrsy95aUr!4BI8p25mQSgow5$S`a4LshnUlUs$#p%3tO zx%Rrm{F0FOT7W^oLTj{*n{z5Qx4xZ_J3Ni5^N{leYxJj%oDuN6HTvba?Q;FR+C}P95#aQYcQyda+aQYG8F(#WyB_pB>y<$6%mn^>!4ig{uaDf;=u?5^5vs}% zY;rU@t2$puHL{##tt&GV<^s(jf^RFM*e(R8Rm$N;7hShUf;Ly%uKHjw*LaF_PN3Ja zgzehodDhKGZbz*BeeO#L1_6H+Qf(Ac4J_WU2#d?aD=o#I4Z>0>8nZTMcsoUJz1URUm0yh#&H#N5~0TqY;f;(5qj8pZ1Mk0ZAC@+q`%w zf!zIFWW1r86qt}|h^NSNRRmpyf3F4p;r>n&QVl0K;O(pLYM;Nd!84O*03SK$Hq^>i zn5pjHW7?EeDP|N76jBYUMxKyrAK(j~fqg5XZr_ee&Z2hs(qHeUI1~?9qmL%owAc{V z$90}g%2!av<`jv$ejR#JDK(Ro4()5h{oM>M97i*^_b#!)?~+rmz|86x$QH3s@keS|X&nWP7Wc zj+N^mx7%9oEu^|fNYxD7h&!>J5Ceo%)8mj-NOhJcumt#XN*tIQMXy3138@Yz{IC!B z_vs5V>fPk8kK+PZqZfq~X^E1OxHCql%FB zJl3rgIQoZPc zlTf0zmVUOJYbDAy2TAzH{grF-wR}^kQrDU#ZuuvEK-W|-HP>rHF}F9Ojn>c!PV@+72Y@2 z=*9{g>=shL*__lj;?Tpj)GpbI&Jx!+3TEB9DW-5X^O- z=t%Yxhqwf7L%m`V^wW&G8Vzfx5wwOHY6PvJM$j5+s1dY=2*}k4S_1?-Pfd;x#eaEX pUVlgv?zGtBW%SAt99?WT_&)}T<=G)h?pFW+002ovPDHLkV1g^9y!-$F literal 0 HcmV?d00001 diff --git a/views/img/visa_3d.png b/views/img/visa_3d.png index 106bfb8db01a8e3f26084ac445766c73346ea881..ea05df34dcf23a9ca92f66a3da693f653f312934 100644 GIT binary patch delta 1552 zcmV+r2JiX97NHD~B!32COGiWi{{a60|De66lK=n!32;bRa{vGh*8l(w*8xH(n|J^K z00(qQO+^Rd2?+@@5pPj)-T(jvu1Q2eRA}Dqm}zWORTRg6)9G~DDMP0VbfqjUrIZ%2 zV5OiCD2PBRhA1E|{eVV7Of(^4jETVn6oMbb2reOFB%(1IB!9{x)B;j0g%&6UI$db# zGTmmnO_%Akoq2vJy?w7UEG-yGI``8%=iKG|@BN>1?z<}1eJ3$Wno6azcrl7v&={Yf zQ3V*l1K0!D1K0!D1Nf1y#ZIR*iY^|Qy;Z75&oN1Y|H?0KcS^Ihn>{CtI(~uAuKw4rr+twtzY(S&6n;nM>scG&Ky3aFG2s8K%AMm)bzHEJA7B$UX z>^^pbFHaWJY3~#ErVcyVTbH|x+x7c3F5hYv@|N^O0Dq2NF;U&r34liJrEuzafr*U0 z*)&?a6?3)QddV%bP}AJS_O;0hn^Tflu_KfGiYA4AUFsxOr%W7q(uxYwvFqhI6zqIX zaUwY-jnv9^7NDTASphaCR8LxBIGy%BYMMKRJ~m8`M%};cx#C7veVXM0R^AfbFzIk! zwF_8)^M7TQkx_bRiwV^e5$GpQ$tl6lxwm*{d4lM(|4f-;%$sR(c&StvYuk`V#q`KQ z09y{`)6?e^^7{Ex*pfbjKz}Wz^;V8tt|8nFMfaXGy7lvXsrlgm21rW`Cs($ES=Z|X z;9iH5gXb!QO{-Cpu`m{Z;@URFJkuis0I>Hu$bT&}%QGlnzn;n%-+q^(L;Oig40rLP ztiGMUuGI-y@28>N)(b#hxrJVbQ!wa(>hRFTuU55+?>{cpV3yJH#V02+eyndl;5w@k za6~^~hf{LN%wPOjbWcC_oG=Q;c&k->@cc|+v-LQ*TGjG!E*|sZ#^dLs7P3VKaR2Ec zbbnqlO?(?o$`g*ieZo4eH}m4gD{SxobcuN%9woD|&aDq!_CCHpdsE2IJ{HO9l;~m6 z`o01CYSan`yL$SlZt9?+&BpNplh7wb8JI8YXOvM|rGjbU0Yd(2!(2iGlrfr9YG&!j zCs?sF6HB{YVf*1+In5n|x{L*}Obr{Wn13Vp9*JvMS4%mqB?$_vS~+mGoLS*LA;~IE zAsbCrw+YKBNpy7gG1gBrsoIuizh^{<$s&35{3Tl z<?+SExdeT!=cDIGjU%edQ@ zk%G#Wd;PbvX=yw=UYgC3%QaLqb_m~j_l$FAupR5iB7AW%7515ASv2F68($D%QEzaMX?0vH2huEfU&j>v$Y$&pN0v+ z{-jPF$E#1rFf%%^|3+8Y!jhyxR;`&k$*oTdr-v%~)wkN*0#-@V=y~w~%-%4X@TySt z9E=z}h00{s|MNUMnLSTa4 CI{7#N delta 2876 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 a|MhopkeM/g, ''); + mobilepay.function(); + }); + }); + + $(window).resize(function() { + if (mobilepay.dialog === undefined) + return; + if (!mobilepay.dialog.dialog('isOpen')) + return; + if (mobilepay.width == $(window).width()) + return; + if (mobilepay.height == $(window).height()) + return; + mobilepay.dialog.remove(); + mobilepay.function(); + }); +}); diff --git a/views/templates/front/fail17.tpl b/views/templates/front/fail17.tpl new file mode 100644 index 0000000..26bceea --- /dev/null +++ b/views/templates/front/fail17.tpl @@ -0,0 +1,34 @@ +{* +* NOTICE OF LICENSE +* $Date: 2018/06/09 10:40:37 $ +* Written by Kjeld Borch Egevang +* E-mail: helpdesk@quickpay.net +*} + +{extends file='customer/page.tpl'} + +{block name='page_title'} + {l s='Payment problem' mod='quickpay'} +{/block} + +{block name='page_content'} + +{if $status == 'currency'} +

{l s='Your order on' mod='quickpay'} {$shop_name|escape:'htmlall':'UTF-8'} {l s='failed because the currency was changed.' mod='quickpay'} +

+
+ {l s='Please fill the cart again.' mod='quickpay'} +

{l s='For any questions or for further information, please contact our' mod='quickpay'} {l s='customer support' mod='quickpay'}. +
+{/if} + +{if $status == 'test'} +

{l s='Your order on' mod='quickpay'} {$shop_name|escape:'htmlall':'UTF-8'} {l s='failed because a test card was used for payment.' mod='quickpay'} +

+
+ {l s='Please fill the cart again.' mod='quickpay'} +

{l s='For any questions or for further information, please contact our' mod='quickpay'} {l s='customer support' mod='quickpay'}. +
+{/if} + +{/block} diff --git a/views/templates/hook/mobilepay.tpl b/views/templates/hook/mobilepay.tpl new file mode 100644 index 0000000..698025b --- /dev/null +++ b/views/templates/hook/mobilepay.tpl @@ -0,0 +1,68 @@ +{* +* NOTICE OF LICENSE +* $Date: 2019/06/23 05:15:20 $ +* Written by Kjeld Borch Egevang +* E-mail: helpdesk@quickpay.net +*} + +{if isset($mobilepay_link)} +
+ +

+ {l s='I agree to the terms of service and will adhere to them unconditionally.' mod='quickpay'} +

+ {if $mobilepay_link} +

+ {l s='Read more about our' mod='quickpay'} + {l s='policy' mod='quickpay'}. +

+ {/if} + {if $carrier_name} +

+ {l s='Delivery method:' mod='quickpay'} +
+ {$carrier_name|escape:'javascript':'UTF-8'} +
+ {l s='Delivery time:' mod='quickpay'} + {$carrier_delay|escape:'javascript':'UTF-8'} +

+ {/if} +
+{/if} + +{if isset($mobilepay_url)} +{if $smarty.const._PS_VERSION_ >= 1.7} +
+
+ + {l s='MobilePay Checkout' mod='quickpay'} + MobilePay Checkout + +{elseif $smarty.const._PS_VERSION_ >= 1.6} + + + {l s='MobilePay Checkout' mod='quickpay'} + MobilePay Checkout + + +
+
+{else} + + + MobilePay Checkout + + +
+
+{/if} + + +{/if}