Payzap is the new simple way of integrating paypal in your laravel application with a few lines of code. It uses simple and elegant syntax to create the payment.
composer require consoletvs/payzap
Register the service provider to the current project (Not needed if using laravel 5.5+):
ConsoleTVs\Payzap\PayzapServiceProvider::class
Publish the configuration:
php artisan vendor:publish
- PaymentController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use ConsoleTVs\Payzap\Classes\Payment;
class PaymentController extends Controller
{
/**
* Returns the payment view and setups the javascript logic.
*
* @author Erik Campobadal <[email protected]>
* @copyright 2017 erik.cat
* @return \Illuminate\Http\Response
*/
public function index()
{
$payment = Payment::prepare()
->createUrl(route('api::payments.create'))
->executeUrl(route('api::payments.execute'))
->redirectUrl(route('payment.finished'))
->buttonId('paypal-button');
return view('payment', compact('payment'));
}
/**
* Creates the paypal payment using payzap.
*
* @author Erik Campobadal <[email protected]>
* @copyright 2017 erik.cat
* @return \ConsoleTVs\Payzap\Classes\Payment
*/
public function create()
{
return Payment::create()
->addItem([
'name' => 'Product 1',
'currency' => 'EUR',
'quantity' => 1,
'price' => 0.5,
])->addItem([
'name' => 'Product 2',
'currency' => 'EUR',
'quantity' => 2,
'price' => 0.25,
])->description("My first payment")
->generate();
}
/**
* Executes the paypal payment and returns the result boolean in an array.
*
* @author Erik Campobadal <[email protected]>
* @copyright 2017 erik.cat
* @param Request $request
* @return array
*/
public function execute(Request $request)
{
return ['result' => Payment::execute($request->payment_id, $request->payer_id)];
}
}
- payment.blade.php:
<!DOCTYPE html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
</head>
<body>
<div id="paypal-button"></div>
{!! $payment->scripts() !!}
</body>
- Routes (web.php)
Route::get('/payment', 'PaymentController@index')->name('payment');
Route::get('/payment/finished', function () {
return "Payment Executed.";
})->name('payment.finished');