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.
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
- 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)
- Atos Sips Bin
- Atos Sips POST
- Atos Sips JSON
For testing purpose:
# 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
# Remove all the aborted transaction created 1 day ago
$ php bin/console app:transaction:clean
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)