3brs / sylius-payment-restrictions-plugin
Payment restriction plugin for Sylius
Installs: 6 636
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 2
Forks: 4
Open Issues: 4
Type:sylius-plugin
Requires
- php: ^8.0
- sylius/sylius: ^1.11|^1.12
Requires (Dev)
- behat/behat: ^3.9.0
- behat/mink-selenium2-driver: ^1.4
- dmore/behat-chrome-extension: ^1.3
- dmore/chrome-mink-driver: ^2.7
- friends-of-behat/mink: ^1.10
- friends-of-behat/mink-browserkit-driver: ^1.4
- friends-of-behat/mink-debug-extension: ^2.1
- friends-of-behat/mink-extension: ^2.4
- friends-of-behat/page-object-extension: ^0.3
- friends-of-behat/suite-settings-extension: ^1.0
- friends-of-behat/symfony-extension: ^2.1
- friends-of-behat/variadic-extension: ^1.3
- php-http/message-factory: ^1.0.0
- phpstan/phpstan: ^1.8.1
- phpstan/phpstan-doctrine: 1.3.37
- phpstan/phpstan-strict-rules: ^1.3.0
- phpstan/phpstan-symfony: ^1.3
- phpstan/phpstan-webmozart-assert: ^1.2.0
- phpunit/phpunit: ^9.5
- polishsymfonycommunity/symfony-mocker-container: ^1.0
- rector/rector: ^0.18.12
- sylius-labs/coding-standard: ^4.2
- symfony/browser-kit: ^5.4 || ^6.0
- symfony/debug-bundle: ^5.4 || ^6.0
- symfony/dotenv: ^5.4 || ^6.0
- symfony/flex: ^2.2.2
- symfony/framework-bundle: ^5.4 || ^6.0
- symfony/http-foundation: ^5.4 || ^6.0
- symfony/http-kernel: ^5.4 || ^6.0
- symfony/intl: ^5.4 || ^6.0
- symfony/web-profiler-bundle: ^5.4 || ^6.0
- vimeo/psalm: 5.9.0
Conflicts
- babdev/pagerfanta-bundle: <3.6.1
- doctrine/collections: <1.7.0
- doctrine/dbal: <2.13.3
- doctrine/doctrine-bundle: <2.4.2
- friendsofsymfony/rest-bundle: <3.1.0
- jms/serializer-bundle: <4.2.0
- knplabs/knp-menu: <3.3.0
- lexik/jwt-authentication-bundle: <2.12
- masterminds/html5: <2.7.5
- polishsymfonycommunity/symfony-mocker-container: <1.0.6
- sylius/resource-bundle: <1.10.0
- symfony/css-selector: <4.4.24
- symfony/framework-bundle: >=6.1.0 <6.1.4|6.2.8
- symfony/mime: <5.4.0
- symfony/web-link: <5.3.0
- symplify/easy-coding-standard: <10.2.0
- twig/twig: <2.14.7
- webmozart/assert: <1.11.0
- willdurand/negotiation: <3.0
This package is auto-updated.
Last update: 2024-11-30 02:08:08 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.php
return [ ... ThreeBRS\SyliusPaymentRestrictionPlugin\ThreeBRSSyliusPaymentRestrictionPlugin::class => ['all' => true], ];
-
Your Entity
PaymentMethod
has to implement\ThreeBRS\SyliusPaymentRestrictionPlugin\Model\PaymentMethodRestrictionInterface
. You can use TraitThreeBRS\SyliusPaymentRestrictionPlugin\Model\PaymentMethodRestrictionTrait
<?php declare(strict_types=1); namespace App\Entity\Payment; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\Mapping as ORM; use Sylius\Component\Core\Model\Payment as BasePayment; use ThreeBRS\SyliusPaymentRestrictionPlugin\Model\PaymentMethodRestrictionInterface; use ThreeBRS\SyliusPaymentRestrictionPlugin\Model\PaymentMethodRestrictionTrait; /** * @ORM\Entity * @ORM\Table(name="sylius_payment_method") */ class PaymentMethod extends BasePayment implements PaymentMethodRestrictionInterface { use PaymentMethodRestrictionTrait; public function __construct() { parent::__construct(); $this->shippingMethods = new ArrayCollection(); } }
-
Add to
@SyliusAdmin/PaymentMethod/_form.html.twig
(you will have to probably copy-paste original as there is no way to extend that section){# ... #} <div class="ui segment"> {# ... #} <div class="two fields"> {{ form_row(form.zone) }} {{ form_row(form.shippingMethods) }} </div> </div> {# ... #}
-
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
root
user and withoutsudo
command- you may need to install
curl
firstapt-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_ENV
todev
if you need it
License
This library is under the MIT license.