承接 webgriffe/sylius-pausepay-plugin 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

webgriffe/sylius-pausepay-plugin

最新稳定版本:v0.1.4

Composer 安装命令:

composer require webgriffe/sylius-pausepay-plugin

包简介

Sylius plugin for PausePay payment gateway

README 文档

README

Sylius PausePay Plugin

Sylius plugin for PausePay payment method.

Installation

  1. Run:

    composer require webgriffe/sylius-pausepay-plugin
  2. Add Webgriffe\SyliusPausePayPlugin\WebgriffeSyliusPausePayPlugin::class => ['all' => true] to your config/bundles.php.

    Normally, the plugin is automatically added to the config/bundles.php file by the composer require command. If it is not, you have to add it manually.

  3. Create a new file config/packages/webgriffe_sylius_pausepay_plugin.yaml:

    imports:
      - { resource: "@WebgriffeSyliusPausePayPlugin/config/config.php" }
  4. Create a new file config/routes/webgriffe_sylius_pausepay_plugin.yaml:

    webgriffe_sylius_pausepay_plugin_shop:
        resource: "@WebgriffeSyliusPausePayPlugin/config/routes/shop.php"
        prefix: /{_locale}
        requirements:
            _locale: ^[A-Za-z]{2,4}(_([A-Za-z]{4}|[0-9]{3}))?(_([A-Za-z]{2}|[0-9]{3}))?$
    
    webgriffe_sylius_pausepay_plugin_index:
        resource: "@WebgriffeSyliusPausePayPlugin/config/routes/index.php"
    
    webgriffe_sylius_pausepay_plugin_payum:
        resource: "@WebgriffeSyliusPausePayPlugin/config/routes/payum.php"
    
    sylius_shop_payum_cancel:
        resource: "@PayumBundle/Resources/config/routing/cancel.xml"
  5. Add the PaymentOrder entity. Create a new file src/Entity/Payment/PaymentOrder.php with the following content:

    <?php
    
    declare(strict_types=1);
    
    namespace App\Entity\Payment;
    
    use Doctrine\ORM\Mapping as ORM;
    use Webgriffe\SyliusPausePayPlugin\Entity\PaymentOrder as BasePaymentOrder;
    
    /**
     * @ORM\Entity
     * @ORM\Table(name="webgriffe_sylius_pausepay_payment_order")
     */
    class PaymentOrder extends BasePaymentOrder
    {
    }
  6. Add a new CompanyInfoResolver service that decorates the dummy service webgriffe_sylius_pausepay.resolver.company_info of the plugin. This service is used to resolve the company info "of the order" and will be passed to PausePay system upon payment creation.

    Create a new file src/Resolver/PausePay/CompanyInfoResolver.php with the following content:

    <?php
    
    declare(strict_types=1);
    
    namespace App\Resolver\PausePay;
    
    use Sylius\Component\Core\Model\OrderInterface;
    use Webgriffe\SyliusPausePayPlugin\Resolver\CompanyInfoResolverInterface;
    use Webgriffe\SyliusPausePayPlugin\ValueObject\CompanyInfo;
    
    final class CompanyInfoResolver implements CompanyInfoResolverInterface
    {
        public function resolveFromOrder(OrderInterface $order): CompanyInfo
        {
            // TODO: your logic here
        }
    }

    and define it as the decoration/replacement of the service with alias webgriffe_sylius_pausepay.resolver.company_info. For example create the file config/services/resolver.yaml with content:

    services:
        webgriffe_sylius_pausepay.resolver.company_info:
            class: App\Resolver\PausePay\CompanyInfoResolver

    TODO: Add sandbox logic

  7. If you have a custom implementation of the Sylius service PaymentMethodResolver, you must add the logic to check the availability of PausePay payment method by using the service PausePayAvailabilityChecker.

    TODO: Add example

  8. Run:

    php bin/console doctrine:migrations:migrate
  9. Run:

    php bin/console sylius:install:assets

    Or, you can add the entry to your webpack.config.js file:

    .addEntry(
        'webgriffe-sylius-pausepay-entry',
        './vendor/webgriffe/sylius-pausepay-plugin/public/poll_payment.js'
    )

    And then override the template WebgriffeSyliusPausePayPlugin/after_pay.html.twig to include the entry:

    {% block javascripts %}
        {{ parent() }}
    
        <script>
            window.afterUrl = "{{ afterUrl }}";
            window.paymentStatusUrl = "{{ paymentStatusUrl }}";
        </script>
        {{ encore_entry_script_tags('webgriffe-sylius-pausepay-entry', null, 'sylius.shop') }}
    {% endblock %}

Usage

Access to the admin panel and go to the Payment methods section. Create a new payment method and select PausePay as gateway. Then, configure the payment method with the required parameters.

Contributing

For a comprehensive guide on Sylius Plugins development please go to Sylius documentation, there you will find the Plugin Development Guide, that is full of examples.

Quickstart Installation

Traditional

  1. Run composer create-project sylius/plugin-skeleton ProjectName.

  2. From the plugin skeleton root directory, run the following commands:

    $ (cd tests/Application && yarn install)
    $ (cd tests/Application && yarn build)
    $ (cd tests/Application && APP_ENV=test bin/console assets:install public)
    
    $ (cd tests/Application && APP_ENV=test bin/console doctrine:database:create)
    $ (cd tests/Application && APP_ENV=test bin/console doctrine:schema:create)

To be able to set up a plugin's database, remember to configure you database credentials in tests/Application/.env and tests/Application/.env.test.

Docker

  1. Execute docker compose up -d

  2. Initialize plugin docker compose exec app make init

  3. See your browser open localhost

Usage

Running plugin tests

  • PHPUnit

    vendor/bin/phpunit
  • PHPSpec

    vendor/bin/phpspec run
  • Behat (non-JS scenarios)

    vendor/bin/behat --strict --tags="~@javascript"
  • Behat (JS scenarios)

    1. Install Symfony CLI command.

    2. Start Headless Chrome:

    google-chrome-stable --enable-automation --disable-background-networking --no-default-browser-check --no-first-run --disable-popup-blocking --disable-default-apps --allow-insecure-localhost --disable-translate --disable-extensions --no-sandbox --enable-features=Metal --headless --remote-debugging-port=9222 --window-size=2880,1800 --proxy-server='direct://' --proxy-bypass-list='*' http://127.0.0.1
    1. Install SSL certificates (only once needed) and run test application's webserver on 127.0.0.1:8080:
    symfony server:ca:install
    APP_ENV=test symfony server:start --port=8080 --dir=tests/Application/public --daemon
    1. Run Behat:
    vendor/bin/behat --strict --tags="@javascript"
  • Static Analysis

    • Psalm

      vendor/bin/psalm
    • PHPStan

      vendor/bin/phpstan analyse -c phpstan.neon -l max src/  
  • Coding Standard

    vendor/bin/ecs check

Opening Sylius with your plugin

  • Using test environment:

    (cd tests/Application && APP_ENV=test bin/console sylius:fixtures:load)
    (cd tests/Application && APP_ENV=test bin/console server:run -d public)
  • Using dev environment:

    (cd tests/Application && APP_ENV=dev bin/console sylius:fixtures:load)
    (cd tests/Application && APP_ENV=dev bin/console server:run -d public)

统计信息

  • 总下载量: 162
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 5
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: proprietary
  • 更新时间: 2024-09-13