webgriffe/sylius-pagolight-plugin

Sylius插件,用于Pagolight和Pagolight Pro支付网关

安装次数: 2,306

依赖者: 0

建议者: 0

安全: 0

星级: 0

关注者: 6

分支: 0

开放问题: 1

类型:sylius-plugin


README

Sylius Pagolight 插件

Sylius插件,用于Pagolight和Pagolight PRO支付方式。

安装

  1. 运行

    composer require webgriffe/sylius-pagolight-plugin
  2. Webgriffe\SyliusPagolightPlugin\WebgriffeSyliusPagolightPlugin::class => ['all' => true] 添加到您的 config/bundles.php 文件中。

    通常,通过 composer require 命令,插件会自动添加到 config/bundles.php 文件中。如果没有自动添加,您需要手动添加。

  3. 创建一个新的文件 config/packages/webgriffe_sylius_pagolight_plugin.yaml

    imports:
        - { resource: "@WebgriffeSyliusPagolightPlugin/config/config.php" }
  4. 导入取消支付所需的路由。将以下内容添加到您的 config/routes.yaml 文件中

    webgriffe_sylius_pagolight_plugin_shop:
        resource: "@WebgriffeSyliusPagolightPlugin/config/shop_routing.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_pagolight_plugin_ajax:
        resource: "@WebgriffeSyliusPagolightPlugin/config/shop_ajax_routing.php"
    
    sylius_shop_payum_cancel:
        resource: "@PayumBundle/Resources/config/routing/cancel.xml"
    

    注意:文件 shop_routing 需要放在前缀 _locale 之后,以便能够以正确的语言显示消息。如果您还没有 Payum 包,还应包括来自 Payum 包的取消路由!

  5. 添加 WebhookToken 实体。创建一个新的文件 src/Entity/Payment/WebhookToken.php,内容如下

     <?php
    
     declare(strict_types=1);
    
     namespace App\Entity\Payment;
    
     use Doctrine\ORM\Mapping as ORM;
     use Webgriffe\SyliusPagolightPlugin\Entity\WebhookToken as BaseWebhookToken;
     
     /**
      * @ORM\Entity
      * @ORM\Table(name="webgriffe_sylius_pagolight_webhook_token")
      */
     class WebhookToken extends BaseWebhookToken
     {
     }
  6. 运行

    php bin/console doctrine:migrations:diff
    php bin/console doctrine:migrations:migrate
  7. 运行

    php bin/console sylius:install:assets

    或者,您可以将条目添加到您的 webpack.config.js 文件中

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

    然后覆盖模板 WebgriffeSyliusPagolightPlugin/after_pay.html.twig 以包含条目

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

使用

访问管理面板并转到“支付方式”部分。创建一个新的支付方式,并将“Pagolight”或“Pagolight PRO”作为网关选择。然后,使用所需参数配置支付方式。

如果货币不是EUR、GBP或CH,或者国家不是意大利或瑞士,则插件会自动隐藏支付方式。如果订单总金额大于100 EUR,则Pagolight PRO也会可见。

贡献

有关Sylius插件开发的全面指南,请参阅Sylius文档,在那里您可以找到插件开发指南,其中包含大量示例。

快速安装

传统

  1. 运行 composer create-project sylius/plugin-skeleton ProjectName

  2. 从插件骨架根目录,运行以下命令

    $ (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)

要设置插件数据库,请记住在 tests/Application/.envtests/Application/.env.test 中配置您的数据库凭据。

Docker

  1. 执行 docker compose up -d

  2. 初始化插件 docker compose exec app make init

  3. 在浏览器中打开 open localhost

使用

运行插件测试

  • PHPUnit

    vendor/bin/phpunit
  • PHPSpec

    vendor/bin/phpspec run
  • Behat(非JS场景)

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

    1. 安装Symfony CLI命令.

    2. 启动无头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. 安装SSL证书(只需一次)并在 127.0.0.1:8080 上运行测试应用程序的web服务器
    symfony server:ca:install
    APP_ENV=test symfony server:start --port=8080 --dir=tests/Application/public --daemon
    1. 运行Behat
    vendor/bin/behat --strict --tags="@javascript"
  • 静态分析

    • Psalm

      vendor/bin/psalm
    • PHPStan

      vendor/bin/phpstan analyse -c phpstan.neon -l max src/  
  • 编码规范

    vendor/bin/ecs check

打开Sylius并使用您的插件

  • 使用 test 环境

    (cd tests/Application && APP_ENV=test bin/console sylius:fixtures:load)
    (cd tests/Application && APP_ENV=test bin/console server:run -d public)
  • 使用 dev 环境

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