Skip to content

Commit d3e2e83

Browse files
feat: bkash payment
1 parent 283dd82 commit d3e2e83

4 files changed

Lines changed: 59 additions & 30 deletions

File tree

‎README.md‎

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,15 @@ php artisan vendor:publish --provider="ProgrammerHasan\Bkash\BkashServiceProvide
3737
php artisan make:controller Payment/BkashPaymentController
3838
```
3939

40+
### Enable or Disable bKash Log
41+
You can turn bKash logging on or off. (Only sandbox/testing mode.)
42+
43+
Logs will be saved in the /storage/logs/laravel.log file.
44+
45+
```bash
46+
"bkash_log_enabled" => env("BKASH_SANDBOX", false),
47+
```
48+
4049
## [Checkout (URL Based)](https://developer.bka.sh/docs/checkout-url-process-overview)
4150

4251
### 1. Create Payment
@@ -52,17 +61,25 @@ use ProgrammerHasan\Bkash\Facade\CheckoutUrl;
5261
5362
class BkashPaymentController extends Controller
5463
{
55-
public function pay(Request $request)
64+
public function createPayment(Request $request)
5665
{
57-
$request['payerReference'] = $paymentUid;
58-
$request['amount'] = $amount;
59-
$request['merchantInvoiceNumber'] = $paymentUid;
60-
$request['callbackURL'] = $onBkashCallbackURL;
61-
62-
$request_data_json = $request;
63-
64-
$response = BkashPayment::create($request_data_json);
65-
return redirect($response->bkashURL);
66+
$request->validate([
67+
'payment_uid' => 'required',
68+
'amount' => 'required',
69+
'invoice_no' => 'required',
70+
]);
71+
72+
$data = [
73+
'payerReference' => $request->get('payment_uid'), // your payments table uid
74+
'amount' => $request->get('amount'),
75+
'merchantInvoiceNumber' => $request->get('invoice_no'),
76+
'callbackURL' => $request->get('bkash_callback_url'), // optional
77+
];
78+
79+
$response = (array) BkashPayment::create($data);
80+
81+
if (isset($response['bkashURL'])) return redirect()->away($response['bkashURL']);
82+
else return redirect()->back()->with('error-alert2', $response['statusMessage']);
6683
}
6784
}
6885
```
@@ -151,10 +168,8 @@ $request['amount'] = $amount;
151168
$request['merchantInvoiceNumber'] = $paymentUid;
152169
$request['callbackURL'] = $onBkashCallbackURL;
153170
154-
$request_data_json = json_encode($request);
155-
156-
$response = BkashPayment::create($request_data_json);
157-
return redirect($response['bkashURL']);
171+
$response = BkashPayment::create($request);
172+
return redirect($response->bkashURL);
158173
```
159174

160175
### [Capture](https://developer.bka.sh/docs/auth-capture-process-overview)

‎src/app/Controllers/BkashPaymentController.php‎

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,20 @@ public function index()
1515

1616
public function createPayment(Request $request)
1717
{
18-
$inv = uniqid();
19-
$request['intent'] = 'sale';
20-
$request['mode'] = '0011'; //0011 for checkout
21-
$request['payerReference'] = $inv;
22-
$request['currency'] = 'BDT';
23-
$request['amount'] = 10;
24-
$request['merchantInvoiceNumber'] = $inv;
25-
$request['callbackURL'] = config("bkash.bkash_callback_url");
26-
27-
$request_data_json = $request;
28-
29-
$response = (array) BkashPayment::create($request_data_json);
18+
$request->validate([
19+
'payment_uid' => 'required',
20+
'amount' => 'required',
21+
'invoice_no' => 'required',
22+
]);
23+
24+
$data = [
25+
'payerReference' => $request->get('payment_uid'), // your payments table uid
26+
'amount' => $request->get('amount'),
27+
'merchantInvoiceNumber' => $request->get('invoice_no'),
28+
'callbackURL' => $request->get('bkash_callback_url'), // optional
29+
];
30+
31+
$response = (array) BkashPayment::create($data);
3032

3133
if (isset($response['bkashURL'])) return redirect()->away($response['bkashURL']);
3234
else return redirect()->back()->with('error-alert2', $response['statusMessage']);

‎src/app/Service/PaymentService.php‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public function __construct()
2222

2323
private function storeLog($apiName, $url, $headers, $body, $response): void
2424
{
25-
if($this->credential->logEnabled) {
25+
if($this->credential->logEnabled && $this->credential->sandbox) {
2626
$log = [
2727
'url' => $url,
2828
'headers' => $headers,

‎src/config/bkash.php‎

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,25 @@
11
<?php
22

33
return [
4-
"bkash_log_enabled" => env("BKASH_LOG_ENABLED", false),
5-
"bkash_sandbox" => env("BKASH_SANDBOX", true),
4+
/*
5+
|--------------------------------------------------------------------------
6+
| Enable or Disable bKash Log
7+
|--------------------------------------------------------------------------
8+
| Logging is only recommended in sandbox/testing mode.
9+
| In production, keep logging disabled to avoid exposing sensitive payment data.
10+
| Logs will be saved in the /storage/logs/laravel.log file.
11+
|
12+
| Usage:
13+
| - Sandbox: BKASH_SANDBOX=true → logs enabled
14+
| - Production: BKASH_SANDBOX=false → logs disabled
15+
*/
16+
"bkash_log_enabled" => env("BKASH_SANDBOX", false),
17+
18+
"bkash_sandbox" => env("BKASH_SANDBOX", false),
619
"bkash_username" => env("BKASH_USERNAME", "sandboxTokenizedUser02"),
720
"bkash_password" => env("BKASH_PASSWORD", "sandboxTokenizedUser02@12345"),
821
"bkash_app_key" => env("BKASH_APP_KEY", "4f6o0cjiki2rfm34kfdadl1eqq"),
922
"bkash_app_secret" => env("BKASH_APP_SECRET", "2is7hdktrekvrbljjh44ll3d9l1dtjo4pasmjvs5vl5qr3fug4b"),
10-
1123
"bkash_base_url_sandbox" => "https://tokenized.sandbox.bka.sh/v1.2.0-beta/tokenized",
1224
"bkash_base_url_production" => "https://tokenized.Pay.bka.sh/v1.2.0-beta/tokenized",
1325
"bkash_callback_url" => env("BKASH_CALLBACK_URL", "http://127.0.0.1:8000/bkash/callback"),

0 commit comments

Comments
 (0)