Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
- All PayPal payment methods have "PayPal" as a prefix in a fresh installation to better identify them in the admin panel. When setting up payment methods, the merchant can decide which name best fits their needs.
- Additional check of eligibility for unbranded payments
- CreditCard (ACDC) and Vaulting works now internally with card-fields-component. Fewer PayPal SDK resources are needed
- Move PayPal-Config to Config-Section in Admin > Module-List > Module > Options

### FIX

Expand Down
5 changes: 1 addition & 4 deletions menu.xml
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<OX>
<OXMENU id="NAVIGATION_ESHOPADMIN">
<MAINMENU id="paypal">
<SUBMENU id="OSC_PAYPAL_CONFIG" cl="oscpaypalconfig"/>
</MAINMENU>
<MAINMENU id="mxorders">
<SUBMENU id="mxdisplayorders" cl="admin_order" list="order_list">
<TAB id="tbclorder_oscpaypal" cl="oscpaypalorder"/>
</SUBMENU>
</MAINMENU>
</OXMENU>
</OX>
</OX>
8 changes: 6 additions & 2 deletions metadata.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
use OxidEsales\Eshop\Application\Controller\Admin\OrderMain;
use OxidEsales\Eshop\Application\Controller\Admin\OrderArticle;
use OxidEsales\Eshop\Application\Controller\Admin\OrderOverview;
use OxidEsales\Eshop\Application\Controller\Admin\ModuleConfiguration;
use OxidEsales\Eshop\Application\Model\Article;
use OxidEsales\Eshop\Application\Model\Basket;
use OxidEsales\Eshop\Application\Model\Order;
Expand All @@ -24,7 +25,7 @@
use OxidEsales\Eshop\Core\ViewConfig;
use OxidSolutionCatalysts\PayPal\Component\BasketComponent as PayPalBasketComponent;
use OxidSolutionCatalysts\PayPal\Component\UserComponent as PayPalUserComponent;
use OxidSolutionCatalysts\PayPal\Controller\Admin\PayPalConfigController;
use OxidSolutionCatalysts\PayPal\Controller\Admin\ModuleConfiguration as PaypalModuleConfiguration;
use OxidSolutionCatalysts\PayPal\Controller\Admin\PayPalOrderController;
use OxidSolutionCatalysts\PayPal\Controller\Admin\OrderMain as PayPalOrderMainController;
use OxidSolutionCatalysts\PayPal\Controller\Admin\OrderArticle as PayPalOrderArticleController;
Expand All @@ -48,6 +49,7 @@
use OxidSolutionCatalysts\PayPal\Model\Payment as PayPalPayment;
use OxidSolutionCatalysts\PayPal\Model\PaymentGateway as PayPalPaymentGateway;


$sMetadataVersion = '2.1';

/**
Expand All @@ -69,6 +71,7 @@
'url' => 'https://www.oxid-esales.com',
'email' => 'info@oxid-esales.com',
'extend' => [
ModuleConfiguration::class => PaypalModuleConfiguration::class,
InputValidator::class => PayPalInputValidator::class,
ShopControl::class => PayPalShopControl::class,
ViewConfig::class => PayPalViewConfig::class,
Expand All @@ -88,7 +91,7 @@
State::class => PayPalState::class
],
'controllers' => [
'oscpaypalconfig' => PayPalConfigController::class,
'oscpaypalconfig' => PaypalModuleConfiguration::class,
'oscpaypalwebhook' => WebhookController::class,
'oscpaypalproxy' => ProxyController::class,
'ajaxpay' => AjaxPaymentController::class,
Expand Down Expand Up @@ -158,6 +161,7 @@
'onDeactivate' => '\OxidSolutionCatalysts\PayPal\Core\Events\Events::onDeactivate'
],
'blocks' => [
//admin
[
'template' => 'headitem.tpl',
'block' => 'admin_headitem_inccss',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
use Exception;
use GuzzleHttp\Exception\ClientException;
use JsonException;
use OxidEsales\Eshop\Application\Controller\Admin\AdminController;
use OxidEsales\Eshop\Core\Exception\StandardException;
use OxidEsales\Eshop\Core\Registry;
use OxidSolutionCatalysts\PayPal\Service\Logger;
Expand All @@ -28,32 +27,29 @@
use OxidSolutionCatalysts\PayPalApi\Exception\ApiException;
use Throwable;

/**
* Controller for admin > PayPal/Configuration page
*/
class PayPalConfigController extends AdminController
class ModuleConfiguration extends ModuleConfiguration_parent
{
use ServiceContainer;

/**
* @var string Current class template name.
*/
// phpcs:ignore PSR2.Classes.PropertyDeclaration
protected $_sThisTemplate = 'oscpaypalconfig.tpl';
protected string $_sModuleId = ''; // phpcs:ignore PSR2.Classes.PropertyDeclaration.Underscore

/**
* @return string
*/
public function render()
{
$thisTemplate = parent::render();
$config = new Config();
$this->addTplParam('config', $config);

try {
$config->checkHealth();
} catch (StandardException $e) {
Registry::getUtilsView()->addErrorToDisplay($e, false, true, 'paypal_error');
if ($this->_sModuleId === 'osc_paypal') {
$config = new Config();
$thisTemplate = 'oscpaypalconfig.tpl';
$this->addTplParam('config', $config);

try {
$config->checkHealth();
} catch (StandardException $e) {
Registry::getUtilsView()->addErrorToDisplay($e, false, true, 'paypal_error');
}
}

return $thisTemplate;
Expand Down Expand Up @@ -95,13 +91,6 @@ public function getSandboxSignUpMerchantIntegrationLink(): string
);
}

/**
* Maps arguments and constants to request parameters, generates a sign up url
*
* @param string $partnerId
*
* @return string
*/
private function buildSignUpLink(
string $partnerClientId,
string $partnerId,
Expand Down Expand Up @@ -159,23 +148,21 @@ public function createNonce(): string


/**
* Saves configuration values
* @throws \OxidSolutionCatalysts\PayPal\Exception\OnboardingException
* @throws \OxidEsales\EshopCommunity\Internal\Framework\Module\Configuration\Exception\ModuleSettingNotFountException
*/
public function save()
{
$confArr = Registry::getRequest()->getRequestEscapedParameter('conf');
if (is_array($confArr)) {
$confArr = $this->handleSpecialFields($confArr);
$this->saveConfig($confArr);
$this->checkEligibility($confArr);
}

$confArr = $this->handleSpecialFields($confArr);
$this->saveConfig($confArr);
$this->checkEligibility($confArr);
parent::save();
}

/**
* Saves configuration values
*
* @param array $conf
*/
protected function saveConfig(array $conf): void
{
foreach ($conf as $confName => $value) {
Expand All @@ -187,7 +174,7 @@ protected function saveConfig(array $conf): void
* check Eligibility if config would be changed
*
* @param $confArr array
* @throws OnboardingException
* @throws OnboardingException|\OxidEsales\EshopCommunity\Internal\Framework\Module\Configuration\Exception\ModuleSettingNotFountException
*/
protected function checkEligibility(array $confArr): void
{
Expand Down Expand Up @@ -408,22 +395,16 @@ protected function autoConfiguration(): array
/**
* webhook registration
*/
protected function registerWebhooks(): string
public function registerWebhooks(): void
{
$webhookId = '';

try {
/** @var Webhook $handler */
$handler = oxNew(Webhook::class);
$webhookId = $handler->ensureWebhook();
(oxNew(Webhook::class))->ensureWebhook();
} catch (OnboardingException $exception) {
Registry::getUtilsView()->addErrorToDisplay($exception->getMessage());
} catch (Exception $exception) {
/** @var Logger $logger */
$logger = $this->getServiceFromContainer(Logger::class);
$logger->log('error', $exception->getMessage(), [$exception]);
}

return $webhookId;
}
}
2 changes: 0 additions & 2 deletions tests/Integration/Onboarding/OnboardingTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,7 @@
namespace OxidSolutionCatalysts\PayPal\Tests\Integration\Onboarding;

use OxidEsales\Eshop\Core\Registry;
use OxidEsales\TestingLibrary\UnitTestCase;
use OxidSolutionCatalysts\PayPalApi\Onboarding as ApiOnboardingClient;
use OxidSolutionCatalysts\PayPal\Controller\Admin\PayPalConfigController;
use OxidSolutionCatalysts\PayPal\Core\Onboarding\Onboarding;
use OxidSolutionCatalysts\PayPal\Core\PayPalSession;
use OxidSolutionCatalysts\PayPal\Core\PartnerConfig;
Expand Down
5 changes: 5 additions & 0 deletions tests/PhpStan/phpstan-bootstrap.php
Original file line number Diff line number Diff line change
Expand Up @@ -82,3 +82,8 @@ class_alias(
\OxidEsales\Eshop\Application\Model\Order::class,
\OxidEsales\Eshop\Application\Model\Order_parent::class
);

class_alias(
\OxidEsales\Eshop\Application\Controller\Admin\ModuleConfiguration::class,
\OxidSolutionCatalysts\PayPal\Controller\Admin\ModuleConfiguration_parent::class
);
15 changes: 12 additions & 3 deletions views/admin/tpl/oscpaypalconfig.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,17 @@

[{oxscript add=$sPayPalJS}]

<form name="transfer" id="transfer" action="[{$oViewConf->getSelfLink()}]" method="post">
[{$oViewConf->getHiddenSid()}]
<input type="hidden" name="oxid" value="[{$oModule->getInfo('id')}]">
<input type="hidden" name="cl" value="oscpaypalconfig">
<input type="hidden" name="fnc" value="">
<input type="hidden" name="actshop" value="[{$oViewConf->getActiveShopId()}]">
<input type="hidden" name="updatenav" value="">
<input type="hidden" name="editlanguage" value="[{$editlanguage}]">
</form>

<div id="content" class="paypal-config">
<h1>[{oxmultilang ident="paypal"}] [{oxmultilang ident="OSC_PAYPAL_CONFIG"}]</h1>
<div class="alert alert-[{if $Errors.paypal_error}]danger[{else}]success[{/if}]" role="alert">
[{if $Errors.paypal_error}]
[{oxmultilang ident="OSC_PAYPAL_ERR_CONF_INVALID"}]
Expand All @@ -23,9 +32,9 @@
<div id="overlay"><div class="loader"></div></div>
<form id="configForm" name="configForm" action="[{$oViewConf->getSslSelfLink()|replace:"&amp;":"&"}]" method="post" autocomplete="off">
[{$oViewConf->getHiddenSid()}]
<input type="hidden" name="cl" value="[{$oViewConf->getActiveClassName()}]">
<input type="hidden" name="cl" value="oscpaypalconfig">
<input type="hidden" name="fnc" value="save">

<input type="hidden" name="oxid" value="[{$oModule->getInfo('id')}]">
<div id="accordion">
<div class="card">
<div class="card-header" id="heading1">
Expand Down
5 changes: 4 additions & 1 deletion views/blocks/admin/admin_headitem_inccss.tpl
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
[{if
$oViewConf->getTopActiveClassName()|lower=="oscpaypalconfig" ||
(
$oViewConf->getTopActiveClassName()|lower == "module_config" &&
$oModule->getInfo('id') == "osc_paypal"
) ||
$oViewConf->getTopActiveClassName()|lower=="oscpaypalorder"
}]
[{assign var="sFileMTimeBootstrap" value=$oViewConf->getModulePath('osc_paypal','out/src/css/bootstrap.min.css')|filemtime}]
Expand Down
9 changes: 7 additions & 2 deletions views/blocks/admin/admin_headitem_incjs.tpl
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
[{if
$oViewConf->getTopActiveClassName()|lower=="oscpaypalconfig" ||
(
$oViewConf->getTopActiveClassName()|lower == "module_config" &&
$oModule->getInfo('id') == "osc_paypal"
) ||
$oViewConf->getTopActiveClassName()|lower=="oscpaypalorder"
}]
[{oxscript include="js/libs/jquery.min.js" priority=1}]
[{oxscript add="$.noConflict();" priority=10}]
[{if $oViewConf->getTopActiveClassName()|lower=="oscpaypalconfig"}]
[{if
$oViewConf->getTopActiveClassName()|lower=="module_config"
}]
[{oxscript include="js/libs/jquery-ui.min.js"}]
[{oxscript include="js/widgets/oxmoduleconfiguration.js"}]
[{oxscript add="$('#configForm').oxModuleConfiguration();" priority=10}]
Expand Down
Loading