' . $lang['Link to documentation'] . ''; } private static function isConfiguredForSuffix($suffix) { if ((int) Configuration::get('P24_MERCHANT_ID' . $suffix) <= 0) { return false; } elseif ((int) Configuration::get('P24_SHOP_ID' . $suffix) <= 0) { return false; } elseif (empty(Configuration::get('P24_SALT' . $suffix))) { return false; } return true; } /** * Display P24 form. * * @param array $lang Array of translations * * @return string * * @throws Exception */ public function displayForm($lang) { // Get default language $default_lang = (int) Configuration::get('PS_LANG_DEFAULT'); $output = ''; $fieldsForm = $testApi = []; foreach (CurrencyCore::getCurrencies() as $currency) { $currencyCode = $currency['iso_code']; $suffix = Przelewy24Helper::getSuffix($currencyCode); if (self::isConfiguredForSuffix($suffix)) { $restApi = Przelewy24RestBigFactory::buildForSuffix($suffix); $testApiAccess = $restApi->apiTestAccess(); } if (isset($testApiAccess) && $testApiAccess) { $blikEnable = true; $oneClickEnable = true; } else { $testApiAccess = false; $blikEnable = false; $oneClickEnable = false; } $testApi[$currencyCode] = [ 'testApi' => $testApiAccess, 'P24_BLIK_UID_ENABLE' => $blikEnable, 'P24_ONECLICK_ENABLE' => $oneClickEnable, ]; } $fieldsForm[-1]['form'] = [ 'legend' => [ 'title' => $lang['Documentation'], 'image' => $this->getPrzelewy24()->getPath() . 'logo.png', ], 'input' => [ [ self::FORM_TYPE => 'html', self::FORM_NAME => $this->generateLinkToDocumentation($lang), ], ], ]; $orderStates = OrderState::getOrderStates( $this->getPrzelewy24()->getContext()->cookie->id_lang ); $fieldsForm[1]['form'] = [ 'legend' => [ 'title' => $lang['Select currency for which you want to configure your merchant'], 'image' => $this->getPrzelewy24()->getPath() . 'logo.png', ], 'input' => [ [ self::FORM_TYPE => 'radio', self::FORM_LABEL => $lang['Currency'], self::FORM_NAME => 'currency', self::FORM_REQUIRED => true, self::FORM_VALUES => [], ], ], ]; $fieldsForm[2]['form'] = [ 'legend' => [ 'title' => $lang['Settings for all currencies'], 'image' => $this->getPrzelewy24()->getPath() . 'logo.png', ], 'input' => [ [ self::FORM_TYPE => 'select', self::FORM_LABEL => $lang['Status before completing payment'], self::FORM_NAME => 'P24_ORDER_STATE_1', self::FORM_REQUIRED => true, self::FORM_OPTIONS => [ self::FORM_QUERY => $orderStates, self::FORM_ID => 'id_order_state', self::FORM_NAME => 'name', ], ], [ self::FORM_TYPE => 'select', self::FORM_LABEL => $lang['Status after completing payment'], self::FORM_NAME => 'P24_ORDER_STATE_2', self::FORM_REQUIRED => true, self::FORM_OPTIONS => [ self::FORM_QUERY => $orderStates, self::FORM_ID => 'id_order_state', self::FORM_NAME => 'name', ], ], [ self::FORM_TYPE => 'switch', self::FORM_LABEL => $lang['After selecting products to refund, alter stock quantity'], self::FORM_NAME => 'P24_REFUND_WITH_ALTER_STOCK', self::FORM_REQUIRED => true, self::FORM_VALUES => [ [ self::FORM_ID => 'active_on', self::FORM_VALUE => 1, ], [ self::FORM_ID => 'active_off', self::FORM_VALUE => 0, ], ], ], ], ]; foreach (CurrencyCore::getCurrencies() as $currency) { array_push( $fieldsForm[1]['form']['input'][0]['values'], [ self::FORM_ID => $currency['iso_code'], self::FORM_VALUE => $currency['iso_code'], self::FORM_LABEL => $currency['iso_code'], ] ); } // Init Fields form array $fieldsForm[0]['form'] = [ 'legend' => [ 'title' => $lang['Settings'], 'image' => $this->getPrzelewy24()->getPath() . 'logo.png', ], 'input' => [ [ self::FORM_TYPE => 'html', self::FORM_NAME => $lang['Rembember to configure external IP address on Przelewy24 panel.'], ], [ self::FORM_TYPE => 'text', self::FORM_LABEL => $lang['Merchant ID'], self::FORM_NAME => 'P24_MERCHANT_ID', self::FORM_REQUIRED => true, ], [ self::FORM_TYPE => 'text', self::FORM_LABEL => $lang['Shop ID'], self::FORM_NAME => 'P24_SHOP_ID', self::FORM_REQUIRED => true, ], [ self::FORM_TYPE => 'text', self::FORM_LABEL => $lang['CRC Key'], self::FORM_NAME => 'P24_SALT', self::FORM_REQUIRED => true, ], [ self::FORM_TYPE => 'radio', self::FORM_LABEL => $lang['Module mode'], 'desc' => $lang['Choose module mode.'], self::FORM_NAME => 'P24_TEST_MODE', self::FORM_REQUIRED => true, self::FORM_CLASS => 't', 'is_bool' => true, self::FORM_VALUES => [ [ self::FORM_ID => 'active_test', self::FORM_VALUE => 1, self::FORM_LABEL => $lang['Test (Sandbox)'], ], [ self::FORM_ID => 'active_prod', self::FORM_VALUE => 0, self::FORM_LABEL => $lang['Normal/production'], ], ], ], [ self::FORM_TYPE => 'text', self::FORM_LABEL => $lang['API Key'], self::FORM_NAME => 'P24_API_KEY', self::FORM_REQUIRED => true, 'desc' => $lang['API key allow access to additional functions, e.g. graphics list of payment methods.'] . ' ' . $lang['You can get API key from Przelewy24 dashboard, from my data tab.'], ], ], 'submit' => [ 'title' => $lang['Save'], self::FORM_CLASS => 'btn btn-default pull-right', ], ]; $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'select', self::FORM_LABEL => $lang['Stage of creating the order:'], self::FORM_NAME => 'P24_VERIFYORDER', self::FORM_OPTIONS => [ self::FORM_QUERY => [ [ 'id_option' => 0, self::FORM_NAME => $lang['After choosing Przelewy24 as a payment gateway'], ], [ 'id_option' => 1, self::FORM_NAME => $lang['After payment'], ], [ 'id_option' => 2, self::FORM_NAME => $lang['After click "Confirm" button'], ], ], self::FORM_ID => 'id_option', self::FORM_NAME => 'name', ], ]; $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'switch', self::FORM_LABEL => $lang['Use standard return page'], self::FORM_DESC => $lang['This option is ignored, if an order is created at a later stage.'], self::FORM_NAME => 'P24_USE_STANDARD_RETURN_PAGE', self::FORM_VALUES => [ [ self::FORM_ID => 'active_on', self::FORM_VALUE => 1, ], [ self::FORM_ID => 'active_off', self::FORM_VALUE => 0, ], ], ]; $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'switch', self::FORM_LABEL => $lang['Skip order confirmation'], self::FORM_DESC => $lang['Skip order confirmation if it is possible.'], self::FORM_NAME => 'P24_SKIP_CONFIRMATION_ENABLE', self::FORM_VALUES => [ [ self::FORM_ID => 'active_on', self::FORM_VALUE => 1, ], [ self::FORM_ID => 'active_off', self::FORM_VALUE => 0, ], ], ]; $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'switch', self::FORM_LABEL => $lang['Oneclick payments'], 'desc' => $lang['Allows you to order products with on-click'], self::FORM_NAME => 'P24_ONECLICK_ENABLE', self::FORM_VALUES => [ [ self::FORM_ID => 'active_on', self::FORM_VALUE => 1, ], [ self::FORM_ID => 'active_off', self::FORM_VALUE => 0, ], ], ]; $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'switch', self::FORM_LABEL => $lang['Show accept button in shop'], self::FORM_NAME => 'P24_ACCEPTINSHOP_ENABLE', self::FORM_VALUES => [ [ self::FORM_ID => 'active_on', self::FORM_VALUE => 1, ], [ self::FORM_ID => 'active_off', self::FORM_VALUE => 0, ], ], ]; $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'switch', self::FORM_LABEL => $lang['Wait for a result of the transaction'], self::FORM_NAME => 'P24_WAIT_FOR_RESULT', self::FORM_VALUES => [ [ self::FORM_ID => 'active_on', self::FORM_VALUE => 1, ], [ self::FORM_ID => 'active_off', self::FORM_VALUE => 0, ], ], ]; // ajax form $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'switch', self::FORM_LABEL => $lang['Card payments inside shop'], 'desc' => $lang['Allows to pay by credit/debit card without leaving the store website'], self::FORM_NAME => 'P24_PAY_CARD_INSIDE_ENABLE', self::FORM_VALUES => [ [ self::FORM_ID => 'active_on', self::FORM_VALUE => 1, ], [ self::FORM_ID => 'active_off', self::FORM_VALUE => 0, ], ], ]; $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'switch', self::FORM_LABEL => $lang['BLIK payments inside shop'], self::FORM_DESC => $lang['Allows to pay by BLIK without leaving the store website'], self::FORM_NAME => 'P24_BLIK_INSIDE_ENABLE', self::FORM_VALUES => [ [ self::FORM_ID => 'active_on', self::FORM_VALUE => 1, ], [ self::FORM_ID => 'active_off', self::FORM_VALUE => 0, ], ], ]; $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'switch', self::FORM_LABEL => $lang['Show BLIK to customers'], self::FORM_NAME => 'P24_BLIK_SHOW_TO_CUSTOMER', self::FORM_VALUES => [ [ self::FORM_ID => 'active_on', self::FORM_VALUE => 1, ], [ self::FORM_ID => 'active_off', self::FORM_VALUE => 0, ], ], ]; $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'switch', self::FORM_LABEL => $lang['Show available payment methods in shop on confirmation page'], 'desc' => $lang['Customer can chose payment method on confirmation page.'], self::FORM_NAME => 'P24_PAYMENT_METHOD_CONFIRM_LIST', self::FORM_VALUES => [ [ self::FORM_ID => 'active_on', self::FORM_VALUE => 1, ], [ self::FORM_ID => 'active_off', self::FORM_VALUE => 0, ], ], ]; $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'switch', self::FORM_LABEL => $lang['Promote P24NOW payment'], self::FORM_NAME => 'P24_NOW_ENABLED', 'desc' => $lang['Customer will see P24NOW as a promoted option'] . ', ' . $lang['What is P24NOW'] . '?', self::FORM_VALUES => [ [ self::FORM_ID => 'active_on', self::FORM_VALUE => 1, ], [ self::FORM_ID => 'active_off', self::FORM_VALUE => 0, ], ], ]; $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'switch', self::FORM_LABEL => $lang['Promote P24NOW payment in methods'], self::FORM_NAME => 'P24_NOW_PROMOTE', 'desc' => $lang['P24NOW module will be promoted as main payment option'] . ', ' . $lang['What is P24NOW'] . '?', self::FORM_VALUES => [ [ self::FORM_ID => 'active_on', self::FORM_VALUE => 1, ], [ self::FORM_ID => 'active_off', self::FORM_VALUE => 0, ], ], ]; $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'switch', self::FORM_LABEL => $lang['Use graphics list of payment methods'], self::FORM_NAME => 'P24_GRAPHICS_PAYMENT_METHOD_LIST', self::FORM_VALUES => [ [ self::FORM_ID => 'active_on', self::FORM_VALUE => 1, ], [ self::FORM_ID => 'active_off', self::FORM_VALUE => 0, ], ], ]; foreach (CurrencyCore::getCurrencies() as $currency) { $currencyCode = $currency['iso_code']; $suffix = Przelewy24Helper::getSuffix($currencyCode); $altSuffix = strtr($suffix, '_', '-'); $paymentCache = Przelewy24CachedPaymentListFactory::buildForSuffix($suffix); $apiLang = Context::getContext()->language->iso_code; if (self::isConfiguredForSuffix($suffix)) { $restApi = Przelewy24RestBigFactory::buildForSuffix($suffix); $restApi->setPaymentCache($paymentCache); $paymethodList = $restApi->getFirstAndSecondPaymentList($currencyCode); $p24PaymethodDescription = []; foreach ($restApi->availablePaymentMethods() as $bankId => $bankName) { if ($value = Configuration::get("P24_PAYMENT_DESCRIPTION_{$bankId}{$suffix}")) { Configuration::updateValue("P24_PAYMENT_DESCRIPTION_{$bankId}{$suffix}", $value); } else { $value = $bankName; } $p24PaymethodDescription[$bankId] = $value; } $paymethodList['p24_paymethod_description'] = $p24PaymethodDescription; } else { $paymethodList = [ 'p24_paymethod_list_first' => [], 'p24_paymethod_list_second' => [], 'p24_paymethod_description' => [], ]; } $this->getPrzelewy24()->getSmarty()->assign(['suffix' => $suffix]); $this->getPrzelewy24()->getSmarty()->assign(['altSuffix' => $altSuffix]); $this->getPrzelewy24()->getSmarty()->assign( ['p24_paymethod_list_first' . $suffix => $paymethodList['p24_paymethod_list_first']] ); $this->getPrzelewy24()->getSmarty()->assign( ['p24_paymethod_list_second' . $suffix => $paymethodList['p24_paymethod_list_second']] ); $this->getPrzelewy24()->getSmarty()->assign( ['p24_paymethod_description' . $suffix => $paymethodList['p24_paymethod_description']] ); $this->getPrzelewy24()->getSmarty()->assign( ['p24_paymethod_cache' . $suffix => $paymentCache->getList($apiLang)] ); $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'html', self::FORM_LABEL => $lang['Show available payment methods in confirm'], self::FORM_NAME => $this->getPrzelewy24()->display( $this->getPrzelewy24()->getBaseFile(), 'views/templates/admin/sortable_payments.tpl' ), ]; } $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'hidden', self::FORM_NAME => 'P24_PAYMENTS_ORDER_LIST_FIRST', ]; $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'hidden', self::FORM_NAME => 'P24_PAYMENTS_ORDER_LIST_SECOND', ]; $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'switch', self::FORM_LABEL => $lang['Show promoted payment methods'], self::FORM_NAME => 'P24_PAYMENT_METHOD_CHECKOUT_LIST', self::FORM_VALUES => [ [ self::FORM_ID => 'active_on', self::FORM_VALUE => 1, ], [ self::FORM_ID => 'active_off', self::FORM_VALUE => 0, ], ], ]; foreach (CurrencyCore::getCurrencies() as $currency) { $currencyCode = $currency['iso_code']; $suffix = Przelewy24Helper::getSuffix($currencyCode); $altSuffix = strtr($suffix, '_', '-'); $paymentCache = Przelewy24CachedPaymentListFactory::buildForSuffix($suffix); $apiLang = Context::getContext()->language->iso_code; // promote if (self::isConfiguredForSuffix($suffix)) { $restApi = Przelewy24RestBigFactory::buildForSuffix($suffix); $restApi->setPaymentCache($paymentCache); $promotePaymethodList = $restApi->getPromotedPaymentList($currencyCode); } else { $promotePaymethodList = [ self::P24_PAYMETHOD_LIST_PROMOTE => [], self::P24_PAYMETHOD_LIST_PROMOTE_2 => [], ]; } if ($currency['iso_code'] === 'PLN') { if (Configuration::get('P24_NOW_ENABLED')) { if (array_key_exists(266, $promotePaymethodList['p24_paymethod_list_promote_2'])) { $promotePaymethodList['p24_paymethod_list_promote'][266] = $promotePaymethodList['p24_paymethod_list_promote_2'][266]; unset($promotePaymethodList['p24_paymethod_list_promote_2'][266]); } } else { if (array_key_exists(266, $promotePaymethodList['p24_paymethod_list_promote'])) { $promotePaymethodList['p24_paymethod_list_promote_2'][266] = $promotePaymethodList['p24_paymethod_list_promote'][266]; unset($promotePaymethodList['p24_paymethod_list_promote'][266]); } } } $this->getPrzelewy24()->getSmarty()->assign(['suffix' => $suffix]); $this->getPrzelewy24()->getSmarty()->assign(['altSuffix' => $altSuffix]); $this->getPrzelewy24()->getSmarty()->assign( [ self::P24_PAYMETHOD_LIST_PROMOTE . $suffix => $promotePaymethodList[self::P24_PAYMETHOD_LIST_PROMOTE], ] ); $this->getPrzelewy24()->getSmarty()->assign( [ self::P24_PAYMETHOD_LIST_PROMOTE_2 . $suffix => $promotePaymethodList[self::P24_PAYMETHOD_LIST_PROMOTE_2], ] ); $this->getPrzelewy24()->getSmarty()->assign( ['p24_paymethod_cache' . $suffix => $paymentCache->getList($apiLang)] ); $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'html', self::FORM_LABEL => $lang['Promote some payment methods'], self::FORM_NAME => $this->getPrzelewy24()->display( $this->getPrzelewy24()->getBaseFile(), 'views/templates/admin/sortable_promote_payments.tpl' ), ]; } $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'hidden', self::FORM_NAME => 'P24_PAYMENTS_PROMOTE_LIST', ]; foreach (CurrencyCore::getCurrencies() as $currency) { $currencyCode = $currency['iso_code']; $suffix = Przelewy24Helper::getSuffix($currencyCode); $altSuffix = strtr($suffix, '_', '-'); $paymentCache = Przelewy24CachedPaymentListFactory::buildForSuffix($suffix); $apiLang = Context::getContext()->language->iso_code; // promote if (self::isConfiguredForSuffix($suffix)) { $restApi = Przelewy24RestBigFactory::buildForSuffix($suffix); $promotePaymethodList = $restApi->getPromotedPaymentList($currencyCode); } else { $promotePaymethodList = [ self::P24_PAYMETHOD_LIST_PROMOTE => [], self::P24_PAYMETHOD_LIST_PROMOTE_2 => [], ]; } if ($currency['iso_code'] === 'PLN') { if (Configuration::get('P24_NOW_ENABLED')) { if (array_key_exists(266, $promotePaymethodList['p24_paymethod_list_promote_2'])) { $promotePaymethodList['p24_paymethod_list_promote'][266] = $promotePaymethodList['p24_paymethod_list_promote_2'][266]; unset($promotePaymethodList['p24_paymethod_list_promote_2'][266]); } } else { if (array_key_exists(266, $promotePaymethodList['p24_paymethod_list_promote'])) { $promotePaymethodList['p24_paymethod_list_promote_2'][266] = $promotePaymethodList['p24_paymethod_list_promote'][266]; unset($promotePaymethodList['p24_paymethod_list_promote'][266]); } } } $this->getPrzelewy24()->getSmarty()->assign( ['p24_paymethod_cache' . $suffix => $paymentCache->getList($apiLang)] ); $this->getPrzelewy24()->getSmarty()->assign( [ 'suffix' => $suffix, 'altSuffix' => $altSuffix, self::P24_PAYMETHOD_LIST_PROMOTE . $suffix => $promotePaymethodList[self::P24_PAYMETHOD_LIST_PROMOTE], self::P24_PAYMETHOD_LIST_PROMOTE_2 . $suffix => $promotePaymethodList[self::P24_PAYMETHOD_LIST_PROMOTE_2], ] ); $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'html', self::FORM_LABEL => $lang['Payment descriptions'], self::FORM_NAME => $this->getPrzelewy24()->display( $this->getPrzelewy24()->getBaseFile(), 'views/templates/admin/payments_description.tpl' ), ]; } $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'hidden', self::FORM_NAME => 'P24_PAYMENTS_DESCRIPTION', ]; $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'switch', self::FORM_LABEL => $lang['Enable extra charge'], self::FORM_NAME => 'P24_EXTRA_CHARGE_ENABLED', self::FORM_VALUES => [ [ self::FORM_ID => 'active_on', self::FORM_VALUE => 1, ], [ self::FORM_ID => 'active_off', self::FORM_VALUE => 0, ], ], ]; $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'text', self::FORM_LABEL => $lang['Increase payment (amount)'], self::FORM_NAME => 'P24_EXTRA_CHARGE_AMOUNT', self::FORM_CLASS => 'input fixed-width-sm', self::FORM_REQUIRED => false, ]; $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'text', self::FORM_LABEL => $lang['Increase payment (percent)'], self::FORM_NAME => 'P24_EXTRA_CHARGE_PERCENT', self::FORM_CLASS => 'input fixed-width-sm', self::FORM_REQUIRED => false, ]; $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'switch', self::FORM_LABEL => $lang['Disable intro text'], self::FORM_NAME => 'P24_INTRO_DISABLED', self::FORM_VALUES => [ [ self::FORM_ID => 'active_on', self::FORM_VALUE => 1, ], [ self::FORM_ID => 'active_off', self::FORM_VALUE => 0, ], ], ]; $fieldsForm[0]['form']['input'][] = [ self::FORM_TYPE => 'select', self::FORM_LABEL => $lang['Order id in title'], self::FORM_NAME => 'P24_ORDER_TITLE_ID', self::FORM_DESC => $lang['Requires setting ‘Creating the order’ to ‘After choosing Przelewy24 as a payment gateway’.'], self::FORM_OPTIONS => [ self::FORM_QUERY => [ [ 'id_option' => 0, 'name' => $lang['Order id in database (e.g. 1, 2, 3)'], ], [ 'id_option' => 1, 'name' => $lang['Masked order id (e.g. QYTUVLHOW)'], ], ], 'id' => 'id_option', self::FORM_NAME => 'name', ], ]; $this->getPrzelewy24()->getContext()->controller->addCSS( $this->getPrzelewy24()->getPath() . 'views/css/admin.css', 'all' ); $helper = new HelperForm(); // Module, token and currentIndex $helper->module = $this->getPrzelewy24(); $helper->name_controller = $this->getPrzelewy24()->name; $helper->token = Tools::getAdminTokenLite('AdminModules'); $helper->currentIndex = AdminController::$currentIndex . '&configure=' . $this->getPrzelewy24()->name; // Language $helper->default_form_language = $default_lang; $helper->allow_employee_form_lang = $default_lang; // Title and toolbar $helper->title = $this->getPrzelewy24()->displayName; $helper->show_toolbar = true; // false -> remove toolbar $helper->toolbar_scroll = true; // true - > Toolbar is always visible on the top of the screen. $helper->submit_action = 'submit' . $this->getPrzelewy24()->name; $helper->toolbar_btn = [ 'save' => [ 'desc' => $lang['Save'], 'href' => AdminController::$currentIndex . '&configure=' . $this->getPrzelewy24()->name . '&save' . $this->getPrzelewy24()->name . '&token=' . Tools::getAdminTokenLite('AdminModules'), ], 'back' => [ 'href' => AdminController::$currentIndex . '&token=' . Tools::getAdminTokenLite('AdminModules'), 'desc' => $lang['Back to list'], ], ]; // Load current value foreach (CurrencyCore::getCurrencies() as $currency) { $currencyCode = $currency['iso_code']; $suffix = Przelewy24Helper::getSuffix($currencyCode); foreach ($this->parameters as $param) { $fieldsForm[0]['form']['tabs'][$currencyCode][$param] = Configuration::get($param . $suffix); } $fieldsForm[0]['form']['tabs'][$currencyCode]['P24_ADDITIONAL_SETTINGS'] = $testApi[$currencyCode]; } $defaultCurrency = new CurrencyCore(Configuration::get('PS_CURRENCY_DEFAULT')); $suffix = Przelewy24Helper::getSuffix($defaultCurrency->iso_code); foreach ($this->parameters as $param) { $helper->fields_value[$param] = Configuration::get($param . $suffix); } $helper->fields_value['currency'] = $defaultCurrency->iso_code; $helper->fields_value['P24_ORDER_STATE_1'] = (int) Configuration::get('P24_ORDER_STATE_1'); $helper->fields_value['P24_ORDER_STATE_2'] = (int) Configuration::get('P24_ORDER_STATE_2'); $helper->fields_value['P24_REFUND_WITH_ALTER_STOCK'] = (bool) Configuration::get('P24_REFUND_WITH_ALTER_STOCK'); return $output . $helper->generateForm($fieldsForm); } /** * Submit action in admin. * * @param string $lang * * @return string * * @throws Exception */ public function processSubmit($lang) { $output = ''; if (Tools::isSubmit('submit' . $this->getPrzelewy24()->name)) { $isValid = true; $suffix = Przelewy24Helper::getSuffix(Tools::getValue('currency')); $merchantId = trim(Tools::getValue('P24_MERCHANT_ID')); if (empty($merchantId) || !Validate::isInt($merchantId) || ($merchantId <= 0)) { $isValid = false; $output .= $this->getPrzelewy24()->displayError($lang['Invalid merchant ID']); } $shopId = trim(Tools::getValue('P24_SHOP_ID')); if (empty($shopId) || !Validate::isInt($shopId) || ($shopId <= 0)) { $isValid = false; $output .= $this->getPrzelewy24()->displayError($lang['Invalid shop ID']); } $salt = trim(Tools::getValue('P24_SALT')); if (empty($salt)) { $isValid = false; $output .= $this->getPrzelewy24()->displayError($lang['Invalid CRC key']); } $apiKey = trim(Tools::getValue('P24_API_KEY')); // Try create object only for valid credentials. if ($isValid) { $testMode = (bool) Tools::getValue('P24_TEST_MODE'); $restApi = Przelewy24RestBigFactory::bulidForParams( $shopId, $apiKey, $salt, $testMode ); $isValid = $restApi->apiTestAccess(); } if ($isValid) { Configuration::updateValue('P24_MERCHANT_ID' . $suffix, $merchantId); Configuration::updateValue('P24_SHOP_ID' . $suffix, $shopId); Configuration::updateValue('P24_SALT' . $suffix, $salt); Configuration::updateValue('P24_API_KEY' . $suffix, $apiKey); Configuration::updateValue('P24_TEST_MODE' . $suffix, trim(Tools::getValue('P24_TEST_MODE'))); Configuration::updateValue('P24_ORDER_TITLE_ID' . $suffix, trim(Tools::getValue('P24_ORDER_TITLE_ID'))); Configuration::updateValue( 'P24_PAYMENT_METHOD_CHECKOUT_LIST' . $suffix, (int) Tools::getValue('P24_PAYMENT_METHOD_CHECKOUT_LIST') ); Configuration::updateValue( 'P24_PAYMENT_METHOD_CONFIRM_LIST' . $suffix, (int) Tools::getValue('P24_PAYMENT_METHOD_CONFIRM_LIST') ); Configuration::updateValue( 'P24_GRAPHICS_PAYMENT_METHOD_LIST' . $suffix, (int) Tools::getValue('P24_GRAPHICS_PAYMENT_METHOD_LIST') ); if (Tools::getValue('P24_NOW_ENABLED') != Configuration::get('P24_NOW_ENABLED')) { $switch = true; } else { $switch = false; } Configuration::updateValue( 'P24_NOW_ENABLED' . $suffix, trim(Tools::getValue('P24_NOW_ENABLED')) ); Configuration::updateValue( 'P24_NOW_PROMOTE' . $suffix, trim(Tools::getValue('P24_NOW_PROMOTE')) ); Configuration::updateValue( 'P24_PAYMENTS_ORDER_LIST_FIRST' . $suffix, trim(Tools::getValue('P24_PAYMENTS_ORDER_LIST_FIRST')) ); Configuration::updateValue( 'P24_PAYMENTS_ORDER_LIST_SECOND' . $suffix, trim(Tools::getValue('P24_PAYMENTS_ORDER_LIST_SECOND')) ); if ($switch == true) { if (Configuration::get('P24_NOW_ENABLED')) { Configuration::updateValue( 'P24_PAYMENTS_PROMOTE_LIST' . $suffix, trim(Tools::getValue('P24_PAYMENTS_PROMOTE_LIST')) . 266 ); } else { Configuration::updateValue( 'P24_PAYMENTS_PROMOTE_LIST' . $suffix, trim(Tools::getValue('P24_PAYMENTS_PROMOTE_LIST')) ); } } else { $methods = explode(',', Tools::getValue('P24_PAYMENTS_PROMOTE_LIST')); if (in_array(266, $methods)) { Configuration::updateValue('P24_NOW_ENABLED', 1); } else { Configuration::updateValue('P24_NOW_ENABLED', 0); } Configuration::updateValue( 'P24_PAYMENTS_PROMOTE_LIST' . $suffix, trim(Tools::getValue('P24_PAYMENTS_PROMOTE_LIST')) ); } $restApi = Przelewy24RestBigFactory::buildForSuffix($suffix); $p24PaymethodDescription = $restApi->availablePaymentMethods(); foreach ($p24PaymethodDescription as $bankId => $bankName) { $value = trim(Tools::getValue("P24_PAYMENT_DESCRIPTION_{$bankId}{$suffix}")); if ($value && $value !== $bankName) { Configuration::updateValue("P24_PAYMENT_DESCRIPTION_{$bankId}{$suffix}", $value); } else { Configuration::updateValue("P24_PAYMENT_DESCRIPTION_{$bankId}{$suffix}", null); } } Configuration::updateValue( 'P24_SKIP_CONFIRMATION_ENABLE', trim(trim(Tools::getValue('P24_SKIP_CONFIRMATION_ENABLE'))) ); Configuration::updateValue( 'P24_ONECLICK_ENABLE' . $suffix, trim(Tools::getValue('P24_ONECLICK_ENABLE')) ); Configuration::updateValue( 'P24_ACCEPTINSHOP_ENABLE' . $suffix, trim(Tools::getValue('P24_ACCEPTINSHOP_ENABLE')) ); Configuration::updateValue( 'P24_WAIT_FOR_RESULT' . $suffix, trim(Tools::getValue('P24_WAIT_FOR_RESULT')) ); Configuration::updateValue( 'P24_BLIK_UID_ENABLE' . $suffix, trim(Tools::getValue('P24_BLIK_UID_ENABLE')) ); Configuration::updateValue( 'P24_VERIFYORDER' . $suffix, trim(Tools::getValue('P24_VERIFYORDER')) ); Configuration::updateValue( 'P24_USE_STANDARD_RETURN_PAGE' . $suffix, trim(Tools::getValue('P24_USE_STANDARD_RETURN_PAGE')) ); Configuration::updateValue( 'P24_PAY_CARD_INSIDE_ENABLE' . $suffix, trim(Tools::getValue('P24_PAY_CARD_INSIDE_ENABLE')) ); Configuration::updateValue( 'P24_BLIK_INSIDE_ENABLE' . $suffix, trim(Tools::getValue('P24_BLIK_INSIDE_ENABLE')) ); Configuration::updateValue( 'P24_BLIK_SHOW_TO_CUSTOMER' . $suffix, trim(Tools::getValue('P24_BLIK_SHOW_TO_CUSTOMER')) ); Configuration::updateValue( 'P24_EXTRA_CHARGE_ENABLED' . $suffix, trim(Tools::getValue('P24_EXTRA_CHARGE_ENABLED')) ); Configuration::updateValue( 'P24_INTRO_DISABLED' . $suffix, trim(Tools::getValue('P24_INTRO_DISABLED')) ); Configuration::updateValue( 'P24_EXTRA_CHARGE_AMOUNT' . $suffix, str_replace(',', '.', trim(Tools::getValue('P24_EXTRA_CHARGE_AMOUNT'))) ); Configuration::updateValue( 'P24_EXTRA_CHARGE_PERCENT' . $suffix, str_replace(',', '.', trim(Tools::getValue('P24_EXTRA_CHARGE_PERCENT'))) ); Configuration::updateValue( 'P24_ORDER_STATE_1', trim(Tools::getValue('P24_ORDER_STATE_1')) ); Configuration::updateValue( 'P24_ORDER_STATE_2', trim(Tools::getValue('P24_ORDER_STATE_2')) ); Configuration::updateValue( 'P24_REFUND_WITH_ALTER_STOCK', trim(Tools::getValue('P24_REFUND_WITH_ALTER_STOCK')) ); Configuration::updateValue('P24_CONFIGURATION_VALID' . $suffix, 1); $output .= $this->getPrzelewy24()->displayConfirmation($lang['Settings saved.']); } else { Configuration::updateValue('P24_CONFIGURATION_VALID' . $suffix, 0); $errorMsg = $lang['Przelewy24 module settings are not configured correctly.'] . ' ' . $lang['Przelewy24 payment method does not appear in the list in order.']; $output .= $this->getPrzelewy24()->displayError($errorMsg); } } $output .= $this->getPrzelewy24()->display( $this->getPrzelewy24()->getBaseFile(), 'views/templates/admin/config_intro.tpl' ); if ((int) Configuration::get('P24_CONFIGURATION_VALID') < 1) { $output .= $this->getPrzelewy24()->display( $this->getPrzelewy24()->getBaseFile(), 'views/templates/admin/config_register_info.tpl' ); } return $output; } }