Viewing file: OtpController.php (7.16 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='';
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;
}
}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;
}
}
}
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());
}
}
$subType='masking';
if (isset($otp_setting->from_type) && $otp_setting->from_type=='number'){
$wallet->masking_credit= $wallet->masking_credit - 1;
$wallet->save();
$subType='masking';
}else if (isset($otp_setting->from_type) && $otp_setting->from_type=='sender_id'){
$wallet->non_masking_credit= $wallet->non_masking_credit - 1;
$wallet->save();
$subType='non_masking';
}
//Report
$report= new Report();
$report->customer_id=$customer->id;
$report->ref_id=$wallet->id;
$report->type='message';
$report->sub_type=$subType;
$report->amount='-1';
$report->save();
return response()->json(['message' => $response]);
}catch (\Exception $ex){
$subType='masking';
if (isset($otp_setting->from_type) && $otp_setting->from_type=='number'){
$wallet->masking_credit= $wallet->masking_credit + 1;
$wallet->save();
$subType='masking';
}else if (isset($otp_setting->from_type) && $otp_setting->from_type=='sender_id'){
$wallet->non_masking_credit= $wallet->non_masking_credit + 1;
$wallet->save();
$subType='non_masking';
}
//Report
$report= new Report();
$report->customer_id=$customer->id;
$report->ref_id=$wallet->id;
$report->type='message';
$report->sub_type=$subType;
$report->amount='+1';
$report->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());
}
}
}
|