Skip to content

Commit f6a1d3a

Browse files
[UPMERGE] 2.0 -> 2.1 (#400)
This PR has been generated automatically. For more details see [upmerge_pr.yaml](/Sylius/PayPalPlugin/blob/1.7/.github/workflows/upmerge_pr.yaml). **Remember!** The upmerge should always be merged with using `Merge pull request` button. In case of conflicts, please resolve them manually with usign the following commands: ``` git fetch upstream gh pr checkout <this-pr-number> git merge upstream/2.1 -m "Resolve conflicts between 2.0 and 2.1" ``` If you use other name for the upstream remote, please replace `upstream` with the name of your remote pointing to the `Sylius/PayPalPlugin` repository. Once the conflicts are resolved, please run `git merge --continue` and push the changes to this PR.
2 parents 36b09b0 + 8771e75 commit f6a1d3a

File tree

62 files changed

+2435
-231
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+2435
-231
lines changed

.github/workflows/build.yaml

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ on:
44
push:
55
branches-ignore:
66
- 'dependabot/**'
7+
- 'upmerge/**'
78
pull_request: ~
89
release:
910
types: [ created ]
@@ -31,12 +32,12 @@ jobs:
3132
database: ["mysql", "postgres"]
3233
mysql: ["8.4"]
3334
postgres: ["15.8"]
34-
node: ["20.x"]
35+
node: ["22.x"]
3536
state_machine_adapter: ["symfony_workflow"]
3637

3738
include:
3839
- php: "8.3"
39-
symfony: "~7.2.0"
40+
symfony: "~7.3.0"
4041
sylius: "~2.1.0"
4142
node: "24.x"
4243
database: "mysql"
@@ -102,10 +103,6 @@ jobs:
102103
name: Output PHP version for Symfony CLI
103104
run: php -v | head -n 1 | awk '{ print $2 }' > .php-version
104105

105-
-
106-
name: Install certificates
107-
run: symfony server:ca:install
108-
109106
-
110107
name: Get Composer cache directory
111108
id: composer-cache
@@ -187,9 +184,13 @@ jobs:
187184
vendor/bin/console doctrine:database:create -vvv
188185
vendor/bin/console doctrine:migrations:migrate -n -vvv -q
189186
187+
-
188+
name: Setup messenger transports
189+
run: vendor/bin/console messenger:setup-transports -vvv
190+
190191
-
191192
name: Validate database schema
192-
run: vendor/bin/console doctrine:schema:validate
193+
run: vendor/bin/console doctrine:schema:validate -vvv
193194

194195
-
195196
name: Prepare test application assets
@@ -202,8 +203,8 @@ jobs:
202203
run: vendor/bin/console cache:warmup -vvv
203204

204205
-
205-
name: Load fixtures in test application
206-
run: vendor/bin/console sylius:fixtures:load -n
206+
name: Validate container
207+
run: vendor/bin/console lint:container -vvv
207208

208209
- name: Run security check
209210
run: symfony security:check
@@ -213,8 +214,8 @@ jobs:
213214
run: composer validate --ansi --strict
214215

215216
-
216-
name: Validate container
217-
run: vendor/bin/console lint:container
217+
name: Load fixtures in test application
218+
run: vendor/bin/console sylius:fixtures:load -n
218219

219220
-
220221
name: Run Non-unit PHPUnit tests

behat.yml.dist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ default:
1313

1414
Behat\MinkExtension:
1515
files_path: "%paths.base%/vendor/sylius/sylius/src/Sylius/Behat/Resources/fixtures/"
16-
base_url: "https://127.0.0.1:8080/"
16+
base_url: "http://127.0.0.1:8080/"
1717
default_session: symfony
1818
javascript_session: chrome
1919
sessions:

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
"friends-of-behat/symfony-extension": "^2.1",
2929
"friends-of-behat/variadic-extension": "^1.3",
3030
"lchrusciel/api-test-case": "^5.1",
31+
"matthiasnoback/symfony-dependency-injection-test": "^5.0",
3132
"nyholm/psr7": "^1.8",
3233
"phpstan/phpstan": "^2.0",
3334
"phpstan/phpstan-doctrine": "^2.0",

config/services.xml

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,33 @@
2020
<import resource="services/**/*.xml" />
2121
</imports>
2222

23+
<parameters>
24+
<parameter key="sylius_paypal.prioritize_paypal_as_default_method">true</parameter>
25+
26+
<parameter type="collection" key="sylius_paypal.repository.query.pay_pal_payment.updatable_states">
27+
<parameter type="constant">Sylius\Component\Payment\Model\PaymentInterface::STATE_CART</parameter>
28+
<parameter type="constant">Sylius\Component\Payment\Model\PaymentInterface::STATE_NEW</parameter>
29+
</parameter>
30+
<parameter type="collection" key="sylius_paypal.repository.query.pay_pal_payment.cancellable_states">
31+
<parameter type="constant">Sylius\Component\Payment\Model\PaymentInterface::STATE_CART</parameter>
32+
<parameter type="constant">Sylius\Component\Payment\Model\PaymentInterface::STATE_NEW</parameter>
33+
<parameter type="constant">Sylius\Component\Payment\Model\PaymentInterface::STATE_PROCESSING</parameter>
34+
<parameter type="constant">Sylius\Component\Payment\Model\PaymentInterface::STATE_AUTHORIZED</parameter>
35+
</parameter>
36+
<parameter type="collection" key="sylius_paypal.repository.query.pay_pal_payment.refundable_states">
37+
<parameter type="constant">Sylius\Component\Payment\Model\PaymentInterface::STATE_COMPLETED</parameter>
38+
</parameter>
39+
</parameters>
40+
2341
<services>
2442
<service id="sylius_paypal.form.extension.payment_method" class="Sylius\PayPalPlugin\Form\Extension\PaymentMethodTypeExtension">
2543
<tag name="form.type_extension" />
2644
</service>
2745

2846
<service id="sylius_paypal.form.type.paypal_configuration" class="Sylius\PayPalPlugin\Form\Type\PayPalConfigurationType">
47+
<argument>%sylius_paypal.sandbox%</argument>
48+
49+
<tag name="form.type" />
2950
<tag name="sylius.gateway_configuration_type" type="sylius_paypal" label="sylius_paypal.label" />
3051
</service>
3152

@@ -46,6 +67,7 @@
4667
<argument type="service" id="router" />
4768
<argument type="service" id="request_stack" />
4869
<argument type="service" id="sylius_paypal.provider.paypal_payment_method" />
70+
<argument>%sylius_paypal.sandbox%</argument>
4971
<tag name="kernel.event_listener" event="sylius.payment_method.initialize_create" method="initializeCreate" />
5072
</service>
5173

@@ -75,6 +97,7 @@
7597
>
7698
<argument type="service" id="sylius.repository.payment" />
7799
<argument type="service" id="sylius.repository.order" />
100+
<deprecated package="sylius/paypal-plugin" version="1.7">The "%service_id%" service is deprecated since 1.7 and will be removed in 3.0.</deprecated>
78101
</service>
79102
<service id="Sylius\PayPalPlugin\Provider\PaymentProviderInterface" alias="sylius_paypal.provider.payment" />
80103

@@ -157,7 +180,9 @@
157180
<service
158181
id="sylius_paypal.processor.locale"
159182
class="Sylius\PayPalPlugin\Processor\LocaleProcessor"
160-
/>
183+
>
184+
<argument type="service" id="sylius_paypal.resolver.supported_locale" />
185+
</service>
161186
<service id="Sylius\PayPalPlugin\Processor\LocaleProcessorInterface" alias="sylius_paypal.processor.locale" />
162187

163188
<service
@@ -188,6 +213,7 @@
188213
>
189214
<argument type="service" id=".inner" />
190215
<argument type="service" id="sylius.repository.payment_method" />
216+
<argument>%sylius_paypal.prioritize_paypal_as_default_method%</argument>
191217
</service>
192218

193219
<service
@@ -291,5 +317,30 @@
291317

292318
<service id="sylius_paypal.verifier.payment_amount" class="Sylius\PayPalPlugin\Verifier\PaymentAmountVerifier" />
293319
<service id="Sylius\PayPalPlugin\Verifier\PaymentAmountVerifierInterface" alias="sylius_paypal.verifier.payment_amount" />
320+
321+
<service
322+
id="sylius_paypal.repository.query.paypal_payment"
323+
class="Sylius\PayPalPlugin\Repository\Query\PaypalPaymentQuery"
324+
>
325+
<argument type="service" id="sylius.manager.payment" />
326+
<argument type="service" id="sylius.repository.payment"/>
327+
<argument>%sylius_paypal.repository.query.pay_pal_payment.updatable_states%</argument>
328+
<argument>%sylius_paypal.repository.query.pay_pal_payment.cancellable_states%</argument>
329+
<argument>%sylius_paypal.repository.query.pay_pal_payment.refundable_states%</argument>
330+
</service>
331+
<service id="Sylius\PayPalPlugin\Repository\Query\PaypalPaymentQueryInterface" alias="sylius_paypal.repository.query.paypal_payment" />
332+
333+
<service id="sylius_paypal.resolver.paypal_payment_methods" class="Sylius\PayPalPlugin\Resolver\PayPalPaymentMethodsResolver">
334+
<argument type="service" id="sylius.repository.payment_method" />
335+
</service>
336+
<service id="Sylius\PayPalPlugin\Resolver\PayPalPaymentMethodsResolverInterface" alias="sylius_paypal.resolver.paypal_payment_methods" />
337+
338+
<service
339+
id="sylius_paypal.resolver.supported_locale"
340+
class="Sylius\PayPalPlugin\Resolver\SupportedLocaleResolver"
341+
>
342+
<argument>%sylius_paypal.supported_locales%</argument>
343+
</service>
344+
<service id="Sylius\PayPalPlugin\Resolver\SupportedLocaleResolverInterface" alias="sylius_paypal.resolver.supported_locale" />
294345
</services>
295346
</container>

config/services/controller.xml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,12 @@
2424
<argument type="service" id="sylius_paypal.provider.payment" />
2525
<argument type="service" id="sylius.manager.payment" />
2626
<argument type="service" id="sylius_paypal.provider.paypal_refund_data" />
27+
<argument type="service" id="sylius_paypal.repository.query.paypal_payment" />
2728
</service>
2829

2930
<service id="sylius_paypal.controller.cancel_paypal_order" class="Sylius\PayPalPlugin\Controller\CancelPayPalOrderAction">
30-
<argument type="service" id="sylius_paypal.provider.payment" />
31-
<argument type="service" id="sylius.repository.order" />
31+
<argument>null</argument>
32+
<argument>null</argument>
3233
<argument type="service" id="request_stack" />
3334
</service>
3435

@@ -38,6 +39,7 @@
3839
<argument type="service" id="request_stack" />
3940
<argument type="service" id="sylius_abstraction.state_machine" />
4041
<argument type="service" id="sylius.order_processing.order_payment_processor.checkout" />
42+
<argument type="service" id="sylius_paypal.repository.query.paypal_payment" />
4143
</service>
4244

4345
<service id="sylius_paypal.controller.cancel_last_paypal_payment" class="Sylius\PayPalPlugin\Controller\CancelLastPayPalPaymentAction">
@@ -50,6 +52,7 @@
5052
<service id="sylius_paypal.controller.cancel_paypal_checkout_payment" class="Sylius\PayPalPlugin\Controller\CancelPayPalCheckoutPaymentAction">
5153
<argument type="service" id="sylius_paypal.provider.payment" />
5254
<argument type="service" id="sylius_paypal.manager.payment_state" />
55+
<argument type="service" id="sylius_paypal.repository.query.paypal_payment" />
5356
</service>
5457

5558
<service id="sylius_paypal.controller.complete_paypal_order" class="Sylius\PayPalPlugin\Controller\CompletePayPalOrderAction">
@@ -89,6 +92,7 @@
8992
<argument type="service" id="sylius_paypal.resolver.capture_payment" />
9093
<argument type="service" id="sylius.remover.payment.order" />
9194
<argument type="service" id="sylius.order_processing.order_processor" />
95+
<argument type="service" id="sylius_paypal.resolver.paypal_payment_methods" />
9296
</service>
9397

9498
<service id="sylius_paypal.controller.paypal_buttons" class="Sylius\PayPalPlugin\Controller\PayPalButtonsController">
@@ -108,6 +112,7 @@
108112
<argument type="service" id="sylius_paypal.provider.available_countries" />
109113
<argument type="service" id="sylius_paypal.api.cache_authorize_client" />
110114
<argument type="service" id="sylius_paypal.api.identity" />
115+
<argument type="service" id="sylius_paypal.processor.locale" />
111116
</service>
112117

113118
<service id="sylius_paypal.controller.process_paypal_order" class="Sylius\PayPalPlugin\Controller\ProcessPayPalOrderAction">
@@ -129,6 +134,7 @@
129134
<argument type="service" id="sylius_paypal.api.update_order" />
130135
<argument type="service" id="sylius.factory.address" />
131136
<argument type="service" id="sylius.order_processing.order_processor" />
137+
<argument type="service" id="sylius_paypal.repository.query.paypal_payment" />
132138
</service>
133139

134140
<service id="sylius_paypal.controller.complete_paypal_order_from_payment_page" class="Sylius\PayPalPlugin\Controller\CompletePayPalOrderFromPaymentPageAction">

ecs.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
return static function (ECSConfig $config): void {
1212
$config->paths([
1313
'src',
14-
'spec',
1514
'tests/Behat',
1615
'tests/Functional',
1716
'tests/Service',
@@ -37,7 +36,6 @@
3736
);
3837

3938
$config->skip([
40-
VisibilityRequiredFixer::class => ['*Spec.php'],
4139
InlineDocCommentDeclarationSniff::class . '.MissingVariable',
4240
]);
4341
};

phpstan.neon.dist

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,16 @@ includes:
33
- vendor/phpstan/phpstan-webmozart-assert/extension.neon
44

55
parameters:
6-
level: 3
7-
8-
reportUnmatchedIgnoredErrors: false
6+
level: 6
97

108
paths:
11-
- 'src/'
9+
- src
1210

1311
excludePaths:
1412
# Makes PHPStan crash
1513
- 'src/DependencyInjection/Configuration.php'
16-
- 'src/DependencyInjection/SyliusPayPalExtension.php'
1714

18-
# Test dependencies
19-
- 'tests/Application/app/**.php'
20-
- 'tests/Application/src/**.php'
15+
ignoreErrors:
16+
- identifier: missingType.iterableValue
17+
18+
- '/Dead catch - Sylius\\PayPalPlugin\\Exception\\PayPalWebhookUrlNotValidException is never thrown in the try block\./' # architectural smell

src/Api/CacheAuthorizeClientApi.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
final readonly class CacheAuthorizeClientApi implements CacheAuthorizeClientApiInterface
2424
{
25+
/** @param ObjectRepository<PayPalCredentialsInterface> $payPalCredentialsRepository */
2526
public function __construct(
2627
private ObjectManager $payPalCredentialsManager,
2728
private ObjectRepository $payPalCredentialsRepository,
@@ -32,7 +33,6 @@ public function __construct(
3233

3334
public function authorize(PaymentMethodInterface $paymentMethod): string
3435
{
35-
/** @var PayPalCredentialsInterface|null $payPalCredentials */
3636
$payPalCredentials = $this->payPalCredentialsRepository->findOneBy(['paymentMethod' => $paymentMethod]);
3737
if ($payPalCredentials !== null && !$payPalCredentials->isExpired()) {
3838
return $payPalCredentials->accessToken();

src/Console/Command/CompletePaidPaymentsCommand.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
)]
3636
final class CompletePaidPaymentsCommand extends Command
3737
{
38+
/** @param PaymentRepositoryInterface<PaymentInterface> $paymentRepository */
3839
public function __construct(
3940
private readonly PaymentRepositoryInterface $paymentRepository,
4041
private readonly ObjectManager $paymentManager,

src/Controller/CancelLastPayPalPaymentAction.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
final readonly class CancelLastPayPalPaymentAction
2727
{
28+
/** @param OrderRepositoryInterface<OrderInterface> $orderRepository */
2829
public function __construct(
2930
private ObjectManager $objectManager,
3031
private StateMachineInterface $stateMachineFactory,
@@ -41,6 +42,10 @@ public function __invoke(Request $request): Response
4142
/** @var PaymentInterface $payment */
4243
$payment = $order->getLastPayment();
4344

45+
if (!$this->stateMachineFactory->can($payment, PaymentTransitions::GRAPH, PaymentTransitions::TRANSITION_CANCEL)) {
46+
return new Response('', Response::HTTP_NO_CONTENT);
47+
}
48+
4449
$this->stateMachineFactory->apply($payment, PaymentTransitions::GRAPH, PaymentTransitions::TRANSITION_CANCEL);
4550

4651
/** @var PaymentInterface $lastPayment */

0 commit comments

Comments
 (0)