2017 © Pedro Peláez
 

library laravel-flow

Laravel package para la integración de pagos con Flow (https://www.flow.cl)

image

cokecancino/laravel-flow

Laravel package para la integración de pagos con Flow (https://www.flow.cl)

  • Friday, December 22, 2017
  • by cokecancino
  • Repository
  • 1 Watchers
  • 5 Stars
  • 306 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 0 Open issues
  • 11 Versions
  • 29 % Grown

The README.md

Laravel Flow

Total Downloads Latest Stable Version License , (*1)

Laravel package para integrar pagos con Flow., (*2)

[!WARNING] Este package está deprecado y ya no recibe mantenimiento, (*3)

En sus inicios, fue creado para implementar el, ahora antiguo, Kit de Integración de Flow en Laravel, ya que en ese entonces no existía otra forma de integración. Actualmente, Flow proporciona una API REST actualizada, por lo que este package se ha vuelto innecesario y potencialmente incompatible con las nuevas versiones de la API de Flow. Por esta razón, se recomienda encarecidamente utilizar la nueva API REST de Flow para futuras integraciones., (*4)

Agradezco a todos los que confiaron en este package para sus proyectos y comercios. Espero que la nueva API REST de Flow proporcione una mejor experiencia y mayor flexibilidad en la integración de pagos., (*5)

Compatibilidad

Este package ha sido probado con las siguientes versiones de Laravel:, (*6)

  • Laravel 5.1
  • Laravel 5.5

Es probable que también sea compatible con otras versiones, pero no ha sido específicamente probado en ellas., (*7)

Instalación

  1. Instalar a través de Composer, (*8)

    composer require cokecancino/laravel-flow
    
  2. Agregar el Service Provider, (*9)

    En el archivo config/app.php, agregar la siguiente línea al array providers:, (*10)

    'providers' => [
       // ...
       CokeCancino\LaravelFlow\FlowServiceProvider::class,
       // ...
    ],
    
  3. Agregar el alias, (*11)

    En el mismo archivo, agregar la siguiente línea al array aliases:, (*12)

    'aliases' => [
       // ...
       'Flow' => CokeCancino\LaravelFlow\Facades\Flow::class,
       // ...
    ],
    
  4. Publicar el archivo de configuración, (*13)

    php artisan vendor:publish --provider="CokeCancino\LaravelFlow\FlowServiceProvider" --force
    
  5. Configura tu .env o modifica tu config/flow.php, (*14)

    FLOW_URL_PAGO=http://flow.tuxpan.com/app/kpf/pago.php
    FLOW_COMERCIO=emailFlow@comercio.com
    

Guía de Uso

A continuación, se muestran ejemplos de su uso en Laravel., (*15)

[!IMPORTANT] Excluye la protección CSRF para las páginas de éxito, fracaso, y confirmación, ya que Flow no sabrá qué token CSRF enviar a tus rutas., (*16)

Formulario de compra

View: resources/views/index.blade.php, (*17)

@extends('layouts._master')

@section('content')


Orden n°:
Monto:
Descripción:
Email pagador (opcional):

@endsection

Creando una nueva orden

Controller: Http/Controllers/FlowController.php, (*18)

<?php

namespace App\Http\Controllers;

use Flow;

use Illuminate\Http\Request;

class FlowController extends Controller
{
    /**
     * Creando una nueva orden
     *
     * @param Request $request
     * @return \Illuminate\View\View
     */
    public function orden(Request $request)
    {
        $orden = [
            'orden_compra'  => $request->input('orden'),
            'monto'         => $request->input('monto'),
            'concepto'      => $request->input('concepto'),
            'email_pagador' => $request->input('pagador'),

            // Opcional: Medio de Pago (Webpay = 1, Servipag = 2, Multicaja = 3, Todos = 9)
            //'medio_pago'    => $request->input('medio_pago'),
        ];

        // Genera una nueva orden de pago, Flow la firma y retorna un paquete de datos firmados
        $orden['flow_pack'] = Flow::new_order($orden['orden_compra'], $orden['monto'], $orden['concepto'], $orden['email_pagador']);

        // Si desea enviar el medio de pago usar la siguiente línea
        //$orden['flow_pack'] = Flow::new_order($orden['orden_compra'], $orden['monto'], $orden['concepto'], $orden['email_pagador'], $orden['medio_pago']);

        return view('orden', $orden);
    }
// ...

View: resources/views/orden.blade.php, (*19)

@extends('layouts._master')

@section('content')
    
    Confirme su orden antes de proceder al pago vía Flow<br>
    <br>
    Orden n°: {{ $orden_compra }}<br>
    Monto: {{ $monto }}<br>
    Descripción: {{ $concepto }}<br>
    Email pagador (opcional): {{ $email_pagador }}<br>
    <br>
    <form method="POST" action="{{ config('flow.url_pago') }}">
        <input type="hidden" name="_token" value="{{ csrf_token() }}">
        <input type="hidden" name="parameters" value="{{ $flow_pack }}">
        <button type="submit">Pagar en Flow</button>
    </form>
@endsection

Página de éxito

Controller: Http/Controllers/FlowController.php, (*20)

// ...
    /**
     * Página de éxito del comercio
     *
     * Esta página será invocada por Flow cuando la transacción resulte exitosa
     * y el usuario presione el botón para retornar al comercio desde Flow.
     *
     * @return \Illuminate\View\View
     */
    public function exito()
    {
        // Lee los datos enviados por Flow
        Flow::read_result();

        // Recupera los datos enviados por Flow
        $orden = [
            'orden_compra'  => Flow::getOrderNumber(),
            'monto'         => Flow::getAmount(),
            'concepto'      => Flow::getConcept(),
            'email_pagador' => Flow::getPayer(),
            'flow_orden'    => Flow::getFlowNumber(),
        ];

        return view('flow.exito', $orden);
    }
// ...

View: resources/views/flow/exito.blade.php, (*21)

@extends('layouts._master')

@section('content')


Página de éxito de comercio

Su pago se ha realizado con éxito<br> <br> Orden de compra: {{ $orden_compra }}<br> Monto: {{ $monto }}<br> Descripción: {{ $concepto }}<br> Pagador: {{ $email_pagador }}<br> Flow orden n°: {{ $flow_orden }}<br> <br> Gracias por su compra @endsection

Página de fracaso

Controller: Http/Controllers/FlowController.php, (*22)

// ...
    /**
     * Página de fracaso del comercio
     *
     * Esta página será invocada por Flow cuando la transacción no se logre pagar
     * y el usuario presione el botón para retornar al comercio desde Flow.
     *
     * @return \Illuminate\View\View
     */
    public function fracaso()
    {
        // Lee los datos enviados por Flow
        Flow::read_result();

        // Recupera los datos enviados por Flow
        $orden = [
            'orden_compra'  => Flow::getOrderNumber(),
            'monto'         => Flow::getAmount(),
            'concepto'      => Flow::getConcept(),
            'email_pagador' => Flow::getPayer(),
            'flow_orden'    => Flow::getFlowNumber(),
        ];

        return view('flow.fracaso', $orden);
    }
// ...

View: resources/views/flow/fracaso.blade.php, (*23)

@extends('layouts._master')

@section('content')


Página de fracaso de comercio

Su pago ha sido rechazado<br> <br> Orden de compra: {{ $orden_compra }}<br> Monto: {{ $monto }}<br> Descripción: {{ $concepto }}<br> Pagador: {{ $email_pagador }}<br> Flow orden n°: {{ $flow_orden }}<br> <br> <a href="{{ url('/') }}">Intente nuevamente</a> @endsection

Página de confirmación

Controller: Http/Controllers/FlowController.php, (*24)

// ...
    /**
     * Página de confirmación del comercio
     *
     * @return void
     */
    public function confirmacion()
    {
        try {
            // Lee los datos enviados por Flow
            Flow::read_confirm();
        } catch (Exception $e) {
            // Si hay un error responde false
            echo Flow::build_response(false);
            return;
        }

        // Recupera los valores de la orden
        $flow_status  = Flow::getStatus();      // El resultado de la transacción (EXITO o FRACASO)
        $orden_numero = Flow::getOrderNumber(); // N° de orden del comercio
        $monto        = Flow::getAmount();      // Monto de la transacción
        $orden_flow   = Flow::getFlowNumber();  // Si $flow_status = 'EXITO' el n° de orden de Flow
        $pagador      = Flow::getPayer();       // El email del pagador

        /**
         * Aquí puede validar la orden
         *
         * Si acepta la orden responder Flow::build_response(true)
         * Si rechaza la orden responder Flow::build_response(false)
         */
        if ($flow_status == 'EXITO') {
            // La transacción fue aceptada por Flow
            // Aquí puede actualizar su información con los datos recibidos por Flow
            echo Flow::build_response(true); // Comercio acepta la transacción
        } else {
            // La transacción fue rechazada por Flow
            // Aquí puede actualizar su información con los datos recibidos por Flow
            echo Flow::build_response(false); // Comercio rechaza la transacción
        }
    }
// ...

Routes

// ...
Route::get('/', function () {
    return view('index');
});
Route::post('orden', 'FlowController@orden')->name('orden');

Route::post('flow/exito', 'FlowController@exito')->name('flow.exito');
Route::post('flow/fracaso', 'FlowController@fracaso')->name('flow.fracaso');
Route::post('flow/confirmacion', 'FlowController@confirmacion')->name('flow.confirmacion');
// ...

Licencia

Este package está licenciado bajo los términos de la Licencia MIT., (*25)

The Versions

22/12 2017

dev-master

9999999-dev https://github.com/cokecancino/laravel-flow

Laravel package para la integración de pagos con Flow (https://www.flow.cl)

  Sources   Download

MIT

The Requires

 

by Jorge Cancino Flores

laravel webpay flow pagos chile transbank servipag multicaja

22/12 2017

1.2.2

1.2.2.0 https://github.com/cokecancino/laravel-flow

Laravel package para la integración de pagos con Flow (https://www.flow.cl)

  Sources   Download

MIT

The Requires

 

by Jorge Cancino Flores

laravel webpay flow pagos chile transbank servipag multicaja

20/12 2017

1.2.1

1.2.1.0 https://github.com/cokecancino/laravel-flow

Laravel package para la integración de pagos con Flow (https://www.flow.cl)

  Sources   Download

MIT

The Requires

 

by Jorge Cancino Flores

laravel webpay flow pagos chile transbank servipag multicaja

20/12 2017

1.2

1.2.0.0 https://github.com/cokecancino/laravel-flow

Laravel package para la integración de pagos con Flow (https://www.flow.cl)

  Sources   Download

MIT

The Requires

 

by Jorge Cancino Flores

laravel webpay flow pagos chile transbank servipag multicaja

11/11 2016

1.1.3

1.1.3.0 https://github.com/cokecancino/laravel-flow

Laravel package para la integración de pagos con Flow (https://www.flow.cl)

  Sources   Download

MIT

The Requires

 

by Jorge Cancino Flores

laravel webpay flow pagos chile transbank servipag

11/11 2016

1.1.2

1.1.2.0 https://github.com/cokecancino/laravel-flow

Laravel package para la integración de pagos con Flow (https://www.flow.cl)

  Sources   Download

MIT

The Requires

 

by Jorge Cancino Flores

laravel webpay flow pagos chile transbank servipag

12/03 2016

1.1.1

1.1.1.0 https://github.com/cokecancino/laravel-flow

Laravel Package para la integración de pagos con Flow (https://www.flow.cl)

  Sources   Download

MIT

The Requires

 

by Jorge Cancino Flores

laravel webpay flow pagos chile transbank servipag

08/02 2016

1.1

1.1.0.0 https://github.com/cokecancino/laravel-flow

Laravel Package para la integración de pagos con Flow (https://www.flow.cl)

  Sources   Download

MIT

The Requires

 

by Jorge Cancino Flores

laravel webpay flow pagos chile transbank servipag

06/02 2016

1.0

1.0.0.0 https://github.com/cokecancino/laravel-flow

Laravel Package para la integración de pagos con Flow (https://www.flow.cl)

  Sources   Download

MIT

The Requires

 

by Jorge Cancino Flores

laravel webpay flow pagos chile transbank servipag

05/02 2016

0.1.1

0.1.1.0

A Laravel Package to use Flow (https://www.flow.cl)

  Sources   Download

MIT

The Requires

 

by Jorge Cancino Flores

05/02 2016

0.1

0.1.0.0

A Laravel Package to use Flow (https://www.flow.cl)

  Sources   Download

MIT

The Requires

 

by Jorge Cancino Flores