- Card payments as supported by GP webpay
- Fully integrated as Sylius payment method
- Using more different gateways at once or per channel
-
Run
$ composer require 3brs/sylius-gpwebpay-plugin. -
Add plugin classes to your
config/bundles.php:return [ ... ThreeBRS\SyliusGPWebpayPaymentGatewayPlugin\ThreeBRSSyliusGPWebpayPaymentGatewayPlugin::class => ['all' => true], ];
-
Load plugin configuration by
config/packages/threebrs_sylius_gpwebpay_payment_gateway_plugin.yaml:imports: - { resource: "@ThreeBRSSyliusGPWebpayPaymentGatewayPlugin/Resources/config/config.yaml" }
-
Generate keys to keep gateway credentials safe:
bin/console sylius:payment:generate-key
- Create GP webpay payment type
in Sylius admin panel, Configuration -> Payment methods
- 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::getResponseto 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\CaptureHttpResponseProviderwhich in our case will return a redirect to the payment gateway webpage
- that will dispatch command to process the payment in
- Develop your plugin in
/src - See
bin/for useful commands
After your changes you must ensure that the tests are still passing.
make ciThis library is under the MIT license.

