This post is also available in:
English
Hallo apa kabar teman semuanya, semoga sehat dan sukses selalu. Kali ini kita akan bahas cara menghubungkan Paypal dengan Laravel. Tutorial ini sangat bermanfaat untuk kalian yang memiliki website penjualan.
Paypal adalah metode pembayaran internasional yang bekerja di sebagian besar negara yang mendukung transfer uang online. Paypal menyediakan cara transfer uang yang lebih cepat dan aman. Karena popularitasnya, sebagian besar bisnis e-commerce menggunakan Paypal untuk mengumpulkan uang dari pelanggan.
Pada artikel ini, kami akan mengintegrasikan gateway pembayaran Paypal ke dalam aplikasi Laravel. Ini adalah situs web e-commerce yang membantu menggunakan kerangka kerja Laravel sebagai teknologi backend. Kami akan melalui langkah demi langkah dari awal.
Ikutilah langkah-langkah di bawah ini:
- Buat Project Baru
- Instal Paket untuk Gateway Pembayaran Paypal Menggunakan Composer
- Buat akun dan Paypal credentioals
- Konfigurasikan paket
- Buat Routes
- Buat file blade untuk membuat tombol pembayaran
- Jalankan aplikasi
Kita langsung saja bahas tutorialnya di bawah ini. Baca juga tutorial yang lainnya di sini:
Laravel Tutorial ~ Laravel Eloquent Relationships
Creating Ratings and Reviews With Laravel
1. Buat project baru
Buat project baru dengan perintah seperti di bawah ini.
composer create-project laravel/laravel paypal --prefer-dist
setelah project baru selesai di buat, maka masuk ke directori project kalian.
cd paypal
2. Instal Paket untuk Gateway Pembayaran Paypal Menggunakan Composer
Jalankan perintah berikut ini.
kita akan install Laravel-Paypal untuk laravel 6,7, & 8
composer require srmklive/paypal:~3.0
3. Buat akun dan Paypal credentioals
Setelah menginstal paket paypal, kami memerlukan client_id dan secret_key untuk integrasi paypal, jadi kami perlu masuk dalam mode pengembang paypal dan membuat akun kotak pasir baru untuk hal yang sama. Setelah login di paypal Anda perlu mendapatkan client_id dan secret_key seperti gambar di bawah. sebelum mendapatkan client_id dan secret_key kita perlu membuat application. Jadi, periksa tangkapan layar di bawah ini dan buat aplikasi. Login ke Developer Dashboard.
Klik Create App.

Isikan nama aplikasi yang di buat.

Maka kalian akan mendapatkan sclient key dan scret key yang akan di gunakan pada aplikasi.

4. Konfigurasikan paket
Setelah installasi paket selesai, kalian buka project kalian dan tambahkan key dan screet key yang kalian dapatkan di file .env.
PAYPAL_MODE=sandbox
#Paypal sandbox credential
PAYPAL_SANDBOX_CLIENT_ID=AXELAz06GFLR.............................QNu7zyjuYpFLu1g
PAYPAL_SANDBOX_CLIENT_SECRET=EA9dinW1.............................PUzgVQCz7fK4tqe1-jLZCyHzZ0tDTRAx-6qJdIY933Q
Jika kalian ingin menyesuaikan opsi konfigurasi default paket, jalankan perintah vendor:publish di bawah ini.
php artisan vendor:publish --provider "Srmklive\PayPal\Providers\PayPalServiceProvider"

Ini akan membuat file konfigurasi config/paypal.php dengan rincian di bawah ini, yang dapat Anda ubah.

5. Buat Routes
Sekarang kita perlu membuat rute aplikasi yang akan kita uji transaksi pengujian aplikasi. Buka file rute aplikasi route/web.php dan tambahkan rute baru berikut.
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PayPalController;
Route::get('create-transaction', [PayPalController::class, 'createTransaction'])->name('createTransaction');
Route::get('process-transaction', [PayPalController::class, 'processTransaction'])->name('processTransaction');
Route::get('success-transaction', [PayPalController::class, 'successTransaction'])->name('successTransaction');
Route::get('cancel-transaction', [PayPalController::class, 'cancelTransaction'])->name('cancelTransaction');
- Buat Controller
Setelah kita membuat route, maka selanjutnya kita buat sebuah controller menggunakan php artisan.
php artisan make:controller PayPalController
Kita telah mempunya controller di direktori app/Http/Controllers/PayPalController.php
. Buka dan tambahkan kode si bawah ini.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Srmklive\PayPal\Services\PayPal as PayPalClient;
class PayPalController extends Controller
{
/**
* create transaction.
*
* @return \Illuminate\Http\Response
*/
public function createTransaction()
{
return view('transaction');
}
/**
* process transaction.
*
* @return \Illuminate\Http\Response
*/
public function processTransaction(Request $request)
{
$provider = new PayPalClient;
$provider->setApiCredentials(config('paypal'));
$paypalToken = $provider->getAccessToken();
$response = $provider->createOrder([
"intent" => "CAPTURE",
"application_context" => [
"return_url" => route('successTransaction'),
"cancel_url" => route('cancelTransaction'),
],
"purchase_units" => [
0 => [
"amount" => [
"currency_code" => "USD",
"value" => "100"
]
]
]
]);
if (isset($response['id']) && $response['id'] != null) {
// redirect to approve href
foreach ($response['links'] as $links) {
if ($links['rel'] == 'approve') {
return redirect()->away($links['href']);
}
}
return redirect()
->route('createTransaction')
->with('error', 'Something went wrong.');
} else {
return redirect()
->route('createTransaction')
->with('error', $response['message'] ?? 'Something went wrong.');
}
}
/**
* success transaction.
*
* @return \Illuminate\Http\Response
*/
public function successTransaction(Request $request)
{
$provider = new PayPalClient;
$provider->setApiCredentials(config('paypal'));
$provider->getAccessToken();
$response = $provider->capturePaymentOrder($request['token']);
if (isset($response['status']) && $response['status'] == 'COMPLETED') {
return redirect()
->route('createTransaction')
->with('success', 'Transaction complete.');
} else {
return redirect()
->route('createTransaction')
->with('error', $response['message'] ?? 'Something went wrong.');
}
}
/**
* cancel transaction.
*
* @return \Illuminate\Http\Response
*/
public function cancelTransaction(Request $request)
{
return redirect()
->route('createTransaction')
->with('error', $response['message'] ?? 'You have canceled the transaction.');
}
}
6. Buat file blade untuk membuat tombol pembayaran
Kita akan membuat tampilan yang akan mengarahkan untuk memproses transaksi. Buat file blade view resources/views/transaction.blade.php file dan tambahkan kode di bawah ini ke dalamnya.
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
<title>Pay USD.100</title>
<script src="https://www.paypal.com/sdk/js?client-id={{ env('PAYPAL_SANDBOX_CLIENT_ID') }}"></script>
</head>
<body>
<a class="btn btn-primary m-3" href="{{ route('processTransaction') }}">Pay USD.100</a>
@if(\Session::has('error'))
<div class="alert alert-danger">{{ \Session::get('error') }}</div>
{{ \Session::forget('error') }}
@endif
@if(\Session::has('success'))
<div class="alert alert-success">{{ \Session::get('success') }}</div>
{{ \Session::forget('success') }}
@endif
</body>
</html>
7. Jalankan aplikasi
Integrasi Paypal selesai. Sekarang kita perlu membuat transaksi. Jalankan server Laravel menggunakan perintah Artisan di bawah ini.
php artisan serve
Buka dengan url seperti di bawha ini. Untuk membayar dengan akun PayPal, Anda perlu membuat akun create sandbox account.
http://localhost:8000/create-transaction

kalik Pay, maka akan menampilkan form pembayaran.

Demikian tutorial ini saya berikan, semoga bermanfaat.
Terimakasih.