<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Session; class BkashController extends Controller { public function token() { if (Session::get('id_token')) { return Session::get('id_token'); } else { return $this->refresh_token(); } } public function refresh_token() { $response = Http::withHeaders([ 'Content-Type' => 'application/json', 'password' => config('services.bkash.password'), 'username' => config('services.bkash.username'), ])->post(config('services.bkash.tokenURL'), [ 'app_key' => config('services.bkash.app_key'), 'app_secret' => config('services.bkash.app_secret'), ]); if ($response->json('id_token')) { Session::put('id_token', $response->json('id_token')); return $response->json('id_token'); } else { Session::forget('id_token'); return 'error'; } } public function create_payment(Request $request) { $amount = $request->amount; $invoice = "46f647h7"; // must be unique $intent = "authorization"; $response = Http::withHeaders([ 'Content-Type' => 'application/json', 'authorization' => $this->token(), 'x-app-key' => config('services.bkash.app_key'), ])->post(config('services.bkash.createURL'), [ 'amount' => $amount, 'currency' => 'BDT', 'merchantInvoiceNumber' => $invoice, 'intent' => $intent ]); return $response; } public function execute_payment(Request $request) { $paymentID = $request->paymentID; $response = Http::withHeaders([ 'Content-Type' => 'application/json', 'authorization' => $this->token(), 'x-app-key' => config('services.bkash.app_key'), ])->post(config('services.bkash.executeURL') . $paymentID); return $response; } }