DEV Community

loading...
TepuiLabsDEV

Paquete para Laravel para procesar pagos con PayPal y Mercadopago

ángel
Updated on ・2 min read

Alt Text

instalación

usando composer

composer require tepuilabs/payment-processors
Enter fullscreen mode Exit fullscreen mode

de forma opcional puedes publicar el archivo de configuración:

php artisan vendor:publish --provider="Tepuilabs\PaymentProcessors\PaymentProcessorsServiceProvider" --tag="config"
Enter fullscreen mode Exit fullscreen mode

el contenido del archivo de configuración es el siguiente:

return [

    'mercadopago' => [
        'base_uri'      => env('MERCADOPAGO_BASE_URI'),
        'key'           => env('MERCADOPAGO_KEY'),
        'secret'        => env('MERCADOPAGO_SECRET'),
        'base_currency' => env('MERCADOPAGO_BASE_CURRENCY'),
        'class'         => \Tepuilabs\PaymentProcessors\Services\MercadoPagoService::class,
    ],

    'paypal' => [
        'base_uri'      => env('PAYPAL_BASE_URI'),
        'client_id'     => env('PAYPAL_CLIENT_ID'),
        'client_secret' => env('PAYPAL_CLIENT_SECRET'),
        'return_url'    => env('PAYPAL_RETURN_URL'),
        'cancel_url'    => env('PAYPAL_CANCEL_URL'),
        'class'         => \Tepuilabs\PaymentProcessors\Services\PayPalService::class,
    ],
];
Enter fullscreen mode Exit fullscreen mode

como usar

Mercado pago

Primero debes seguir las indicaciones de mercado libre para hacer la integración de cliente luego de eso, sigue los pasos abajo descritos:

> NOTA: esta implementación no está pensada para cobros en cuotas

// usa el facade
use Tepuilabs\PaymentProcessors\Facades\PaymentProcessors;

// luego crea la instancia de la clase a usar
$mercadopago = PaymentProcessors::resolveService('mercadopago');

// necesitamos:
// $cardNetwork: visa / mastercard
// $cardToken: token de la tarjeta
// $amount: monto a cobrar
// $userEmail: correo del usuario

$mercadopago->handlePayment('visa', 'ff8080814c11e237014c1ff593b57b4d', 177, 'test@test.com');
Enter fullscreen mode Exit fullscreen mode

respuesta

{
    "status": "approved",
    "status_detail": "accredited",
    "id": 3055677,
    "date_approved": "2019-02-23T00:01:10.000-04:00",
    "payer": {
        ...
    },
    "payment_method_id": "visa",
    "payment_type_id": "credit_card",
    "refunds": [],
    ...
}
Enter fullscreen mode Exit fullscreen mode

PayPal
Para usar paypal solamente debemos usar dos metodos:

// usa el facade
use Tepuilabs\PaymentProcessors\Facades\PaymentProcessors;

// luego crea la instancia de la clase a usar
$paypal = PaymentProcessors::resolveService('paypal');

// necesitamos:
// $amoun: el monto a cobrar
// $currency: el id de la moneda a cobrar, por defecto es USD

// este método hace una redirección a paypal

$paypal->handlePayment(200);

// el otro método que debemos usar es

$paypal->handleApproval();

// este método retorna toda la infromación del pago de ser aceptado por el usuario
// o retorna un array vacio

Enter fullscreen mode Exit fullscreen mode

Esto es idea original de @JuanDMeGon, tomada de su curso en Udemy de Procesa pagos con Laravel y las mejores plataformas de pagos.

Muchas gracias Juan por tu trabajo y esfuerzo!!

Discussion (2)

Collapse
sistemasvaldez profile image
alex valdez

en la opción de mercado pago, cuando envío la petición, como hago para ver si funcionó, sale en blanco nomas, quiero ver la respuesta y si se graba la compra en mercadopago?

Collapse
abr4xas profile image
ángel Author

Hola Alex, el paquete recibió un cambio recientemente y puede que lo que esté acá escrito no sea del todo cierto.
Para responder tu pregunta lo que tienes que hacer es algo como esto:

$payment = $mercadopago
->handlePayment('visa', 'ff8080814c11e237014c1ff593b57b4d', 177, 'test@test.com');

// haces dd($payment) te retornaría algo como esto:
Enter fullscreen mode Exit fullscreen mode
{
    "status": "approved",
    "status_detail": "accredited",
    "id": 3055677,
    "date_approved": "2019-02-23T00:01:10.000-04:00",
    "payer": {
        ...
    },
    "payment_method_id": "visa",
    "payment_type_id": "credit_card",
    "refunds": [],
    ...
}
Enter fullscreen mode Exit fullscreen mode

Y ya con eso puedes hacer todo lo que necesites hacer en tu aplicación.

Te invito a pasar por el repo y revisar los cambios recientes: github.com/TepuiLABS/payment-proce...