@dedrick
To integrate PayPal payment gateway in Laravel, you can follow these steps:
Step 1: Install laravel-paypal package
1
|
composer require srmklive/paypal |
Step 2: Configure PayPal credentials in .env file
1 2 3 4 5 6 7 8 9 |
PAYPAL_SANDBOX_MODE=true PAYPAL_SANDBOX_API_USERNAME=your_sandbox_api_username PAYPAL_SANDBOX_API_PASSWORD=your_sandbox_api_password PAYPAL_SANDBOX_API_SECRET=your_sandbox_api_secret PAYPAL_SANDBOX_API_CERTIFICATE=your_sandbox_api_certificate PAYPAL_LIVE_API_USERNAME=your_live_api_username PAYPAL_LIVE_API_PASSWORD=your_live_api_password PAYPAL_LIVE_API_SECRET=your_live_api_secret PAYPAL_LIVE_API_CERTIFICATE=your_live_api_certificate |
Step 3: Create a PayPal controller
1
|
php artisan make:controller PayPalController |
Step 4: Update the PayPal controller's code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
namespace AppHttpControllers;
use IlluminateHttpRequest;
use PayPal;
use Redirect;
use Session;
class PayPalController extends Controller
{
// Make a payment
public function payWithPayPal()
{
$payer = PayPal::Payer();
$payer->setPaymentMethod('paypal');
$amount = PayPal::Amount();
$amount->setCurrency('USD');
$amount->setTotal(10); // Replace with your amount
$transaction = PayPal::Transaction();
$transaction->setAmount($amount);
$transaction->setDescription('Your transaction description');
$redirectUrls = PayPal:: RedirectUrls();
$redirectUrls->setReturnUrl(url('/payment/status'));
$redirectUrls->setCancelUrl(url('/'));
$payment = PayPal::Payment();
$payment->setIntent('sale');
$payment->setPayer($payer);
$payment->setRedirectUrls($redirectUrls);
$payment->setTransactions([$transaction]);
try {
$payment->create(PayPal::getApiContext());
return redirect()->away($payment->getApprovalLink());
} catch (PayPalExceptionPPConnectionException $ex) {
return redirect()->to('/')->withErrors('Some error occurred, please try again.');
}
}
// Payment status
public function paymentStatus(Request $request)
{
$paymentId = $request->get('paymentId');
$token = $request->get('token');
$payerId = $request->get('PayerID');
$payment = PayPal::getById($paymentId, PayPal::getApiContext());
$paymentExecution = PayPal::PaymentExecution();
$paymentExecution->setPayerId($payerId);
$executePayment = $payment->execute($paymentExecution, PayPal::getApiContext());
if ($executePayment->getState() === 'approved') {
Session::flash('success', 'Payment successful');
} else {
Session::flash('error', 'Payment failed');
}
return redirect('/');
}
}
|
Step 5: Define routes for PayPal payment In your routes/web.php file, define the following routes:
1 2 |
Route::get('/paypal', 'PayPalController@payWithPayPal');
Route::get('/payment/status', 'PayPalController@paymentStatus');
|
Step 6: Handle payment button In your blade file, add a button to initiate the PayPal payment:
1 2 3 |
<form action="{{ url('/paypal') }}" method="GET">
<input type="submit" value="Pay with PayPal">
</form>
|
That's it! Now, when you click the "Pay with PayPal" button, it will take you to the PayPal payment page. After completing the payment, it will redirect to the "/payment/status" route and display the payment status.