softrang / bkash-payment
A Laravel-ready bKash payment gateway package by Softrang
Installs: 14
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/softrang/bkash-payment
Requires
- php: >=8.2
- guzzlehttp/guzzle: ^7.0
- illuminate/support: ^10.0|^11.0|^12.0
README
A simple and developer-friendly **bKash Tokenized Checkout** integration for **Laravel 12+**, created by [Softrang](https://softrang.com).
This package provides a ready-to-use facade, service provider make bKash payments super easy to implement.
---
1️⃣ Install via Composer
composer require softrang/bkash-payment
2️⃣ .env Setup (Sandbox)
SANDBOX = true BKASH_USERNAME = 'sandboxTokenizedUser02' BKASH_PASSWORD = 'sandboxTokenizedUser02@12345' BKASH_APP_KEY = '4f6o0cjiki2rfm34kfdadl1eqq' BKASH_APP_SECRET ='2is7hdktrekvrbljjh44ll3d9l1dtjo4pasmjvs5vl5qr3fug4b' BKASH_CALLBACK_URL = 'http://127.0.0.1:8000/yourpath'
.env Setup (Live)
SANDBOX = false BKASH_USERNAME = 'your username' BKASH_PASSWORD = 'your password' BKASH_APP_KEY = 'your app_key' BKASH_APP_SECRET ='your app_secret' BKASH_CALLBACK_URL = 'http://yourdomain.com/path'
3️⃣ Create a controller named BkashController:
php artisan make:controller BkashController
Then open app/Http/Controllers/BkashController.php and paste:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Softrang\BkashPayment\Facades\Bkash; class BkashController extends Controller { // Create payment request public function create(Request $request) { $request->validate([ 'amount' => 'required|numeric|min:1', 'name' => 'required|string|max:255', 'phone' => 'required|string|max:20', 'address' => 'required|string|max:255', ]); // Create payment session using Softrang\BkashPayment $response = Bkash::createPayment([ 'amount' => $request->amount, 'payerReference' => $request->phone, ]); if (isset($response['bkashURL'])) { return redirect()->away($response['bkashURL']); } return back()->with('error', $response['message'] ?? 'Failed to create payment'); } // Callback from bKash public function callback(Request $request) { if ($request->status === 'failure' || $request->status === 'cancel') { return redirect()->back()->with('error', 'Payment cancelled or failed.'); } $paymentID = $request->paymentID; $execute = Bkash::executePayment($paymentID); if (isset($execute['statusCode']) && $execute['statusCode'] === '0000') { session()->put('bkash_success', [ 'trxID' => $execute['trxID'], 'amount' => $execute['amount'], 'paymentID' => $execute['paymentID'], ]); return redirect()->route('bkash.success'); } return redirect()->back()->with('error', 'Payment not completed.'); } // Success page public function success() { if (!session()->has('bkash_success')) { return redirect()->back(); } $data = session('bkash_success'); session()->forget('bkash_success'); return view('sucess', compact('data')); } }
4️⃣ Setup Routes
use App\Http\Controllers\BkashController; Route::post('/bkash/create', [BkashController::class, 'create'])->name('bkash.create'); Route::post('/bkash/callback', [BkashController::class, 'callback'])->name('bkash.callback'); Route::get('/bkash/success', [BkashController::class, 'success'])->name('bkash.success');
Sandbox Testing Credentials
Testing Number: 01619777283 , 01877722345, 01823074817
OTP: 123456
PIN: 12121