chub/interkassa-bundle

There is no license information available for the latest version (dev-master) of this package.

Bundle to integrate interkassa payment system to your Symfony2 project

dev-master / 2.2.x-dev 2013-05-11 09:27 UTC

This package is not auto-updated.

Last update: 2024-04-13 11:09:21 UTC


README

Symfony2 InterkassaBundle allows us to get user payments using Interkassa system. Interkassa is the one of the biggest payment system integrator in Russia and Ukraine.

Build Status knp

Installation

Use composer

Add "chub/interkassa-bundle": "*" to your required section of composer.json and run php composer.phar update.

Register your bundle

Add it to your kernel

<?php
// app/AppKernel.php
public function registerBundles()
{
    $bundles = array(
        // ...
        new ChubProduction\InterkassaBundle\InterkassaBundle(),
    );
    // ...
}

Configuration

Add interkassa section to your app\config.yml

interkassa:
  connections:  # contain shop descriptions
    intercassa:
      shop_id: ololo                     # Shop id (you can get it in your profile)
      secret_key: ololo                  # Secret key (you can get it in your profile)
      fail_url: /profile/balance         # Url to redirect user on transaction fail
      success_url: /profile/balance      # Url to redirect user on transaction success
    #another_shop:
    # ....

Add some routes:

payment_status:
    pattern:   /payment/status/{connection}
    defaults:  { _controller: InterkassaBundle:Payment:status }

payment_success:
    pattern:   /payment/success/{connection}
    defaults:  { _controller: InterkassaBundle:Payment:success }

payment_fail:
    pattern:   /payment/fail/{connection}
    defaults:  { _controller: InterkassaBundle:Payment:fail }

Usage

  • Create your payment item class
<?php
//..
use ChubProduction\InterkassaBundle\Entity\Payment;
use ChubProduction\InterkassaBundle\Service\PaymentItemInterface;

class PaymentItem implements PaymentItemInterface
{
	public function getAmount()
	{
		// return '1.00';
	}

	public function getDescription()
	{
		// return 'ololo';
	}

	public function setPayment(Payment $p)
	{
		// TODO: Implement setPayment() method.
	}
}
  • Create a payment object
$po = new PaymentItem();
  • Redirect user to pay
// Somewhere in your Action
$response = $this->get('payment')->createInvoice($po, 'intercassa');
return $response
  • Check status of the payment
$po->getPayment()->isPaid();

Event system

You can also register your own event subscriber/dispatcher to handle invoice creation, successful or failed transaction. There are InterkassaPaymentEvent object and InterkassaPaymentEvent::ON_INVOICE, InterkassaPaymentEvent::ON_STATUS_SUCCESS, InterkassaPaymentEvent::ON_STATUS_FAIL events for this