Viewing file: OtpController.php (9.31 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller; use App\Models\AuthorizationToken; use App\Models\Customer; use App\Models\MessageLog; use App\Models\Number; use App\Models\Report; use App\Models\SenderId; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; use PHPUnit\Util\Exception;
class OtpController extends Controller { public function sendOtp(Request $request) { $authorizationToken= AuthorizationToken::where('access_token', $request->api_key)->first(); if(!$authorizationToken){ return response()->json(['response'=>'1003']); }
$customer= Customer::where('id', $authorizationToken->customer_id)->first();
if (!$customer){ return response()->json(['response'=>'1001']); }
$wallet = $customer->wallet;
$otp_setting=$customer->settings()->where('name', 'otp_setting')->first(); $otp_setting=isset($otp_setting->value)?json_decode($otp_setting->value):'';
$fromType=''; $fromNumber=''; $dynamic_gateway=''; if (isset($otp_setting->from_type) && $otp_setting->from_type){ if ($otp_setting->from_type=='number' && isset($otp_setting->phone_number)){ $number=Number::where('id', $otp_setting->phone_number)->first();
if($number){ $fromNumber=$number->number; $fromType=$number->from; $dynamic_gateway=$number->gateway; } }else if ($otp_setting->from_type=='sender_id' && isset($otp_setting->sender_id)){ $senderId=SenderId::where('id', $otp_setting->sender_id)->first(); if($senderId){ $fromNumber=$senderId->sender_id; $fromType=$senderId->from; $dynamic_gateway=$senderId->gateway; } } }
try {
if (isset($otp_setting->status) && $otp_setting->status != 'active') { return response()->json(['response' => '1018']); }
$credentials = json_decode(get_settings($fromType));
$toNumber = $request->number; $code = $request->code;
$response=''; if ($fromType && $fromType == 'elitBuzzBD') { try{ $response = $this->elitbuzzBd($credentials, $toNumber, $fromNumber, $code); }catch(\Exception $e){ throw new \Exception($e->getMessage()); } } else if ($fromType && $fromType == 'route_mobile') { try { $response = $this->routeMobile($credentials, $toNumber, $fromNumber, $code); } catch (\Exception $e) { throw new \Exception($e->getMessage()); } } else if ($fromType && $fromType == 'bulksmsbd') { try { $response = $this->bulkSmsBd($credentials, $toNumber, $fromNumber, $code); } catch (\Exception $e) { throw new \Exception($e->getMessage()); } }else{ if($dynamic_gateway){ $sendingUrl = json_decode($dynamic_gateway->weblink)->url; $sendingUrlMethod = json_decode($dynamic_gateway->weblink)->method;
$parameters = []; if ($dynamic_gateway->others) { foreach (json_decode($dynamic_gateway->others) as $key => $gt) { $parameters[$key] = $gt; } } $headers = []; if ($dynamic_gateway->headers) { foreach (json_decode($dynamic_gateway->headers) as $key => $hd) { $headers[$key] = $hd; } }
//SMS Body $parameters[$dynamic_gateway->message_key] = $code; //From Number $parameters[$dynamic_gateway->from_mobile_key] = $fromNumber; // To Number $parameters[$dynamic_gateway->to_mobile_key] = $toNumber;
if ($sendingUrlMethod == 'post') { $sending_url = $sendingUrl; $client = new \GuzzleHttp\Client(['verify' => false]); $response = $client->post($sending_url, [ 'form_params' => $parameters, 'headers' => $headers, ]); $responseString = $response->getBody()->getContents(); // Log::info($responseString); } else { $sending_url = $sendingUrl . '?' . http_build_query($parameters);
$client = new \GuzzleHttp\Client(['verify' => false]); $response = $client->get($sending_url, [ 'headers' => $headers, ]); $responseString = $response->getBody()->getContents(); // Log::info($responseString); }
} }
$wallet->credit= $wallet->credit - 1; $wallet->save();
return response()->json(['message' => $response]); }catch (\Exception $ex){
$wallet->credit= $wallet->credit + 1; $wallet->save();
return response()->json(['messages'=>$ex->getMessage()]); } }
function elitbuzzBd($credentials, $toNumber, $fromNumber, $code) { if (!isset($credentials->elitBuzzBD_status) || $credentials->elitBuzzBD_status != 'active') { throw new \Exception('1019'); } if (!$credentials->elitBuzzBD_url || !$credentials->elitBuzzBD_api_key) { throw new \Exception('1020'); } try { $parameters = [ 'api_key' => $credentials->elitBuzzBD_api_key, 'contacts' => $toNumber, 'senderid' => $fromNumber, 'msg' => $code, 'type' => 'unicode' ]; $parameters = http_build_query($parameters); $gateway_url = $credentials->elitBuzzBD_url . '?' . $parameters; $responseCode = ['1002', '1003', '1004', '1005', '1006', '1007', '1008', '1009', '1010', '1011', '1012', '1013', '1014', '1015'];
$client = new \GuzzleHttp\Client(['verify' => false]); $response = $client->get($gateway_url); $responseString = $response->getBody()->getContents(); if (isset($responseString) && in_array($responseString, $responseCode)) { throw new \Exception('Error code ' . $responseString); } return $responseString; } catch (\Exception $ex) { Log::error($ex->getMessage()); throw new \Exception($ex->getMessage()); } }
function routeMobile($credentials, $toNumber, $fromNumber, $code) { try { if (!isset($credentials->route_mobile_status) || $credentials->route_mobile_status != 'active') { throw new \Exception('1019'); } if (!isset($credentials->route_mobile_url) || !isset($credentials->route_mobile_username) || !isset($credentials->route_mobile_password)) { throw new \Exception('1020'); }
$url = $credentials->route_mobile_url . "?username=" . $credentials->route_mobile_username . "&password=" . $credentials->route_mobile_password . "&type=0&dlr=1&destination=" . $toNumber . "&source=" . $fromNumber . "&message=" . $code; $client = new \GuzzleHttp\Client(['verify' => false]); $response = $client->get($url); $responseString = $response->getBody()->getContents(); $responseArray = explode('|', $responseString); return $responseArray;
} catch (\Exception $ex) { Log::info($ex->getMessage()); throw new \Exception($ex->getMessage()); } }
function bulkSmsBd($credentials, $toNumber, $fromNumber, $code) { try { if (!isset($credentials->bulksmsbd_status) || $credentials->bulksmsbd_status != 'active') { throw new \Exception('1019'); } if (!isset($credentials->bulksmsbd_username) || !isset($credentials->bulksmsbd_password) || !isset($credentials->bulksmsbd_url)) { throw new \Exception('1020'); }
$parameters= array( 'username'=> $credentials->bulksmsbd_username, 'password'=> $credentials->bulksmsbd_password, 'number'=>str_replace('+','',$toNumber), 'message'=>"$code" );
$sending_url = $this->credentials->bulksmsbd_url; $client = new \GuzzleHttp\Client(['verify' => false]); $response = $client->post($sending_url, [ 'form_params' => $parameters, ]); $responseString = $response->getBody()->getContents();
return $responseString;
} catch (\Exception $ex) { Log::info($ex->getMessage()); throw new \Exception($ex->getMessage()); } } }
|