Introduction
This bundle introduces the Ogone payment process gateway into a Symfony project
It uses the marlon-ogone Bundle, and adds a different integration approach, (*1)
More info about Ogone can be found here: http://www.ogone.com, (*2)
WARNING: THIS BUNDLE IS IN BETA STAGE, USE AT YOUR OWN RISKS !, (*3)
Prerequisites
- Symfony 2.1>=
- You must have a valid Ogone account, configured with SHA-IN and SHA-OUT security activated
Installation
Download the bundle:, (*4)
{
"require": {
"snowcap/ogone-bundle": "dev-master"
}
$ php composer.phar update snowcap/ogone-bundle
Add it to your application's kernel:, (*5)
// app/ApplicationKernel.php
public function registerBundles()
{
return array(
// ...
new Snowcap\OgoneBundle\SnowcapOgoneBundle(),
// ...
);
}
Configuration
Put the following configuration options in your config file:, (*6)
snowcap_ogone:
pspid: [your_ogone_pspid]
environment: [test|prod]
sha_in: [your_ogone_sha_in_passhprase]
sha_out: [your_ogone_sha_out_passhprase]
options:
# any option you may want to pass to Ogone, as key: value pairs
Usage
A service 'snowcap_ogone.manager' allows you to get the ogone form rendering, whereby you can also define the acceptUrl, and any other option you want to send to Ogone
An example could be:, (*7)
/** @var $ogone \Snowcap\OgoneBundle\Manager */
$ogone = $this->get('snowcap_ogone');
$ogoneForm = $ogone->getRequestForm($locale, $orderId, $customerName, $amount, $currency, array(
'acceptUrl' => $this->generateUrl('your_success_page_route_name', array(), true),
// and any other option your may want to pass to Ogone
));
return array(
'ogone_form' => $ogoneForm,
);
Pay attention, this is not a Symfony form, just a simple rendered form provided by the Ogone library., (*8)
...
{{ ogone_form|raw }}
Getting Ogone result
First you need to add a route in your routing.yml, (*9)
snowcap_ogone:
resource: "@SnowcapOgoneBundle/Controller"
type: annotation
To catch Ogone's result, you have to create a service and tag it as an event subscriber (or an event listener):
For example:, (*10)
my_company_bundle.ogone_subscriber:
class: MyCompany\MyBundle\Ogone\OgoneSubscriber
tags:
- { name: kernel.event_subscriber }
That service has to implement the EventSubscriberInterface, like the following:, (*11)
<?php
namespace MyCompany\MyBundle\Ogone;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Snowcap\OgoneBundle\Event\OgoneEvent;
use Snowcap\OgoneBundle\OgoneEvents;
class OgoneSubscriber implements EventSubscriberInterface
{
/**
* @param \Snowcap\OgoneBundle\Event\OgoneEvent $event
*/
public function onOgoneSuccess(OgoneEvent $event)
{
}
/**
* @param \Snowcap\OgoneBundle\Event\OgoneEvent $event
*/
public function onOgoneError(OgoneEvent $event)
{
}
/**
* @return array
*/
public static function getSubscribedEvents()
{
return array(
OgoneEvents::SUCCESS => 'onOgoneSuccess',
OgoneEvents::ERROR => 'onOgoneError'
);
}
}
You now have two methods inside your bundle to operate all the business logic you need, enjoy !, (*12)