ok
Direktori : /home2/selectio/public_html/limpiar.in.net/app/Http/Controllers/Api/V2/ |
Current File : //home2/selectio/public_html/limpiar.in.net/app/Http/Controllers/Api/V2/BkashController.php |
<?php namespace App\Http\Controllers\Api\V2; use App\Models\CombinedOrder; use App\Models\User; use App\Models\Wallet; use Illuminate\Http\Request; use phpDocumentor\Reflection\Types\This; class BkashController extends Controller { private $base_url; public function __construct() { if (get_setting('bkash_sandbox', 1)) { $this->base_url = "https://tokenized.sandbox.bka.sh/v1.2.0-beta/tokenized/"; } else { $this->base_url = "https://tokenized.pay.bka.sh/v1.2.0-beta/tokenized/"; } } public function begin(Request $request) { $payment_type = $request->payment_type; $combined_order_id = $request->combined_order_id; $amount = $request->amount; $user_id = $request->user_id; try { $token = $this->getToken(); if ($payment_type == 'cart_payment') { $combined_order = CombinedOrder::find($combined_order_id); $amount = $combined_order->grand_total; } if ( $payment_type == 'wallet_payment' || $payment_type == 'seller_package_payment' || $payment_type == 'customer_package_payment' ) { $amount = $request->amount; } return response()->json([ 'token' => $token, 'result' => true, 'url' => route('api.bkash.webpage', ["token" => $token, "amount" => $amount]), 'message' => translate('Payment page is found') ]); } catch (\Exception $exception) { return response()->json([ 'token' => '', 'result' => false, 'url' => '', 'message' => $exception->getMessage() ]); } } public function webpage($token, $amount) { return view('frontend.payment.bkash_app', compact('token', 'amount')); } public function checkout($token, $amount) { $auth = $token; $callbackURL = route('home'); $requestbody = array( 'mode' => '0011', 'payerReference' => ' ', 'callbackURL' => route('api.bkash.callback'), 'amount' => $amount, 'currency' => 'BDT', 'intent' => 'sale', 'merchantInvoiceNumber' => "Inv" . Date('YmdH') . rand(1000, 10000) ); $requestbodyJson = json_encode($requestbody); $header = array( 'Content-Type:application/json', 'Authorization:' . $auth, 'X-APP-Key:' . env('BKASH_CHECKOUT_APP_KEY') ); $url = curl_init($this->base_url . 'checkout/create'); curl_setopt($url, CURLOPT_HTTPHEADER, $header); curl_setopt($url, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($url, CURLOPT_RETURNTRANSFER, true); curl_setopt($url, CURLOPT_POSTFIELDS, $requestbodyJson); curl_setopt($url, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($url, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); $resultdata = curl_exec($url); curl_close($url); return redirect(json_decode($resultdata)->bkashURL); } public function callback(Request $request) { $allRequest = $request->all(); if (isset($allRequest['status']) && $allRequest['status'] == 'failure') { return $this->failed("Payment Failed"); } else if (isset($allRequest['status']) && $allRequest['status'] == 'cancel') { return $this->failed("Payment Cancelled"); } else { return response()->json([ "result" => true, "paymentID" => $allRequest['paymentID'] ]); } } public function payment_success(Request $request) { $resultdata = $this->execute($request->token, $request->payment_id); $result_data_array = json_decode($resultdata, true); if (array_key_exists("statusCode", $result_data_array) && $result_data_array['statusCode'] != '0000') { return $this->failed($result_data_array['statusMessage']); } else if (array_key_exists("statusMessage", $result_data_array)) { // if execute api failed to response sleep(1); $resultdata = $this->query($request->token, $request->payment_id); $resultdata = json_decode($resultdata); if($resultdata->transactionStatus == 'Initiated'){ return $this->failed("Something is wrong try agin"); } } return $this->process($request); } public function getToken() { $request_data = array('app_key' => env('BKASH_CHECKOUT_APP_KEY'), 'app_secret' => env('BKASH_CHECKOUT_APP_SECRET')); $request_data_json = json_encode($request_data); $header = array( 'Content-Type:application/json', 'username:' . env('BKASH_CHECKOUT_USER_NAME'), 'password:' . env('BKASH_CHECKOUT_PASSWORD') ); $url = curl_init($this->base_url . 'checkout/token/grant'); curl_setopt($url, CURLOPT_HTTPHEADER, $header); curl_setopt($url, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($url, CURLOPT_RETURNTRANSFER, true); curl_setopt($url, CURLOPT_POSTFIELDS, $request_data_json); curl_setopt($url, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($url, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); $resultdata = curl_exec($url); curl_close($url); $token = json_decode($resultdata)->id_token; return $token; } public function execute($token, $paymentID) { $auth = $token; $requestbody = array( 'paymentID' => $paymentID ); $requestbodyJson = json_encode($requestbody); $header = array( 'Content-Type:application/json', 'Authorization:' . $auth, 'X-APP-Key:' . env('BKASH_CHECKOUT_APP_KEY') ); $url = curl_init($this->base_url . 'checkout/execute'); curl_setopt($url, CURLOPT_HTTPHEADER, $header); curl_setopt($url, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($url, CURLOPT_RETURNTRANSFER, true); curl_setopt($url, CURLOPT_POSTFIELDS, $requestbodyJson); curl_setopt($url, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($url, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); $resultdata = curl_exec($url); curl_close($url); return $resultdata; } public function query($token, $paymentID){ $auth = $token; $requestbody = array( 'paymentID' => $paymentID ); $requestbodyJson = json_encode($requestbody); $header = array( 'Content-Type:application/json', 'Authorization:' . $auth, 'X-APP-Key:'.env('BKASH_CHECKOUT_APP_KEY') ); $url = curl_init($this->base_url.'checkout/payment/status'); curl_setopt($url, CURLOPT_HTTPHEADER, $header); curl_setopt($url, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($url, CURLOPT_RETURNTRANSFER, true); curl_setopt($url, CURLOPT_POSTFIELDS, $requestbodyJson); curl_setopt($url, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($url, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); $resultdata = curl_exec($url); curl_close($url); return $resultdata; } public function process(Request $request) { try { $payment_type = $request->payment_type; if ($payment_type == 'cart_payment') { checkout_done($request->combined_order_id, $request->payment_id); } if ($payment_type == 'wallet_payment') { wallet_payment_done($request->user_id, $request->amount, 'Bkash', $request->payment_id); } if ($payment_type == 'seller_package_payment') { seller_purchase_payment_done($request->user_id, $request->package_id, $request->amount, 'Bkash', $request->payment_id); } if ($payment_type == 'customer_package_payment') { customer_purchase_payment_done($request->user_id, $request->package_id); } return response()->json(['result' => true, 'message' => translate("Payment is successful")]); } catch (\Exception $e) { return response()->json(['result' => false, 'message' => $e->getMessage()]); } } // public function payment_success(Request $request) // { // return response()->json([ // 'result' => true, // 'message' => translate('Payment Success'), // 'payment_details' => $request->payment_details // ]); // } public function fail(Request $request) { return response()->json([ 'result' => false, 'message' => translate('Payment Failed'), 'payment_details' => $request->payment_details ]); } }