Payment Gateway adalah komponen kunci dalam aplikasi e-commerce yang memungkinkan bisnis untuk menerima pembayaran online dari pelanggan. Dalam tutorial ini, kita akan belajar cara membuat Payment Gateway di Laravel 10.
Langkah 1: Instal Laravel
Jika Anda belum memiliki instalasi Laravel, Anda perlu menginstalnya terlebih dahulu. Anda dapat melakukannya dengan menggunakan Composer:
composer create-project --prefer-dist laravel/laravel payment-gateway-laravel
Langkah 2: Instal Package Payment Gateway
Laravel menyediakan banyak package untuk integrasi Payment Gateway yang memudahkan pekerjaan Anda. Beberapa package populer yang dapat Anda gunakan adalah:
Laravel Cashier: Digunakan untuk integrasi dengan Stripe.
Omnipay: Mendukung banyak Payment Gateway seperti PayPal, Authorize.Net, dan lainnya.
Instal package yang sesuai sesuai dengan kebutuhan Anda menggunakan Composer. Contohnya, untuk Laravel Cashier:
composer require laravel/cashier
Langkah 3: Konfigurasi Payment Gateway
Selanjutnya, Anda perlu mengkonfigurasi Payment Gateway yang ingin Anda gunakan. Ini biasanya melibatkan menambahkan informasi kredensial dan mengatur pengaturan lainnya.
Misalnya, jika Anda menggunakan Stripe, Anda perlu menyimpan API Key Stripe Anda dalam file .env
Anda.
STRIPE_KEY=your-stripe-key STRIPE_SECRET=your-stripe-secret
Langkah 4: Membuat Route dan Controller
Buat route dan controller untuk mengelola proses pembayaran. Route ini akan menentukan tindakan yang akan diambil ketika pengguna melakukan pembayaran. Tambahkan route berikut ke dalam file routes/web.php
:
// routes/web.php Route::get('/checkout', 'PaymentController@showCheckout')->name('payment.checkout'); Route::post('/process-payment', 'PaymentController@processPayment')->name('payment.process');
Selanjutnya, buat controller dengan perintah Artisan:
php artisan make:controller PaymentController
Dalam controller PaymentController
, Anda akan mengimplementasikan logika pembayaran. Ini mungkin melibatkan pembuatan pesanan, mengirim permintaan pembayaran ke Payment Gateway, dan mengelola respons yang diterima.
use Illuminate\Http\Request; use Illuminate\Support\Facades\Session; use Laravel\Cashier\Facades\Stripe; class PaymentController extends Controller { public function showCheckout() { return view('checkout'); } public function processPayment(Request $request) { // Proses pembayaran di sini (gunakan Stripe atau Payment Gateway lainnya) try { $user = $request->user(); $user->charge(1000, 'usd'); // Contoh pembayaran sebesar $10.00 // Logika lainnya (misalnya, menyimpan pesanan, mengirim email konfirmasi, dll.) Session::flash('success_message', 'Pembayaran berhasil.'); return redirect()->route('payment.checkout'); } catch (\Exception $e) { Session::flash('error_message', 'Pembayaran gagal: ' . $e->getMessage()); return redirect()->route('payment.checkout'); } } }
Langkah 5: Tampilan dan Front-end
Buat tampilan Blade baru untuk halaman pembayaran. Misalnya, Anda dapat membuat file checkout.blade.php
dalam direktori resources/views
.
<!-- resources/views/checkout.blade.php --> @extends('layouts.app') @section('content') <div class="container"> <h2>Detail Pembayaran</h2> <p>Total Pembayaran: $10.00</p> <!-- Tampilkan informasi pesanan dan jumlah pembayaran sesuai dengan bisnis Anda --> <form action="{{ route('payment.process') }}" method="POST"> @csrf <script src="https://checkout.stripe.com/checkout.js" class="stripe-button" data-key="{{ env('STRIPE_KEY') }}" data-amount="1000" <!-- Jumlah pembayaran dalam sen --> data-name="Nama Bisnis Anda" data-description="Deskripsi Pembayaran" data-image="{{ asset('path/to/your/logo.png') }}" <!-- Logo bisnis Anda --> data-locale="auto" data-currency="USD" > </script> </form> </div> @endsection
Pastikan untuk mengganti nilai-nilai yang sesuai dengan bisnis Anda, seperti jumlah pembayaran, nama bisnis, deskripsi pembayaran, dan logo.
Selanjutnya, buat tampilan Blade untuk menampilkan pesan hasil pembayaran. Misalnya, Anda dapat membuat file payment-result.blade.php
:
<!-- resources/views/payment-result.blade.php --> @extends('layouts.app') @section('content') <div class="container"> @if (Session::has('success_message')) <div class="alert alert-success"> {{ Session::get('success_message') }} </div> @endif @if (Session::has('error_message')) <div class="alert alert-danger"> {{ Session::get('error_message') }} </div> @endif </div> @endsection
Pengguna sekarang dapat mengakses halaman pembayaran dengan pergi ke URL /checkout
. Setelah pembayaran selesai, mereka akan diarahkan ke halaman yang sesuai untuk menampilkan pesan hasil.
Langkah 6: Uji dan Implementasi
Akhirnya, uji implementasi Payment Gateway Anda secara menyeluruh. Pastikan transaksi berjalan dengan lancar, dan Anda dapat menerima pembayaran dari pelanggan Anda.
Itulah langkah-langkah umum dalam membuat Payment Gateway di Laravel 10. Pastikan untuk mengacu pada dokumentasi Payment Gateway yang Anda gunakan untuk detail lebih lanjut tentang pengaturan dan integrasi yang diperlukan. Selain itu, selalu pertimbangkan keamanan dan kepatuhan PCI saat mengelola pembayaran online.