Skip to content

IDCI-Consulting/PaymentBundle

Folders and files

NameName
Last commit message
Last commit date
Sep 3, 2018
May 25, 2020
Sep 27, 2021
Jul 3, 2020
Jun 21, 2018
Jul 3, 2020
Jul 1, 2021
Jul 3, 2020
Dec 30, 2022
May 13, 2024
Oct 7, 2019
May 13, 2024
Jun 5, 2024
Dec 30, 2022
Dec 30, 2022
Jun 5, 2018
Jun 12, 2018
Jun 5, 2018
Sep 3, 2018
Oct 13, 2022
Dec 30, 2022
Jul 23, 2018
Jul 23, 2018

Repository files navigation

PaymentBundle

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:

Supported Gateways

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)

Resources

UML Diagram

UML Diagram