sylius / refund-plugin
插件为Sylius应用程序提供基本的退款功能。
Requires
- php: ^8.1
- knplabs/knp-snappy-bundle: ^1.7
- myclabs/php-enum: ^1.7
- php-http/message-factory: ^1.1
- sylius/resource-bundle: ^1.9
- sylius/sylius: ~1.12.0 || ~1.13.0
- symfony/messenger: ^5.4.21 || ^6.4
Requires (Dev)
- behat/behat: ^3.6.1
- behat/mink-selenium2-driver: ^1.4
- dmore/behat-chrome-extension: ^1.3
- dmore/chrome-mink-driver: ^2.7
- friends-of-behat/exclude-specifications-extension: ^0.2 || ^0.3
- friends-of-behat/mink: ^1.8
- friends-of-behat/mink-browserkit-driver: ^1.4
- friends-of-behat/mink-debug-extension: ^2.0
- 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
- matthiasnoback/symfony-config-test: ^4.2
- matthiasnoback/symfony-dependency-injection-test: ^4.2
- phpspec/phpspec: ^7.2
- phpstan/phpstan: ^1.6
- phpstan/phpstan-webmozart-assert: ^1.1
- phpunit/phpunit: ^9.5
- polishsymfonycommunity/symfony-mocker-container: ^1.0
- sylius-labs/coding-standard: ^4.2
- symfony/browser-kit: ^5.4.21 || ^6.4
- symfony/debug-bundle: ^5.4.21 || ^6.4
- symfony/dotenv: ^5.4.21 || ^6.4
- symfony/intl: ^5.4 || ^6.0
- symfony/web-profiler-bundle: ^5.4.21 || ^6.4
- symfony/webpack-encore-bundle: ^1.15
Conflicts
- behat/mink-selenium2-driver: >=1.7.0
- 2.0.x-dev
- 1.6.x-dev
- 1.5.x-dev
- v1.5.0
- 1.4.x-dev
- v1.4.0
- 1.3.x-dev
- v1.3.1
- v1.3.0
- 1.2.x-dev
- v1.2.1
- v1.2.0
- 1.1.x-dev
- v1.1.2
- v1.1.1
- v1.1.0
- 1.0.x-dev
- v1.0.2
- v1.0.1
- v1.0.0
- v1.0.0-RC.11
- v1.0.0-RC.10
- v1.0.0-RC.9
- v1.0.0-RC.8
- v1.0.0-RC.7
- v1.0.0-RC.6
- v1.0.0-RC.5
- v1.0.0-RC.4
- v1.0.0-RC.3
- v1.0.0-RC.2
- v1.0.0-RC.1
- v0.10.1
- v0.10.0
- v0.9.1
- v0.9.0
- v0.8.0
- v0.7.0
- v0.6.0
- 0.5.1
- 0.5
- 0.4.3
- 0.4.2
- 0.4.1
- 0.4
- 0.3
- 0.2
- 0.1.2
- 0.1.1
- 0.1
This package is auto-updated.
Last update: 2024-08-26 07:10:43 UTC
README
退款插件
此插件为Sylius应用程序提供基本的退款功能。
商业价值
与核心Sylius包提供的基本退款功能相比,退款插件提供了更广泛的可能性和企业场景。
一旦订单付款,管理员可以访问指定订单的退款部分,并执行所选项目或货物的退款。此外,如果出现更详细的场景,管理员还可以部分退款商品。
从管理员的角度来看,每个退款请求都会创建两个实体
- 贷项单 - 代表已退款项目列表的文件(可下载并通过.pdf文件发送给客户)
- 退款支付 - 代表有利于客户的支付实体
安装
-
使用composer安装插件
composer require sylius/refund-plugin
请记住使用
composer config extra.symfony.allow-contrib true
允许社区食谱或在插件安装过程中进行操作 -
将迁移应用到您的数据库
bin/console doctrine:migrations:migrate
-
默认配置假设启用了PDF文件生成器。如果您不想使用该功能,请更改应用程序配置
# config/packages/sylius_refund.yaml sylius_refund: pdf_generator: enabled: false
否则,请检查您是否具有wkhtmltopdf二进制文件。如果没有,您可以在此处下载。
如果wkhtmltopdf不在
/usr/local/bin/wkhtmltopdf
中,请修改.env
文件中的WKHTMLTOPDF_PATH
环境变量WKHTMLTOPDF_PATH=/usr/local/bin/wkhtmltopdf # Change this! :)
注意!
此安装说明假设您正在使用Symfony Flex。如果您不这样做,请查看旧版安装说明。然而,我们强烈建议您使用Symfony Flex,它会更快! :)
扩展点
退款插件在命令和事件上都非常强大。以RefundUnitsAction为例,整个过程包括以下步骤
- 从请求中获取数据
- 创建一个命令并填充数据
- 分发命令
- 处理命令
- 触发事件
- 在监听器类中捕获事件
使用命令模式和事件使每个步骤独立,这意味着提供退款过程的特定部分的定制实现不会影响其他步骤。
除了事件和命令之外,退款插件还基于从核心Sylius包中派生出的机制,如
上述所有元素的配置都可以在config.yml
文件中找到和自定义。
支付要求
默认情况下,要退款您的订单,您至少需要配置了一个具有offline
网关的可用支付方法。如果您的自定义退款逻辑允许不同类型的网关(例如stripe
),您应该修改特定的参数,如下所示
# config/services.yaml parameters: sylius_refund.supported_gateways: - offline - stripe
如果需要,请实现在线退款逻辑。作为可能的定制的第一次尝试,您可以检查Sylius\RefundPlugin\Event\UnitsRefunded
事件。
退款后的流程
单元退款后,应触发多个其他流程。默认情况下,单元退款后应生成CreditMemo
和RefundPayment
。由于它们紧密耦合,因此始终在CreditMemo
之后创建RefundPayment
。此外,如果RefundPayment
失败,则不应创建相关的CreditMemo
。
Sylius\RefundPlugin\ProcessManager\UnitsRefundedProcessManager
服务简化了整个流程。如果您想向其中添加一个或多个步骤,您应该创建一个实现 Sylius\RefundPlugin\ProcessManager\UnitsRefundedProcessStepInterface
的服务,并使用适当的标签进行注册。
App\ProcessManager\CustomAfterRefundProcessManager: tags: - { name: sylius_refund.units_refunded.process_step, priority: 0 }
标签化的服务将根据其优先级(降序)执行。
支持的分支
1.4
(v1.4.*) - 安全修复1.5
(v1.5.*) - 错误修复,改进1.6
(v1.6.*) - 新功能2.0
(v2.0.*) - 新功能,移除弃用功能,BC 破坏
安全问题
如果您认为您发现了一个安全问题,请勿使用问题跟踪器并不要公开发布。相反,所有安全问题都必须发送到 security@sylius.com
。