2017 © Pedro Peláez
 

library laravel-payu

Una interfaz fluida para Laravel usando el SDK oficial de PayU latam.

image

alexo/laravel-payu

Una interfaz fluida para Laravel usando el SDK oficial de PayU latam.

  • Sunday, April 29, 2018
  • by alejogutierrez
  • Repository
  • 4 Watchers
  • 9 Stars
  • 756 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 12 Forks
  • 0 Open issues
  • 8 Versions
  • 10 % Grown

The README.md

LaravelPayU

Introducción

LaravelPayU provee una interfaz sencilla para utilizar el sdk de PayU en proyectos que tienen como base el framework Laravel. Este proyecto hace uso del sdk de Payu, pero no es un proyecto oficial de PayU., (*1)

Instalación y configuración

Instalar el paquete mediante composer:, (*2)

composer require alexo/laravel-payu

Luego incluir el ServiceProvider en el arreglo de providers en config/app.php, (*3)

Alexo\LaravelPayU\LaravelPayUServiceProvider::class,

Publicar la configuración para incluir la informacion de la cuenta de PayU:, (*4)

php artisan vendor:publish 

Incluir la informacion de la cuenta y ajustes en el archivo .env ó directamente en el archivo de configuración config/payu.php, (*5)

APP_ENV=local

PAYU_ON_TESTING=true

PAYU_MERCHANT_ID=your-merchant-id

PAYU_API_LOGIN=your-api-login

PAYU_API_KEY=your-api-key

PAYU_ACCOUNT_ID=your-account-id

PAYU_COUNTRY=your-country-ref: AR/BR/CO/CL/MX/PA/PE/US

PSE_REDIRECT_URL=your-pse-redirect-url

Uso del API

Esta versión contiene solo una interfaz para pagos únicos y consultas. Si necesita usar tokenización y pagos recurrentes debe usar el sdk de PayU directamente., (*6)

Ping y Bancos

Para consultar la disponibilidad de la plataforma se puede usar el método doPing en el controlador designado:, (*7)

<?php

namespace App\Http\Controllers;

use Alexo\LaravelPayU\LaravelPayU;

class PaymentsController extends Controller
{
    LaravelPayU::doPing(function($response) {
        $code = $response->code;
        // ... revisar el codigo de respuesta
    }, function($error) {
     // ... Manejo de errores PayUException
    });

Para consulta de bancos se utiliza el método getPSEBanks que también recibe una función de respuesta y una de error:, (*8)

<?php

namespace App\Http\Controllers;

use Alexo\LaravelPayU\LaravelPayU;

class PaymentsController extends Controller
{
    LaravelPayU::getPSEBanks(function($banks) {
        //... Usar datos de bancos
        foreach($banks as $bank) {
            $bankCode = $bank->pseCode;
        }
    }, function($error) {
        // ... Manejo de errores PayUException, InvalidArgument
    });

Pagos Únicos

Permite el pago de ordenes generadas a través del uso de un trait de la siguiente manera:, (*9)

En el modelo de las ordenes, en este caso Order.php debe incluir:, (*10)

<?php

namespace App;

use Alexo\LaravelPayU\Payable;
use Illuminate\Database\Eloquent\Model;

class Order extends Model
{
    use Payable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'reference', 'payu_order_id',  'transaction_id', 'state', 'value', 'user_id'
    ];
}

Nota: Los campos reference, payu_order_id, transaction_id, son necesarios para realizar consultas posteriormente., (*11)

Una vez configurado el modelo, en el controlador designado para pagos podemos usar el método payWith para hacer la consulta y captura de pago (equivalente a doAuthorizationAndCapture en el sdk):, (*12)

<?php

$order = Order::find($id);

$data = [
    \PayUParameters::DESCRIPTION => 'Payment cc test',
    \PayUParameters::IP_ADDRESS => '127.0.0.1',
    \PayUParameters::CURRENCY => 'COP',
    \PayUParameters::CREDIT_CARD_NUMBER => '378282246310005',
    \PayUParameters::CREDIT_CARD_EXPIRATION_DATE => '2017/02',
    \PayUParameters::CREDIT_CARD_SECURITY_CODE => '1234',
    \PayUParameters::INSTALLMENTS_NUMBER => 1 ...
];

$order->payWith($data, function($response, $order) {
    if ($response->code == 'SUCCESS') {
        $order->update([
            'payu_order_id' => $response->transactionResponse->orderId,
            'transaction_id' => $response->transactionResponse->transactionId
        ]);
        // ... El resto de acciones sobre la orden
    } else {
    //... El código de respuesta no fue exitoso
    }
}, function($error) {
    // ... Manejo de errores PayUException, InvalidArgument
});

El método payWith recibe tres parámetros:, (*13)

  • Los parámetros de pago, usando "\" delante de la clase PayUParameters, para poder utilizar la constante, dado que el sdk no usa namespaces y autoloading.
  • Una función (closure) que recibe la respuesta de la consulta.
  • Una función (closure) que recibe las Excepciones generadas por validación ó errores en el pago.

También puede usar los métodos authorizeWith y captureWith para autorización de pago y captura de la orden, pero recuerde que sólo están disponibles para Brasíl., (*14)

Ver documentación del sdk para pagos., (*15)

Consultas

Para las consultas se agrega el trait Searchable en el modelo de la orden asi:, (*16)

<?php

namespace App;

use Alexo\LaravelPayU\Payable;
use Alexo\LaravelPayU\Searchable;
use Illuminate\Database\Eloquent\Model;

class Order extends Model
{
    use Payable, Searchable;
}

Luego en el controlador designado para consultas podemos hacer consultas usando el id asignado por Payu, la referencia dada por nosotros, o el id de la transacción:, (*17)

<?php

$order = Order::find($id);

$order->searchById(function($response, $order) {
    // ... Usar la información de respuesta
}, function($error) {
    // ... Manejo de errores PayUException, InvalidArgument
});

$order->searchByReference(function($response, $order) {
    // ... Usar la información de respuesta
}, function($error) {
    // ... Manejo de errores PayUException, InvalidArgument
});

$order->searchByTransaction(function($response, $order) {
    // ... Usar la información de respuesta
}, function($error) {
    // ... Manejo de errores PayUException, InvalidArgument
});

Los métodos searchById, searchByReference y searchByTransaction reciben dos parámetros:, (*18)

  • Una función (closure) que recibe la respuesta de la consulta.
  • Una función (closure) que recibe las Excepciones generadas por validación ó errores en el pago.

Ver documentación del sdk de consultas., (*19)

Pruebas

Instalar las dependencias del paquete. Crear un archivo .env en la raiz del paquete con la configuración respectiva de pruebas para Colombia, ya que es el único país con los tres métodos de pago disponibles. Ver información en sitio de PayU y luego si ejecutar las pruebas:, (*20)

phpunit

Errores y contribuciones

Para un error escribir directamente el problema en github issues o enviarlo al correo alejandrogutierrezacosta@gmail.com. Si desea contribuir con el proyecto por favor enviar los ajustes siguiendo la guía de contribuciones:, (*21)

  • Usar las recomendaciones de estilos psr-1 y psr-2, (*22)

  • Preferiblemente escribir código que favorezca el uso de Laravel, (*23)

  • Escribir las pruebas y revisar el código antes de hacer un pull request, (*24)

The Versions

29/04 2018

dev-master

9999999-dev

Una interfaz fluida para Laravel usando el SDK oficial de PayU latam.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Alejandro Gutiérrez

laravel payu pagos

29/04 2018

1.0.7

1.0.7.0

Una interfaz fluida para Laravel usando el SDK oficial de PayU latam.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Alejandro Gutiérrez

laravel payu pagos

29/03 2018

1.0.6

1.0.6.0

Una interfaz fluida para Laravel usando el SDK oficial de PayU latam.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Alejandro Gutiérrez

laravel payu pagos

04/05 2017

1.0.5

1.0.5.0

Una interfaz fluida para Laravel usando el SDK oficial de PayU latam.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Alejandro Gutiérrez

laravel payu pagos

23/02 2017

1.0.3

1.0.3.0

Una interfaz fluida para Laravel usando el SDK oficial de PayU latam.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Alejandro Gutiérrez

laravel payu pagos

04/01 2017

1.0.2

1.0.2.0

Una interfaz fluida para Laravel usando el SDK oficial de PayU latam.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Alejandro Gutiérrez

laravel payu pagos

14/10 2016

1.0.1

1.0.1.0

Una interfaz fluida para Laravel usando el SDK oficial de PayU latam.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Alejandro Gutiérrez

laravel payu pagos

13/10 2016

1.0.0

1.0.0.0

Una interfaz fluida para Laravel usando el SDK oficial de PayU latam.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Alejandro Gutiérrez

laravel payu pagos