sylius/refund-plugin

插件为Sylius应用程序提供基本的退款功能。

安装次数: 1,181,811

依赖项: 11

建议者: 1

安全: 0

星标: 64

关注者: 15

分支: 65

开放问题: 21

类型:sylius-plugin


README

退款插件

此插件为Sylius应用程序提供基本的退款功能。

Screenshot showing order's refund section

Screenshot showing order's credit memos and refund payments

Screenshot showing credit memo details page

商业价值

与核心Sylius包提供的基本退款功能相比,退款插件提供了更广泛的可能性和企业场景。

一旦订单付款,管理员可以访问指定订单的退款部分,并执行所选项目或货物的退款。此外,如果出现更详细的场景,管理员还可以部分退款商品。

从管理员的角度来看,每个退款请求都会创建两个实体

  • 贷项单 - 代表已退款项目列表的文件(可下载并通过.pdf文件发送给客户)
  • 退款支付 - 代表有利于客户的支付实体

安装

  1. 使用composer安装插件

    composer require sylius/refund-plugin

    请记住使用composer config extra.symfony.allow-contrib true允许社区食谱或在插件安装过程中进行操作

  2. 将迁移应用到您的数据库

    bin/console doctrine:migrations:migrate
  3. 默认配置假设启用了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事件。

退款后的流程

单元退款后,应触发多个其他流程。默认情况下,单元退款后应生成CreditMemoRefundPayment。由于它们紧密耦合,因此始终在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