Skip to content

3BRS/sylius-payment-restrictions-plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

  1. Run $ composer require 3brs/sylius-payment-restrictions-plugin

  2. Add plugin class to your config/bundles.php

    return [
       ...
       ThreeBRS\SyliusPaymentRestrictionPlugin\ThreeBRSSyliusPaymentRestrictionPlugin::class => ['all' => true],
    ];
  3. Your Entity PaymentMethod has to implement \ThreeBRS\SyliusPaymentRestrictionPlugin\Model\PaymentMethodRestrictionInterface. You can use Trait ThreeBRS\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();
            }
        }
  4. Create and run doctrine database migrations

    bin/console doctrine:migrations:diff
    bin/console doctrine:migrations:migrate

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

  1. 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 without sudo command
      • you may need to install curl first apt-get update && apt-get install curl --yes
  2. 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 to dev if you need it

License

This library is under the MIT license.

Credits

Developed by 3BRS
Forked from manGoweb.

About

Restrict payment methods by zone or by shipping method.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 5