tepuilabs / payment-processors
Payment processors
Fund package maintenance!
abr4xas
Requires
- php: ^8.0
- guzzlehttp/guzzle: ^7.2
- illuminate/contracts: ^9.0
Requires (Dev)
- nunomaduro/collision: ^6.1
- nunomaduro/larastan: ^2.0
- orchestra/testbench: ^7.0
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.2
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
README
Payment processors
Paquete para laravel que se encarga de gestionar diferentes pasarelas de pago:
- Mercadopago de Mercadolibre
- PayPal
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!!
instalación
usando composer
composer require tepuilabs/payment-processors
de forma opcional puedes publicar el archivo de configuración:
php artisan vendor:publish --tag="payment-processors-config"
el contenido del archivo de configuración es el siguiente:
<?php return [ 'mercadopago' => [ 'class' => \Tepuilabs\PaymentProcessors\Services\MercadoPagoService::class, ], 'paypal' => [ 'class' => \Tepuilabs\PaymentProcessors\Services\PayPalService::class, ], 'stripe' => [ 'class' => \Tepuilabs\PaymentProcessors\Services\StripeService::class, ], ];
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:
// usa el facade use Tepuilabs\PaymentProcessors\Facades\PaymentProcessors; // luego crea la instancia de la clase a usar $params = [ 'base_uri' => 'https://api.mercadopago.com', 'key' => '', 'secret' => '', 'base_currency' => '', 'integrator_id' => '', // optional ]; $mercadopago = PaymentProcessors::resolveService('mercadopago', $params); // necesitamos: // $cardNetwork: visa / mastercard // $cardToken: token de la tarjeta // $amount: monto a cobrar // $userEmail: correo del usuario // $installments: default 1 $mercadopago->handlePayment('visa', 'ff8080814c11e237014c1ff593b57b4d', 177, 'test@test.com');
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": [], ... }
crear preferencia de pago para Checkout Pro
<?php $preference = [ 'items' => [ [ "title" => "Dummy Title", "description" => "Dummy description", "picture_url" => "http://project.dev/product-image.jpg", "category_id" => "cat123", "quantity" => 1, "currency_id" => "UYU", "unit_price" => 10 ] ], 'payer' => [ 'name' => 'John', 'surname' => 'Doe', 'email' => 'john.doe@domain.tld', 'identification' => [ 'type' => '', 'number' => '' ], 'date_created' => '' ], 'payment_methods' => [ 'excluded_payment_methods' => [ [ 'id' => 'amex' ] ], 'excluded_payment_types' => [ [ 'id' => 'atm' ] ], 'installments' => 6, ], 'statement_descriptor' => 'MERCADOPAGO', 'auto_return' => 'approved', 'back_urls' => [ 'success' => 'http://project.dev/success_route', 'failure' => 'http://project.dev/error_route', 'pending' => 'http://project.dev/waiting_route' ] ]; $preference = $mercadopago->createPreference($preference); // luego se puede usar `sandbox_init_point` para crear el enlace para que el cliente se dirija a Mercadopago a pagar $preference->sandbox_init_point;
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 $params = [ 'base_uri' => 'https://api.sandbox.paypal.com', 'client_id' => '', 'client_secret' => '', 'return_url' => '', 'cancel_url' => '' ]; $paypal = PaymentProcessors::resolveService('paypal', $params); // 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
Stripe
Para usar Stripe solamente debemos usar dos metodos:// usa el facade use Tepuilabs\PaymentProcessors\Facades\PaymentProcessors; // luego crea la instancia de la clase a usar $params = [ 'key' => 'pk_test_51IMzM0...', 'secret' => 'sk_test_51IM...', ]; $stripe = PaymentProcessors::resolveService('stripe', $params); // Para generar el payment method id te recomiendo leer esto: https://github.com/TepuiLABS/payment-processors/discussions/6 // Para saber que es el payment method te invito a leer la documentación: https://stripe.com/docs/api/payment_methods // Despues de obtener el payment method id pasamos a generar el pago de la siguiente forma: $paymentData = [ 'amount' => 500, // integer 'paymentMethod' => $paymentMethodId, // pm_1IOYCAJcoyM5FfOy0cVbjyuH ]; $intent = $stripe->handlePayment($paymentData); // Y ya por ultimo, confirmamos el pago: $confirm = $stripe->confirmPayment($intent['id']);
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Credits
License
The MIT License (MIT). Please see License File for more information.