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

v1.1.0 2025-10-25 16:46 UTC

This package is auto-updated.

Last update: 2025-10-25 16:47:13 UTC


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