sfPayzenPlugin - 0.0.2

Symfony plugin for Payzen

You are currently browsing
the website for symfony 1

Visit the Symfony2 website


« Back to the Plugins Home

Signin


Forgot your password?
Create an account

Tools

Stats

advanced search
Information Readme Releases Changelog Contribute
Show source

sfPayzen plugin (for symfony 1.4)

The sfPayzenPlugin is a symfony plugin that provides basic features to use the Payzen payment plateform

It gives you the classes and the component to create a "Pay" button on your website's pages.

This plugin has been tested for the 2.8 version of Payzen API.

Note that this plugin does not provide persistance in your database. See sfDoctrinePayzenPlugin for a Doctrine implementation for Payzen. Since there is no database persistance, the generation of the vads_trans_id is not provided by this plugin.

Installation

  • Install the plugin (via a package) :

    symfony plugin:install sfPayzenPlugin
    
  • Install the plugin (via a Subversion checkout) :

    svn co http//svn.symfony-project.com/plugins/sfPayzenPlugin/trunk plugins/sfPayzenPlugin
    
  • Activate the plugin in the config/ProjectConfiguration.class.php :

    class ProjectConfiguration extends sfProjectConfiguration
    {
      public function setup()
      {
        $this->enablePlugins(array(
          'sfPayzenPlugin', 
        ));
      }
    }
  • Enable the module in your settings.yml :

    all:
    .settings:
        enabled_modules:      [default, sfPayzenPlugin]
  • Clear you cache

    symfony cc
    

Using the plugin

The easiest way to use the plugin is to configure it in the app.yml

  • Set your parameters in app.yml (see the Payzen documentation for more information) :

    all:
        sf_payzen_plugin:
          options:
            vads_site_id: your_payzen_id
            certificate: your_certificate
            vads_ctx_mode: TEST
            vads_currency: 978 #(euro)
            vads_action_mode: INTERACTIVE
    
  • Configure the payment in your actions.class.php :

    public function executeMyAction(sfWebRequest $request)
    {
        [...]
     
        $this->options = array(
        'vads_amount' => 100000,
        'vads_trans_id' => $vadsTransId,
        );
    }
  • Add the component in your template :

    <?php include_component('SfPayzen', 'payzenForm', array('options'=>$options, 'payzen_version'=>'2_8')) ?>

    That's it. You should see a "Pay" button on your page

app.yml VS direct configuration

Although in most cases app.yml configuration might be sufficient, you can override all the options in your controller.

Note that you can use both way at the same time.

By default, the plugin uses the option specified in the option array. If the option is not set, it will check in the app.yml. Then if the option is still not set, and if it's a required option, the plugin will use the default Payzen value. Finally it will throw an Exception if there is no default value.

  • Overriding the options :

    <?php
     
    public function executeMyAction(sfWebRequest $request)
    {
        [...]
     
        $this->options = array(
        'certificate'=> your_certificate
        'vads_ctx_mode'=> 'PROD'
        'vads_action_mode'=> 'INTERACTIVE'
        'vads_amount' => '100000',
        'vads_trans_id' => $vadsTransId,
        ...,
        );
    }

Using sfPayzenPlugin without the component

If you don't want to use the sfPayzenPlugin's component, you can set all you need to work with Payzen directly in the sfPayzenPayment class.

  • In your controller or custom class :

    <?php
     
    public function myFunction()
    {
        [...]
     
        $options = array(
        'certificate'=> your_certificate
        'vads_ctx_mode'=> sfPayzenPayment_2_8::VADS_CTX_MODE_TEST
        'vads_action_mode'=> VADS_ACTION_MODE_INTERACTIVE
        'vads_amount' => '100000',
        'vads_trans_id' => $vadsTransId,
        ...,
        );
     
     
        $payment = new sfPayzenPayment_2_8($options);
        $signature = $payment->getSignature();
     
        //You can still use the plugin's form
        $form = new sfPayzenPaymentForm($payment);
    }

Extending sfPayzenPlugin

If you want to do something with each sfPayzenPayment created, you can use the built-in symfony event manager. Each time a sfPayzenPayment is created, it notifies the event manager.

  • In your ProjectConfiguration.class.php add :

    $this->dispatcher->connect('sf_payzen_plugin.new_payment', array('myListenerClass', 'listenToPayzenNewPayment'));
  • In your myListener.class.php :

    <?php
     
    class myListener
    {
        static public function listenToPayzenNewPayment(sfEvent $event)
        {
            $sfPayzenPayment = $event->getSubject();
            //Do something with the payment
        }
    }