3brs / sylius-payment-restrictions-plugin
Payment restriction plugin for Sylius
Package info
github.com/3BRS/sylius-payment-restrictions-plugin
Type:sylius-plugin
pkg:composer/3brs/sylius-payment-restrictions-plugin
Requires
- php: ^8.3
- sylius/sylius: ^2.1
Requires (Dev)
- behat/behat: ^v3.19.0
- dmore/behat-chrome-extension: ^1.4.0
- dmore/chrome-mink-driver: ^2.9.3
- doctrine/annotations: ^2.0.2
- friends-of-behat/mink: ^v1.11.0
- friends-of-behat/mink-browserkit-driver: ^v1.6.2
- friends-of-behat/mink-debug-extension: ^v2.1.0
- friends-of-behat/mink-extension: ^v2.7.5
- friends-of-behat/page-object-extension: ^v0.3.2
- friends-of-behat/suite-settings-extension: ^v1.1.0
- friends-of-behat/symfony-extension: v2.6.0
- friends-of-behat/variadic-extension: ^v1.6.0
- php-http/message-factory: ^1.1.0
- phpstan/phpstan: ^2.1.10
- phpstan/phpstan-doctrine: ^2.0.2
- phpstan/phpstan-strict-rules: ^2.0.4
- phpstan/phpstan-symfony: ^2.0.3
- phpstan/phpstan-webmozart-assert: ^2.0.0
- phpunit/phpunit: ^11.1 || ^12.0.10
- polishsymfonycommunity/symfony-mocker-container: ^v1.0.8
- rector/rector: ^2.0.10
- sylius-labs/coding-standard: ^v4.4.0
- sylius/sylius-rector: ^v3.0.0
- symfony/browser-kit: ^6.4 || ^7.4
- symfony/css-selector: ^6.4 || ^7.4
- symfony/debug-bundle: ^6.4 || ^7.4
- symfony/doctrine-bridge: ^6.4 || ^7.4
- symfony/dotenv: ^6.4 || ^7.4
- symfony/framework-bundle: ^6.4 || ^7.4
- symfony/http-foundation: ^6.4 || ^7.4
- symfony/http-kernel: ^6.4 || ^7.4
- symfony/intl: ^6.4 || ^7.4
- symfony/maker-bundle: ^1.60
- symfony/mime: ^6.4 || ^7.4
- symfony/web-link: ^6.4 || ^7.4
- symfony/web-profiler-bundle: ^6.4 || ^7.4
- symplify/easy-coding-standard: ^12.0
Conflicts
- api-platform/core: <4.2.0
- api-platform/json-schema: <4.2.0
- api-platform/metadata: <4.2.0
- api-platform/symfony: <4.2.0
- doctrine/data-fixtures: <1.8.0
- knplabs/knp-menu-bundle: <3.5.0
- payum/core: <1.7.3
- sylius/resource-bundle: <1.13.1
- sylius/sylius: <2.1.0
- sylius/twig-extra: >=0.9.0 <0.9.1
- sylius/twig-hooks: >=0.9.0 <0.9.1
- symfony/error-handler: >=8.0
- symfony/framework-bundle: >=5.4.0 <=5.4.20|>=6.0.0 <=6.0.16|>=6.1.0 <=6.1.8|>=6.2.0 <=6.2.2|6.2.8
- symfony/validator: 7.3.0
- symfony/var-exporter: >=8.0
- symplify/easy-coding-standard: <10.2.0|12.5.10
This package is auto-updated.
Last update: 2026-03-01 00:57:17 UTC
README
Payment Restrictions Plugin
Features
- Restrict payment method by zone. This enables to limit selected payment methods to specific zones or areas from the delivery address.
- Restrict payment method by shipping method - this means that it can disable specific shipment-payment combinations.
Installation
-
Run
$ composer require 3brs/sylius-payment-restrictions-plugin -
Add plugin class to your
config/bundles.phpreturn [ ... ThreeBRS\SyliusPaymentRestrictionPlugin\ThreeBRSSyliusPaymentRestrictionPlugin::class => ['all' => true], ];
-
Your Entity
PaymentMethodhas to implement\ThreeBRS\SyliusPaymentRestrictionPlugin\Model\PaymentMethodRestrictionInterface. You can use TraitThreeBRS\SyliusPaymentRestrictionPlugin\Model\PaymentMethodRestrictionTrait<?php declare(strict_types=1); namespace Tests\ThreeBRS\SyliusPaymentRestrictionPlugin\Entity; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\Mapping as ORM; use Sylius\Component\Core\Model\PaymentMethod as BasePaymentMethod; use ThreeBRS\SyliusPaymentRestrictionPlugin\Model\PaymentMethodRestrictionInterface; use ThreeBRS\SyliusPaymentRestrictionPlugin\Model\PaymentMethodRestrictionTrait; #[ORM\Entity] #[ORM\Table(name: 'sylius_payment_method')] class PaymentMethod extends BasePaymentMethod implements PaymentMethodRestrictionInterface { use PaymentMethodRestrictionTrait; public function __construct() { parent::__construct(); $this->shippingMethods = new ArrayCollection(); } }
-
Create and run doctrine database migrations
bin/console doctrine:migrations:diff bin/console doctrine:migrations:migrate
- how to use your own entity see Sylius docs - Customizing Models
Development
Usage
- Alter plugin in
/src - See
bin/dir for useful commands
Testing
After your changes you must ensure that the tests are still passing.
composer install bin/console doctrine:database:create --if-not-exists --env=test bin/console doctrine:schema:update --complete --force --env=test yarn --cwd tests/Application install yarn --cwd tests/Application build bin/behat bin/phpstan.sh bin/ecs.sh vendor/bin/phpspec run
Opening Sylius with your plugin
- Install symfony CLI command: https://symfony.com/download
- hint: for Docker (with Ubuntu) use Debian/Ubuntu — APT based
Linux installation steps as
rootuser and withoutsudocommand- you may need to install
curlfirstapt-get update && apt-get install curl --yes
- you may need to install
- hint: for Docker (with Ubuntu) use Debian/Ubuntu — APT based
Linux installation steps as
- Run app
(cd tests/Application && APP_ENV=test bin/console sylius:fixtures:load) (cd tests/Application && APP_ENV=test symfony server:start --dir=public --port=8080)
- change
APP_ENVtodevif you need it
License
This library is under the MIT license.
