idci / payment-bundle
Symfony payment bundle
Package info
github.com/IDCI-Consulting/PaymentBundle
Type:symfony-bundle
pkg:composer/idci/payment-bundle
Requires
- php: ^7.1 || ^8.0
- doctrine/persistence: ^2.2 || ^3.0
- jwarkentin/flaky: ~0.0.9
- paypal/rest-api-sdk-php: ^1.13
- payplug/payplug-php: ^3.0
- payum/iso4217: ~1.0
- ramsey/uuid: ^4.0 || ^5.0 || ^6.0
- ramsey/uuid-doctrine: ^1.4
- stripe/stripe-php: ^6.7
- symfony/dependency-injection: ^4.0 || ^5.0 || ^6.0
- symfony/dom-crawler: ^4.0 || ^5.0 || ^6.0
- symfony/form: ^4.0 || ^5.0 || ^6.0
- symfony/framework-bundle: ^4.0 || ^5.0 || ^6.0
- symfony/intl: ^4.0 || ^5.0 || ^6.0
- symfony/monolog-bundle: ^3.3
- symfony/process: ^4.0 || ^5.0 || ^6.0
- symfony/templating: ^4.0 || ^5.0 || ^6.0
- symfony/twig-bundle: ^4.0 || ^5.0 || ^6.0
Requires (Dev)
- phpunit/phpunit: ^9.0
Suggests
- alma/alma-php-client: ^1.0
- idci/step-bundle: >=4.0
- payu/apple-pay: ^1.3
- symfony/cache: ^4.0 || ^5.0 || ^6.0
This package is auto-updated.
Last update: 2026-06-11 16:23:22 UTC
README
This Symfony bundle provide help for integrating payments solutions by the normalization of payment process thanks to gateways. Each used gateway must have a configuration to set its parameters.
Example controller :
<?php $paymentContext = $this->paymentManager->createPaymentContextByAlias('stripe_test'); // raw alias $payment = $paymentContext->createPayment([ 'item_id' => 5, 'amount' => 500, 'currency_code' => 'EUR', ]); return $this->render('@IDCIPayment/payment.html.twig', [ 'view' => $paymentContext->buildHTMLView(), ]);
A list of commands is provided by this bundle to manage gateway configurations & transactions.
Installation
Add dependency in your composer.json file:
"require": { ..., "idci/payment-bundle": "^4.0", }
Install this new dependency in your application using composer:
$ composer update
Enable bundle in your application kernel :
<?php // config/bundles.php return [ // ... new IDCI\Bundle\PaymentBundle\IDCIPaymentBundle(), ];
Add this to your config.yml file
# config/packages/idci_payment.yaml imports: - {resource: '@IDCIPaymentBundle/Resources/config/config.yml'} # Enable monolog logging using event subscriber plugged on transaction state changes idci_payment: enabled_logger_subscriber: true
(Optional) If you want to customize the payment logger, by defaults, it will output into main handler
# config/packages/monolog.yaml monolog: handlers: # ... payment_log: type: stream path: "%kernel.logs_dir%/%kernel.environment%.log" channels: ['payment']
Install routes in your config/routes/idci_payment.yaml file:
# config/routes/idci_payment.yaml idci_payment: resource: '@IDCIPaymentBundle/Resources/config/routing.yml' prefix: / idci_payment_api: resource: '@IDCIPaymentBundle/Resources/config/routing_api.yml' prefix: /api
These tutorials may help you to personalize yourself this bundle:
- Create a new payment gateway: incorporate new payment method to this bundle
- Create your own transaction manager : help you to retrieve transaction from other stockages methods (default: Doctrine)
- Use this bundle with step bundle: simple configuration to make this bundle work with step bundle
- Create your own event subscriber: learn how to work with transaction event
Supported Gateways
- Stripe (example)
- Paypal (example)
- Paybox (example)
- Monetico (Unsupported for now)
- Ogone (Unsupported for now)
- PayPlug (example)
- SystemPay (example)
- Sofinco (example)
- Sofinco CACF (example)
- Eureka/FloaBank (example)
- Alma (example)
- ApplePay (example)
- Atos Sips Bin
- Atos Sips POST
- Atos Sips JSON
For testing purpose:
Command
PaymentGatewayConfiguration
# To create a PaymentGatewayConfiguration $ php bin/console app:payment-gateway-configuration:create # To show the list of PaymentGatewayConfiguration $ php bin/console app:payment-gateway-configuration:list # To update a PaymentGatewayConfiguration $ php bin/console app:payment-gateway-configuration:update # To delete a PaymentGatewayConfiguration $ php bin/console app:payment-gateway-configuration:delete
Transaction
# Remove all the aborted transaction created 1 day ago
$ php bin/console app:transaction:clean
Tests
Add test routing :
# config/routes/dev/idci_payment.yaml _test_payment: resource: '@IDCIPaymentBundle/Resources/config/routing_test.yml' prefix: /_test/
You can now test gateways on /_test/payment-gateway/select (be sure to have created one or more gateway configuration)
