A simple and developer-friendly bKash Tokenized Checkout integration for Laravel 12+, created by Softrang.
This package provides a ready-to-use facade, service provider make bKash payments super easy to implement.
composer require softrang/bkash-paymentSANDBOX = 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'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'
php artisan make:controller BkashController<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Softrang\BkashPayment\Facades\Bkash;
class BkashController extends Controller
{
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');
}
public function callback(Request $request)
{
if (in_array($request->status, ['failure', 'cancel'])) {
return redirect()->route('payment.failed')
->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()->route('payment.failed')->with('error', 'Payment not completed.');
}
public function success()
{
if (!session()->has('bkash_success')) {
return redirect()->back();
}
$data = session('bkash_success');
session()->forget('bkash_success');
return view('success', compact('data'));
}
}
use App\Http\Controllers\BkashController;
Route::post('/bkash/create', [BkashController::class, 'create'])->name('bkash.create');
Route::get('/bkash/callback', [BkashController::class, 'callback'])->name('bkash.callback');
Route::get('/bkash/success', [BkashController::class, 'success'])->name('bkash.success');Testing Number: 01619777283 , 01877722345, 01823074817
OTP: 123456
PIN: 12121