macklus/yii2-redsys-tpv

Manage payment form generator from RedSys TPV

Installs: 454

Dependents: 0

Suggesters: 0

Security: 0

Stars: 1

Watchers: 2

Forks: 0

Open Issues: 0

Type:yii2-extension

dev-master 2017-04-04 13:42 UTC

This package is not auto-updated.

Last update: 2024-04-28 01:34:34 UTC


README

Manage payment form generator from Redsys TPV

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist macklus/yii2-redsys-tpv "*"

or add

"macklus/yii2-redsys-tpv": "*"

to the require section of your composer.json file.

Configure

Configure tpv component, using:

'redsys' => [
            'class' => 'macklus\RedsysTpv\Tpv',
            'mode' => 'prod',
            'debug' => [
                'Merchant' => '0XXXXXXXX',
                'Terminal' => '0000000X',
                'Key' => 'XXXXXXXX',
                'URL_OK' => '',
                'URL_NOK' => '',
				'Version' => '',
            ],
            'prod' => [
                'Merchant' => '0XXXXXXXX',
                'Terminal' => '0000000X',
                'Key' => 'XXXXXXXX',
                'URL_OK' => '',
                'URL_NOK' => '',
				'Version' => '',
            ],
        ],

The mode variable define usage mode, so far:

  1. prod: production mode
  2. debug: debug mode

Generate the payment form

You can generate the payment form using next code in your view:

<?php

use Yii;
?>

<?= Yii::$app->redsys->generateForm($Num_operacion, $Importe, $TipoMoneda = 978, $idioma = 1, $showButton = true) ?>
  • Num_operation: Alphanumeric code who identifies this order
  • Importe: The total amount of payment
  • TipoMoneda: Coin
  • Idioma: Language
  • showButton: if true, the form include submit button. If false, you should submit it througt javascript. Remember that form id is always ceca-tpv-form

Handle TPV response

Once you have been pay, TPV should POST payment info (if you configure it). To handle that, you should use in your action:

<?php
class PaymentsController extends Controller
{

    public function init()
    {
        if (isset($_POST)) {
            /* Turn off CSRF */
            Yii::$app->request->enableCsrfValidation = false;
        }
    }
    
    public function actionTpv()
    {
        $logfile = Yii::getAlias('@runtime/tpv.log');

        if (isset($_POST)) {
            file_put_contents($logfile, print_R($_POST, true), FILE_APPEND);
        }

        $response = Yii::$app->tpv->getTPVResponse();
        if ($response && $response->isValid()) {
          // do some stuff on your database or app
          if( myStuffWorkFine ) {
            $response->returnOkToServer();
          } else {
            $response->returnErrorToServer();
          }
        }

        Yii::$app->request->enableCsrfValidation = true;
    }
}