PHP code example of blenderdeluxe / flow-laravel-system
1. Go to this page and download the library: Download blenderdeluxe/flow-laravel-system library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
blenderdeluxe / flow-laravel-system example snippets
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);
}
…
…
/**
* 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);
}
…
…
/**
* 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);
}
…
…
/**
* 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
}
}
…