Antes que te vayas
Inscríbete en nuestro curso gratuito de Laravel
Veamos brevemente cómo integrar PayPal en un proyecto Laravel.
Esta guía muestra cómo integrar pagos con PayPal sobre un proyecto Laravel de propósito general.
Siguiendo la misma idea, podrás empezar a usar PayPal sobre proyectos de distintos tipos.
Tales como:
Añadir el PHP SDK de PayPal a nuestro proyecto Laravel:
composer require paypal/rest-api-sdk-php
Lo primero que debes hacer es obtener tus credenciales para usar la API de PayPal.
Eso lo puedes hacer desde la página para desarrolladores de PayPal.
Tras entrar a la página e iniciar sesión, debes:
Como mínimo vamos a necesitar 2 rutas: una para iniciar el proceso de pago, y la otra para confirmar y ejecutar el pago.
Respectivamente, las puedes definir del siguiente modo:
Route::get('/paypal/pay', '[email protected]');
Route::get('/paypal/status', '[email protected]');
Puedes crear el controlador usando:
php artisan make:controler PaymentController
Y luego definir su contenido del siguiente modo:
class PaymentController extends Controller
{
private $apiContext;
public function __construct()
{
$payPalConfig = Config::get('paypal');
$this->apiContext = new ApiContext(
new OAuthTokenCredential(
$payPalConfig['client_id'],
$payPalConfig['secret']
)
);
$this->apiContext->setConfig($payPalConfig['settings']);
}
// ...
public function payWithPayPal()
{
$payer = new Payer();
$payer->setPaymentMethod('paypal');
$amount = new Amount();
$amount->setTotal('3.99');
$amount->setCurrency('USD');
$transaction = new Transaction();
$transaction->setAmount($amount);
// $transaction->setDescription('See your IQ results');
$callbackUrl = url('/paypal/status');
$redirectUrls = new RedirectUrls();
$redirectUrls->setReturnUrl($callbackUrl)
->setCancelUrl($callbackUrl);
$payment = new Payment();
$payment->setIntent('sale')
->setPayer($payer)
->setTransactions(array($transaction))
->setRedirectUrls($redirectUrls);
try {
$payment->create($this->apiContext);
return redirect()->away($payment->getApprovalLink());
} catch (PayPalConnectionException $ex) {
echo $ex->getData();
}
}
public function payPalStatus(Request $request)
{
$paymentId = $request->input('paymentId');
$payerId = $request->input('PayerID');
$token = $request->input('token');
if (!$paymentId || !$payerId || !$token) {
$status = 'Lo sentimos! El pago a través de PayPal no se pudo realizar.';
return redirect('/paypal/failed')->with(compact('status'));
}
$payment = Payment::get($paymentId, $this->apiContext);
$execution = new PaymentExecution();
$execution->setPayerId($payerId);
/** Execute the payment **/
$result = $payment->execute($execution, $this->apiContext);
if ($result->getState() === 'approved') {
$status = 'Gracias! El pago a través de PayPal se ha ralizado correctamente.';
return redirect('/results')->with(compact('status'));
}
$status = 'Lo sentimos! El pago a través de PayPal no se pudo realizar.';
return redirect('/results')->with(compact('status'));
}
}
Para esto puedes iniciar sesión en PayPal (modo Sandbox) con tus cuentas de prueba, y verificar que el balance se haya actualizado correctamente, tanto para el cliente como para el negocio que recibe los pagos.
De ser así, te invito a ver el siguiente video:
Comparte este post si te fue de ayuda 🙂.
Cualquier duda y/o sugerencia es bienvenida.
Regístrate
Inicia sesión para acceder a nuestros cursos y llevar un control de tu progreso.
Cursos recomendados
Aprende Laravel desde cero y desarrolla aplicaciones web reales, en tiempo récord, de la mano de Laravel.
Ingresar al cursoActualiza tus proyectos desde cualquier versión hasta la última versión estable de Laravel.
Ingresar al cursoDesarrollemos un Messenger! Aprende sobre Channels, Queues, Vuex, JWT, Sesiones, BootstrapVue y mucho más.
Ingresar al cursoInscríbete en nuestro curso gratuito de Laravel