3brs/sylius-gpwebpay-payment-gateway-plugin

GPWebpay plugin for Sylius

v2.2.0 2025-06-03 09:21 UTC

This package is auto-updated.

Last update: 2025-08-28 19:01:14 UTC


README

GP webpay Payment Gateway Plugin

Features

  • Card payments as supported by GP webpay
  • Fully integrated as Sylius payment method
  • Using more different gateways at once or per channel

Installation

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

  2. Add plugin classes to your config/bundles.php:

    return [
       ...
       ThreeBRS\SyliusGPWebpayPaymentGatewayPlugin\ThreeBRSSyliusGPWebpayPaymentGatewayPlugin::class => ['all' => true],
    ];
  3. Load plugin configuration by config/packages/threebrs_sylius_gpwebpay_payment_gateway_plugin.yaml:

    imports:
     - { resource: "@ThreeBRSSyliusGPWebpayPaymentGatewayPlugin/Resources/config/config.yaml" }
  4. Generate keys to keep gateway credentials safe:

    bin/console sylius:payment:generate-key

Usage

  • Create GP webpay payment type
    in Sylius admin panel, Configuration -> Payment methods

Sylius 2 pay workflow

  • Customer hit Pay button
  • Request goes to \Sylius\Bundle\CoreBundle\OrderPay\Controller\OrderPayController::payAction
  • That will emit redirect 302 by \Sylius\Bundle\CoreBundle\OrderPay\Provider\PaymentRequestPayResponseProvider::getResponse to route like /en_US/payment-request/pay/0197204a-8284-7301-9b30-e151c7d14ec5
  • That request goes to \Sylius\Bundle\CoreBundle\OrderPay\Action\PaymentRequestPayAction::__invoke
    • that will dispatch command to process the payment in \Sylius\Bundle\PaymentBundle\Processor\HttpResponseProcessor::process
    • that will find command provider fitting the payment method in \Sylius\Bundle\PaymentBundle\CommandProvider\AbstractServiceCommandProvider::provide, in our case \ThreeBRS\SyliusGPWebpayPaymentGatewayPlugin\CommandProvider\CapturePaymentRequestCommandProvider
    • the provider will give command \ThreeBRS\SyliusGPWebpayPaymentGatewayPlugin\Command\CapturePaymentRequest
    • that will be handled by \ThreeBRS\SyliusGPWebpayPaymentGatewayPlugin\CommandHandler\CapturePaymentRequestHandler
      • ⚠️ if messenger is configured as async, the payment will not be processed immediately and customer will end on Pay page again ⚠️
      • that command handler may resolve the payment, but in our case it will just prepare payload for the payment gateway webpage
    • then the "capture" response is processed by \ThreeBRS\SyliusGPWebpayPaymentGatewayPlugin\ResponseProvider\CaptureHttpResponseProvider which in our case will return a redirect to the payment gateway webpage

Development

Usage

  • Develop your plugin in /src
  • See bin/ for useful commands

Testing

After your changes you must ensure that the tests are still passing.

make ci

License

This library is under the MIT license.

Credits

Developed by 3BRS
Forked from manGoweb.