Espera un momento ...
¿Te gustaría llevar mi curso de Laravel, gratis?
Sólo debes ingresar tus datos:
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', 'PaymentController@payWithPayPal');
Route::get('/paypal/status', 'PaymentController@payPalStatus');
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 🙂.
Regístrate
Accede a todos los cursos, y resuelve todas tus dudas.
Cursos Recomendados
Aprende Laravel desde cero y desarrolla aplicaciones web reales, en tiempo récord, de la mano de Laravel.
Iniciar cursoActualiza tus proyectos desde cualquier versión hasta la última versión estable de Laravel.
Iniciar cursoDesarrollemos un Messenger! Aprende sobre Channels, Queues, Vuex, JWT, Sesiones, BootstrapVue y mucho más.
Iniciar cursoEspera un momento ...
¿Te gustaría llevar mi curso de Laravel, gratis?
Sólo debes ingresar tus datos: