diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml index b0164368e..0edeca820 100644 --- a/.github/workflows/php.yml +++ b/.github/workflows/php.yml @@ -29,4 +29,4 @@ jobs: - name: Run test suite run: ./vendor/bin/phpunit - name: Run cs - run: ./vendor/bin/phpcs src modules.local/ppcp-wc-gateway/src/ modules.local/ppcp-webhooks/src/ modules.local/ppcp-button/src/ modules.local/ppcp-onboarding/src/ --standard=Inpsyde + run: ./vendor/bin/phpcs src modules.local/ppcp-wc-gateway/src/ modules.local/ppcp-webhooks/src/ modules.local/ppcp-button/src/ modules.local/ppcp-onboarding/src/ modules.local/ppcp-subscription/src --standard=Inpsyde diff --git a/modules.local/ppcp-button/src/Assets/DisabledSmartButton.php b/modules.local/ppcp-button/src/Assets/DisabledSmartButton.php index 097c88c9a..bcb038566 100644 --- a/modules.local/ppcp-button/src/Assets/DisabledSmartButton.php +++ b/modules.local/ppcp-button/src/Assets/DisabledSmartButton.php @@ -17,7 +17,9 @@ class DisabledSmartButton implements SmartButtonInterface return true; } - public function canSaveVaultToken(): bool { + public function canSaveVaultToken(): bool + { + return false; } } diff --git a/modules.local/ppcp-button/src/Assets/SmartButtonInterface.php b/modules.local/ppcp-button/src/Assets/SmartButtonInterface.php index 2c5de6a6b..0b6f0583a 100644 --- a/modules.local/ppcp-button/src/Assets/SmartButtonInterface.php +++ b/modules.local/ppcp-button/src/Assets/SmartButtonInterface.php @@ -11,5 +11,4 @@ interface SmartButtonInterface public function enqueue(): bool; public function canSaveVaultToken(): bool; - } diff --git a/modules.local/ppcp-onboarding/src/Assets/OnboardingAssets.php b/modules.local/ppcp-onboarding/src/Assets/OnboardingAssets.php index 0bae216f3..89e2730fc 100644 --- a/modules.local/ppcp-onboarding/src/Assets/OnboardingAssets.php +++ b/modules.local/ppcp-onboarding/src/Assets/OnboardingAssets.php @@ -31,12 +31,17 @@ class OnboardingAssets $url = $this->moduleUrl . '/assets/css/onboarding.css'; wp_register_style( 'ppcp-onboarding', - $url + $url, + [], + 1 ); $url = $this->moduleUrl . '/assets/js/settings.js'; wp_register_script( 'ppcp-settings', - $url + $url, + [], + 1, + true ); if (!$this->shouldRenderOnboardingScript()) { return false; @@ -63,7 +68,6 @@ class OnboardingAssets ] ); - return true; } diff --git a/modules.local/ppcp-subscription/extensions.php b/modules.local/ppcp-subscription/extensions.php index 2ccfbc173..b80286864 100644 --- a/modules.local/ppcp-subscription/extensions.php +++ b/modules.local/ppcp-subscription/extensions.php @@ -1,6 +1,7 @@ function(ContainerInterface $container) : SubscriptionHelper { + 'subscription.helper' => static function (ContainerInterface $container): SubscriptionHelper { return new SubscriptionHelper(); }, - 'subscription.renewal-handler' => function(ContainerInterface $container) : RenewalHandler { + 'subscription.renewal-handler' => static function (ContainerInterface $container): RenewalHandler { $logger = $container->get('woocommerce.logger.woocommerce'); $repository = $container->get('subscription.repository.payment-token'); $endpoint = $container->get('api.endpoint.order'); @@ -26,9 +26,9 @@ return [ $payerFactory ); }, - 'subscription.repository.payment-token' => function(ContainerInterface $container) : PaymentTokenRepository { + 'subscription.repository.payment-token' => static function (ContainerInterface $container): PaymentTokenRepository { $factory = $container->get('api.factory.payment-token'); $endpoint = $container->get('api.endpoint.payment-token'); return new PaymentTokenRepository($factory, $endpoint); - } + }, ]; diff --git a/modules.local/ppcp-subscription/src/Helper/SubscriptionHelper.php b/modules.local/ppcp-subscription/src/Helper/SubscriptionHelper.php index cb15851c9..a8c3ee07f 100644 --- a/modules.local/ppcp-subscription/src/Helper/SubscriptionHelper.php +++ b/modules.local/ppcp-subscription/src/Helper/SubscriptionHelper.php @@ -1,4 +1,5 @@ pluginIsActive()) { return false; @@ -15,7 +16,7 @@ class SubscriptionHelper return is_a($product, \WC_Product::class) && $product->is_type('subscription'); } - public function cartContainsSubscription() : bool + public function cartContainsSubscription(): bool { if (! $this->pluginIsActive()) { return false; @@ -37,15 +38,24 @@ class SubscriptionHelper return false; } - public function acceptOnlyAutomaticPaymentGateways() : bool { + public function acceptOnlyAutomaticPaymentGateways(): bool + { + if (! $this->pluginIsActive()) { return false; } - $accept_manual_renewals = ( 'no' !== get_option( \WC_Subscriptions_Admin::$option_prefix . '_accept_manual_renewals', 'no' ) ) ? true : false; - return ! $accept_manual_renewals; + $acceptManualRenewals = ( 'no' !== get_option( + //phpcs:disable Inpsyde.CodeQuality.VariablesName.SnakeCaseVar + \WC_Subscriptions_Admin::$option_prefix . '_accept_manual_renewals', + //phpcs:enable Inpsyde.CodeQuality.VariablesName.SnakeCaseVar + 'no' + ) ) ? true : false; + return ! $acceptManualRenewals; } - public function pluginIsActive() { + public function pluginIsActive(): bool + { + return class_exists(\WC_Subscriptions::class); } } diff --git a/modules.local/ppcp-subscription/src/RenewalHandler.php b/modules.local/ppcp-subscription/src/RenewalHandler.php index f0ef2d76c..78a422bf4 100644 --- a/modules.local/ppcp-subscription/src/RenewalHandler.php +++ b/modules.local/ppcp-subscription/src/RenewalHandler.php @@ -1,4 +1,5 @@ payerFactory = $payerFactory; } - public function renew(\WC_Order $wcOrder) { + public function renew(\WC_Order $wcOrder) + { + $this->logger->log( 'info', sprintf( @@ -50,16 +53,7 @@ class RenewalHandler ); try { - $userId = (int)$wcOrder->get_customer_id(); - $customer = new \WC_Customer($userId); - $token = $this->getTokenForCustomer($customer, $wcOrder); - if (! $token) { - return; - } - $purchaseUnits = $this->purchaseUnitFactory->fromWcOrder($wcOrder); - $payer = $this->payerFactory->fromCustomer($customer); - $order = $this->orderEndpoint->createForPurchaseUnits([$purchaseUnits], $payer, $token, (string) $wcOrder->get_id()); - $this->captureOrder($order, $wcOrder); + $this->processOrder($wcOrder); } catch (\Exception $error) { $this->logger->log( 'error', @@ -92,7 +86,28 @@ class RenewalHandler ); } - private function getTokenForCustomer(\WC_Customer $customer, \WC_Order $wcOrder) : ?PaymentToken { + private function processOrder(\WC_Order $wcOrder) + { + + $userId = (int)$wcOrder->get_customer_id(); + $customer = new \WC_Customer($userId); + $token = $this->getTokenForCustomer($customer, $wcOrder); + if (! $token) { + return; + } + $purchaseUnits = $this->purchaseUnitFactory->fromWcOrder($wcOrder); + $payer = $this->payerFactory->fromCustomer($customer); + $order = $this->orderEndpoint->createForPurchaseUnits( + [$purchaseUnits], + $payer, + $token, + (string) $wcOrder->get_id() + ); + $this->captureOrder($order, $wcOrder); + } + + private function getTokenForCustomer(\WC_Customer $customer, \WC_Order $wcOrder): ?PaymentToken + { $token = $this->repository->forUserId((int) $customer->get_id()); if (!$token) { @@ -113,7 +128,8 @@ class RenewalHandler return $token; } - private function captureOrder(Order $order, \WC_Order $wcOrder) { + private function captureOrder(Order $order, \WC_Order $wcOrder) + { if ($order->intent() === 'CAPTURE') { $order = $this->orderEndpoint->capture($order); @@ -122,14 +138,14 @@ class RenewalHandler 'processing', __('Payment received.', 'woocommerce-paypal-commerce-gateway') ); - \WC_Subscriptions_Manager::process_subscription_payments_on_order( $wcOrder ); + \WC_Subscriptions_Manager::process_subscription_payments_on_order($wcOrder); } } if ($order->intent() === 'AUTHORIZE') { $this->orderEndpoint->authorize($order); $wcOrder->update_meta_data(WcGateway::CAPTURED_META_KEY, 'false'); - \WC_Subscriptions_Manager::process_subscription_payments_on_order( $wcOrder ); + \WC_Subscriptions_Manager::process_subscription_payments_on_order($wcOrder); } } } diff --git a/modules.local/ppcp-subscription/src/Repository/PaymentTokenRepository.php b/modules.local/ppcp-subscription/src/Repository/PaymentTokenRepository.php index b48738e50..12192cf08 100644 --- a/modules.local/ppcp-subscription/src/Repository/PaymentTokenRepository.php +++ b/modules.local/ppcp-subscription/src/Repository/PaymentTokenRepository.php @@ -1,9 +1,9 @@ factory = $factory; $this->endpoint = $endpoint; } - public function forUserId(int $id) : ?PaymentToken + public function forUserId(int $id): ?PaymentToken { try { $token = (array) get_user_meta($id, self::USER_META, true); @@ -39,13 +39,14 @@ class PaymentTokenRepository } } - public function deleteToken(int $userId, PaymentToken $token) : bool + public function deleteToken(int $userId, PaymentToken $token): bool { delete_user_meta($userId, self::USER_META); return $this->endpoint->deleteToken($token); } - private function fetchForUserId(int $id) : PaymentToken { + private function fetchForUserId(int $id): PaymentToken + { $tokens = $this->endpoint->forUser($id); $token = current($tokens); @@ -53,4 +54,4 @@ class PaymentTokenRepository update_user_meta($id, self::USER_META, $tokenArray); return $token; } -} \ No newline at end of file +} diff --git a/modules.local/ppcp-subscription/src/SubscriptionModule.php b/modules.local/ppcp-subscription/src/SubscriptionModule.php index 4a2ae1ea1..5abce0152 100644 --- a/modules.local/ppcp-subscription/src/SubscriptionModule.php +++ b/modules.local/ppcp-subscription/src/SubscriptionModule.php @@ -38,6 +38,5 @@ class SubscriptionModule implements ModuleInterface 10, 2 ); - } } diff --git a/modules.local/ppcp-wc-gateway/src/Settings/SettingsListener.php b/modules.local/ppcp-wc-gateway/src/Settings/SettingsListener.php index 16cc75c39..7cfea8be4 100644 --- a/modules.local/ppcp-wc-gateway/src/Settings/SettingsListener.php +++ b/modules.local/ppcp-wc-gateway/src/Settings/SettingsListener.php @@ -72,6 +72,7 @@ class SettingsListener } //phpcs:disable Inpsyde.CodeQuality.NestingLevel.MaxExceeded + //phpcs:disable Generic.Metrics.CyclomaticComplexity.TooHigh private function retrieveSettingsFromRawData(array $rawData): array { $settings = []; @@ -117,6 +118,7 @@ class SettingsListener return $settings; } //phpcs:enable Inpsyde.CodeQuality.NestingLevel.MaxExceeded + //phpcs:enable Generic.Metrics.CyclomaticComplexity.TooHigh private function isValidUpdateRequest(): bool { diff --git a/modules.local/ppcp-webhooks/src/Handler/CheckoutOrderCompleted.php b/modules.local/ppcp-webhooks/src/Handler/CheckoutOrderCompleted.php index 85693a48d..0858bde05 100644 --- a/modules.local/ppcp-webhooks/src/Handler/CheckoutOrderCompleted.php +++ b/modules.local/ppcp-webhooks/src/Handler/CheckoutOrderCompleted.php @@ -8,8 +8,8 @@ use Psr\Log\LoggerInterface; class CheckoutOrderCompleted implements RequestHandler { - use PrefixTrait; + private $logger; public function __construct(LoggerInterface $logger, string $prefix) { diff --git a/modules.local/ppcp-webhooks/src/Handler/PaymentCaptureCompleted.php b/modules.local/ppcp-webhooks/src/Handler/PaymentCaptureCompleted.php index 07cb87a31..0bb6b5d88 100644 --- a/modules.local/ppcp-webhooks/src/Handler/PaymentCaptureCompleted.php +++ b/modules.local/ppcp-webhooks/src/Handler/PaymentCaptureCompleted.php @@ -9,8 +9,8 @@ use Psr\Log\LoggerInterface; class PaymentCaptureCompleted implements RequestHandler { - use PrefixTrait; + private $logger; public function __construct(LoggerInterface $logger, string $prefix) { @@ -32,7 +32,8 @@ class PaymentCaptureCompleted implements RequestHandler public function handleRequest(\WP_REST_Request $request): \WP_REST_Response { $response = ['success' => false]; - $orderId = isset($request['resource']['custom_id']) ? $this->sanitizeCustomId($request['resource']['custom_id']) : 0; + $orderId = isset($request['resource']['custom_id']) ? + $this->sanitizeCustomId($request['resource']['custom_id']) : 0; if (! $orderId) { $message = sprintf( // translators: %s is the PayPal webhook Id. diff --git a/modules.local/ppcp-webhooks/src/Handler/PaymentCaptureRefunded.php b/modules.local/ppcp-webhooks/src/Handler/PaymentCaptureRefunded.php index 31028cf50..852d2ae0c 100644 --- a/modules.local/ppcp-webhooks/src/Handler/PaymentCaptureRefunded.php +++ b/modules.local/ppcp-webhooks/src/Handler/PaymentCaptureRefunded.php @@ -8,8 +8,8 @@ use Psr\Log\LoggerInterface; class PaymentCaptureRefunded implements RequestHandler { - use PrefixTrait; + private $logger; public function __construct(LoggerInterface $logger, string $prefix) { @@ -31,7 +31,8 @@ class PaymentCaptureRefunded implements RequestHandler public function handleRequest(\WP_REST_Request $request): \WP_REST_Response { $response = ['success' => false]; - $orderId = isset($request['resource']['custom_id']) ? $this->sanitizeCustomId($request['resource']['custom_id']) : 0; + $orderId = isset($request['resource']['custom_id']) ? + $this->sanitizeCustomId($request['resource']['custom_id']) : 0; if (! $orderId) { $message = sprintf( // translators: %s is the PayPal webhook Id. diff --git a/modules.local/ppcp-webhooks/src/Handler/PaymentCaptureReversed.php b/modules.local/ppcp-webhooks/src/Handler/PaymentCaptureReversed.php index ea5baffc8..c3390c70a 100644 --- a/modules.local/ppcp-webhooks/src/Handler/PaymentCaptureReversed.php +++ b/modules.local/ppcp-webhooks/src/Handler/PaymentCaptureReversed.php @@ -8,8 +8,8 @@ use Psr\Log\LoggerInterface; class PaymentCaptureReversed implements RequestHandler { - use PrefixTrait; + private $logger; public function __construct(LoggerInterface $logger, string $prefix) { @@ -35,7 +35,8 @@ class PaymentCaptureReversed implements RequestHandler public function handleRequest(\WP_REST_Request $request): \WP_REST_Response { $response = ['success' => false]; - $orderId = isset($request['resource']['custom_id']) ? $this->sanitizeCustomId($request['resource']['custom_id']) : 0; + $orderId = isset($request['resource']['custom_id']) ? + $this->sanitizeCustomId($request['resource']['custom_id']) : 0; if (! $orderId) { $message = sprintf( // translators: %s is the PayPal webhook Id. diff --git a/modules.local/ppcp-webhooks/src/Handler/PrefixTrait.php b/modules.local/ppcp-webhooks/src/Handler/PrefixTrait.php index eb9e09146..00afd72e4 100644 --- a/modules.local/ppcp-webhooks/src/Handler/PrefixTrait.php +++ b/modules.local/ppcp-webhooks/src/Handler/PrefixTrait.php @@ -1,16 +1,18 @@ prefix, '', $customId); return (int) $orderId; } -} \ No newline at end of file +}