Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
WIKIPEDIA
/
imaliapi
/
app
/
Http
/
Controllers
:
TopUpController.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace App\Http\Controllers; use App\Classes\Kyc; use App\Classes\Record; use App\Classes\SendSMS; use App\Classes\SendSMSSislog; use App\Classes\SmsManager; use App\Classes\TransactionGeneration; use App\CloseTopUp; use App\Contador; use App\ContaWater; use App\Credelec; use App\GeneralAdvice; use App\Imali\ImaliAccount; use App\Imali\RamoActivity; use App\PurchaseVoucher; use App\TransactionHistory; use App\TransactionLocation; use App\User; use App\VoucherHistory; use App\VoucherList; use App\VoucherType; use App\Water; use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash; use SoapClient; use SoapFault; use DB; use Illuminate\Support\Facades\Log; class TopUpController extends Controller { protected $username; protected $password; protected $topUpUrl; protected $isTest; protected $terminalChannel; protected $terminalCompanyName; protected $terminalCompanyOprator; protected $terminalCityName; protected $msid; protected $client; protected SmsManager $smsManager; public function __construct() { if (env('APP_ENV') == 'production') { // PRODUCTION $this->username = env('TOPUP_USERNAME'); $this->password = env('TOPUP_PASSWORD'); $this->topUpUrl = env('TOPUP_URL'); $this->isTest = env('IS_TEST'); } else { // DEV | Staging $this->username = env('TOPUP_TEST_USERNAME'); $this->password = env('TOPUP_TEST_PASSWORD'); $this->topUpUrl = env('TOPUP_TEST_URL'); $this->isTest = env('IS_TEST'); } $this->terminalChannel = env('TOPUP_TERMINAL_CHANNEL'); $this->terminalCompanyName = env('TOPUP_TERMINAL_COMPANY_NAME'); $this->terminalCompanyOprator = env('TOPUP_TERMINAL_COMPANY_OPERATOR'); $this->terminalCityName = env('TOPUP_TERMINAL_CITY_NAME'); $options = array( 'cache_wsdl' => 0, 'trace' => 1, 'exceptions' => 1, 'stream_context' => stream_context_create(array( 'ssl' => array( 'verify_peer' => true, 'verify_peer_name' => true, 'allow_self_signed' => true, // 'ciphers'=>'RC4-SHA' ) )) ); Log::info('Init TopUp', [ 'topUp_url' => $this->topUpUrl, 'topUp_username' => $this->username ]); $this->client = new SoapClient($this->topUpUrl, $options); $this->msid = new TransactionGeneration(); $this->smsManager = new SmsManager(); } public function getVoucherTypes() { $data = VoucherType::query() ->where('status', 'disponivel') ->where('type', 'recarga')->get(); return response()->json(['data' => $data], 200); } public function topUpClose() { $closes = CloseTopUp::query() ->orderByDesc('created_at') ->get(); return response()->json(['data' => $closes], 200); } public function getVoucherListLocal($id) { $data = VoucherList::query() ->join('voucher_types', 'voucher_types.id', '=', 'voucher_lists.voucher_type_id') ->select('voucher_lists.*', 'voucher_types.logo') ->where('voucher_lists.voucher_type_id', $id) ->get(); return response()->json(['data' => $data], 200); } public function getVoucherTv() { $data = VoucherType::query() ->where('status', 'disponivel') ->where('type', 'tv')->get(); return response()->json(['data' => $data], 200); } public function saveVoucherType(Request $request) { $this->validate($request, [ 'name' => 'required', 'code' => 'required', 'logo' => 'required' ], [ 'name.required' => 'O Campo nome é de carácter Obrigatório', 'code.required' => 'O Campo Código é obrigatório', 'logo.required' => 'Obrigatória', ]); $save = VoucherType::create($request->all()); if ($save) { return response()->json(['message' => 'Voucher Type Saved com Sucesso']); } } public function getBalance() { try { $msid = new TransactionGeneration(); $params2 = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'terminalMsgID' => '202001070006', 'msgID' => $msid->generateMSID(), 'terminalID' => 'APP' ) ); $data = json_decode(json_encode($params2), true); $client = new SoapClient($this->topUpUrl, ['trace' => true]); $response = $client->Balance($data); return response()->json($response->BalanceResult); } catch (SoapFault $fault) { echo '<br>' . $fault; } } public function getVoucherList() { // $topupUrl = 'https://topupretail.com:18880/Service.asmx?wsdl'; // $topupUrl = 'https://topupretail.com:18873/Service.asmx?wsdl'; try { $msid = new TransactionGeneration(); $params2 = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'terminalMsgID' => '202001070006', 'msgID' => $msid->generateMSID(), 'terminalID' => 'APP' ) ); $data = json_decode(json_encode($params2), true); $options = array( 'cache_wsdl' => 0, 'trace' => 1, 'stream_context' => stream_context_create(array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) )) ); // $client = new SoapClient($this->topUpUrl, ['trace' => true]); $client = new SoapClient($this->topUpUrl, $options); // $client->__setLocation($this->topUpUrl); $response = $client->VoucherList($data); return response()->json(['data' => $response->VoucherListResult->voucherlist->VoucherInfo]); } catch (SoapFault $fault) { echo '<br>' . $fault; } } public function buyVoucher(Request $request) { // return $request->all(); // $int = intval(preg_replace('/[^0-9]+/', '', $request->voucher), 10); // return response()->json($int); $this->validate($request, [ 'voucher' => 'required', // 'pin' => 'required' ]); $voucherAmount = intval(preg_replace('/[^0-9]+/', '', $request->voucher), 10); try { $kyc = new Kyc(); $result = $kyc->checkUserForAirTime($request); if ($result) { $log = new Record(); $log->createLog([ 'description' => 'Voucher: ' . $request->voucher, 'details' => $result, 'operation' => 'Buy Voucher', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return $result; } else { $msid = new TransactionGeneration(); $transaction = $msid->generateMSID(); $params = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'terminalMsgID' => '202001070006', 'msgID' => $transaction, 'terminalID' => 'APP', 'test' => $this->isTest, 'order' => array( 'VoucherOrder' => array( 'vouchercode' => $request->voucher, 'qty' => 1 ) ), 'receiptFormat' => 'POR_FORMATED_50', 'terminalChannel' => 'ÁPP', 'terminalCompanyName' => 'Paytek', 'terminalOperator' => 'Operator' ) ); $data = json_decode(json_encode($params), true); // $response = $this->client->PurchaseVoucher($data); // return response()->json($response); $result = $response->PurchaseVoucherResult; if ($response->PurchaseVoucherResult->hasFault === false) { $voucher = $response->PurchaseVoucherResult->vouchers->Voucher; $voucherInfo = $response->PurchaseVoucherResult->vouchers->Voucher->voucherinfo; $category = RamoActivity::find(23); $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $voucherInfo->vouchervalue + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->decrement('balance', $totalAmount); $imaliUser2 = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $recarga = PurchaseVoucher::create([ 'vouchername' => $voucherInfo->vouchername, 'vouchercode' => $voucherInfo->vouchercode, 'vouchervalue' => $voucherInfo->vouchervalue, 'price' => $voucherInfo->price, 'comissao' => $voucherInfo->vouchervalue - $voucherInfo->price, 'barcode' => $voucherInfo->barcode, 'reqterminalMsgID' => $result->reqterminalMsgID, 'reqterminalID' => $result->reqterminalID, 'reqMsgID' => $result->reqMsgID, 'respDateTime' => $result->respDateTime, 'serial' => $voucher->serial, 'pin' => $voucher->pin, 'datepurchased' => $voucher->datepurchased, 'receiptFormat' => $voucher->receiptFormat, 'receipt' => $voucher->receipt, 'smsreceipt' => $voucher->smsreceipt, 'user_id' => $request->user()->id, 'voucher_list_id' => null, 'type' => $request->type, 'category_id' => $category->id, 'old_balance' => $imaliUser->balance, 'new_balance' => $imaliUser2->balance ]); // $sms = new SendSMS(); // $sms->sendSMSPurchaseVoucher($response->PurchaseVoucherResult->vouchers->Voucher, $response->PurchaseVoucherResult->vouchers->Voucher->voucherinfo->vouchername, auth()->user()->phone); TransactionHistory::create([ 'user_id' => $recarga->user_id, 'voucher_id' => $recarga->id, 'category_id' => $recarga->category_id, 'transaction_type' => 'voucher' ]); VoucherHistory::create([ 'user_id' => $recarga->user_id, 'voucher_id' => $recarga->id, 'transaction_type' => 'voucher' ]); $notification = array( 'icon' => 'ic_i_mali_cover', 'title' => 'i.Mali recargas', 'body' => 'Parabéns, ' . ' comprou recarga ' . $recarga->vouchername . '.' . ' i.Mali é o Futuro', 'click_action' => 'com.imali.payapp.payment_RECARGA_NOTIFICATION', 'color' => '#ffffff' ); $data = array( 'reqMsgID' => $recarga->reqMsgID, 'vouchername' => $recarga->vouchername, 'vouchercode' => (float)$recarga->vouchercode, 'data' => $recarga->created_at, 'pin' => $recarga->pin, 'serial' => $recarga->serial, 'price' => $recarga->vouchervalue, 'vouchervalue' => $recarga->vouchervalue, 'sms' => $recarga->receipt, 'route' => 'RECARGA_NOTIFICATION', 'terminal' => 'firebase' ); $this->pushNotifification($request->user()->firebase_token, $notification, $data); $log = new Record(); $log->createLog([ 'description' => 'Transaction ' . $recarga->reqMsgID . ' Voucher: ' . $request->voucher, 'details' => 'Compra Feita com Sucesso!', 'operation' => 'Buy Voucher', 'status' => 'Success', 'properties' => $recarga, 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json([ 'message' => 'Compra Feita com Sucesso!', 'transaction' => $transaction, // 'data' => $response, ], 200); } else { if ($response->PurchaseVoucherResult->fault->mustALR === true) { $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->amount + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->increment('captive_balance', $totalAmount); $g = GeneralAdvice::create([ 'reqMsgID' => $response->PurchaseVoucherResult->reqMsgID, 'reqterminalID' => $response->PurchaseVoucherResult->reqterminalID, // 'receiptFormat' => $response->PurchaseVoucherResult->receiptFormat, 'respDateTime' => $response->PurchaseVoucherResult->respDateTime, 'faultNumber' => $response->PurchaseVoucherResult->fault->faultnumber, 'message' => $response->PurchaseVoucherResult->fault->POR_operatorMsg, 'user_id' => $request->user()->id, 'type' => 'direct', // 'amount' => $request->voucher . substr(4, 4), 'amount' => $voucherAmount, 'msno' => $request->voucher, 'description' => $request->voucher ]); $log = new Record(); $log->createLog([ 'description' => 'Transaction ' . $g->reqMsgID . ' Voucher: ' . $request->voucher, 'details' => $response->PurchaseVoucherResult->fault->POR_operatorMsg, 'operation' => 'Buy Voucher', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json(['message' => $response->PurchaseVoucherResult->fault->POR_operatorMsg], 400); } else { //return $response->PurchaseVoucherResult; $log = new Record(); $log->createLog([ 'description' => 'Transaction: ' . $transaction . ' Voucher: ' . $request->voucher, 'details' => $response->PurchaseVoucherResult->fault->POR_operatorMsg, 'operation' => 'Buy Voucher', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); if ($response->PurchaseVoucherResult->fault) { return response()->json(['message' => "Serviço de recargas indisponível"], 400); } //else { // return response()->json(['message' => $response->PurchaseVoucherResult->fault->POR_operatorMsg], 400); // return response()->json(['message' => "Serviço de recargas indisponível"], 400); //} } } } } catch (SoapFault $fault) { echo '<br>' . $fault; } } public function buyVoucherPin(Request $request) { // return $request->all(); // $string = "Hello! 123 How Are You? 456"; // $int = intval(preg_replace('/[^0-9]+/', '', $request->voucher), 10); // return response()->json($int); $user = User::find($request->user()->id); $this->validate($request, [ 'pin' => 'required', 'voucher' => 'required' ], [ 'pin.required' => 'O Pin é necessário', ]); $voucherAmount = intval(preg_replace('/[^0-9]+/', '', $request->voucher), 10); try { $kyc = new Kyc(); $result = $kyc->checkUserForAirTime($request); if ($result) { $log = new Record(); $log->createLog([ 'description' => ' Voucher: ' . $request->voucher, 'details' => $result, 'operation' => 'Buy Voucher', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return $result; } else { $msid = new TransactionGeneration(); $transaction = $msid->generateMSID(); $params = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'terminalMsgID' => '202001070006', 'msgID' => $transaction, 'terminalID' => 'APP', 'test' => $this->isTest, 'order' => array( 'VoucherOrder' => array( 'vouchercode' => $request->voucher, // 'vouchercode' => 'VOM000010', 'qty' => 1 ) ), 'receiptFormat' => 'POR_FORMATED_50', 'terminalChannel' => 'ÁPP i.Mali', 'terminalCompanyName' => 'Paytek', 'terminalOperator' => 'Operator' ) ); $data = json_decode(json_encode($params), true); $response = $this->client->PurchaseVoucher($data); $result = $response->PurchaseVoucherResult; if ($response->PurchaseVoucherResult->hasFault === false) { $voucher = $response->PurchaseVoucherResult->vouchers->Voucher; $voucherInfo = $response->PurchaseVoucherResult->vouchers->Voucher->voucherinfo; $category = RamoActivity::find(23); $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $voucherInfo->vouchervalue + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->decrement('balance', $totalAmount); $imaliUser2 = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $recarga = PurchaseVoucher::create([ 'vouchername' => $voucherInfo->vouchername, 'vouchercode' => $voucherInfo->vouchercode, 'vouchervalue' => $voucherInfo->vouchervalue, 'barcode' => $voucherInfo->barcode, 'price' => $voucherInfo->vouchervalue, 'comissao' => $voucherInfo->vouchervalue - $voucherInfo->price, 'reqterminalMsgID' => $result->reqterminalMsgID, 'reqterminalID' => $result->reqterminalID, 'reqMsgID' => $result->reqMsgID, 'respDateTime' => $result->respDateTime, 'serial' => $voucher->serial, 'pin' => $voucher->pin, 'datepurchased' => $voucher->datepurchased, 'receiptFormat' => $voucher->receiptFormat, 'receipt' => $voucher->receipt, 'smsreceipt' => $voucher->smsreceipt, 'user_id' => $request->user()->id, 'voucher_list_id' => null, 'type' => $request->type, 'category_id' => $category->id, 'old_balance' => $imaliUser->balance, 'new_balance' => $imaliUser2->balance ]); // $sms = new SendSMS(); // $sms->sendSMSPurchaseVoucher($response->PurchaseVoucherResult->vouchers->Voucher, $response->PurchaseVoucherResult->vouchers->Voucher->voucherinfo->vouchername, auth()->user()->phone); TransactionHistory::create([ 'user_id' => $recarga->user_id, 'voucher_id' => $recarga->id, 'category_id' => $recarga->category_id, 'transaction_type' => 'voucher' ]); VoucherHistory::create([ 'user_id' => $recarga->user_id, 'voucher_id' => $recarga->id, 'transaction_type' => 'voucher' ]); $resultLoc = TransactionLocation::create($request->location); $resultLoc->update(['voucher_id' => $recarga->id, 'user_id' => $recarga->user_id]); // TransactionLocation::create([ // 'longitude' => $request->location['longitude'], // 'latitude' => $request->location['latitude'], // 'country_name' => $request->location['country_name'], // 'country_code' => $request->location['country_code'], // 'feature_name' => $request->location['feature_name'], // 'admin_area' => $request->location['admin_area'], //// 'sub_admin_area' => $request->location['sub_admin_area'], //// 'postal_code' => $request->location['postal_code'], // 'max_address_line' => $request->location['max_address_line'], // 'address_line' => $request->location['address_line'], //// 'sub_locality' => $request->location['sub_locality'], //// 'phone' => $request->location['phone'], //// 'url' => $request->location['url'], // 'thoroughfare' => $request->location['sub_thoroughfare'], // 'sub_thoroughfare' => $request->location['sub_thoroughfare'], //// 'premises' => $request->location['premises'], // 'voucher_id' => $recarga->id // ]); //// // TransactionLocation::create([ // 'longitude' => $request->location->longitude, // 'latitude' => $request->location->latitude, // 'country_name' => $request->location->country_name, // 'country_code' => $request->location->country_code, // 'feature_name' => $request->location->feature_name, // 'admin_area' => $request->location->admin_area, // 'sub_admin_area' => $request->location->sub_admin_area, // 'postal_code' => $request->location->postal_code, // 'max_address_line' => $request->location->max_address_line, // 'address_line' => $request->location->address_line, // 'sub_locality' => $request->location->sub_locality, // 'phone' => $request->location->phone, // 'url' => $request->location->url, // 'thoroughfare' => $request->location->sub_thoroughfare, // 'sub_thoroughfare' => $request->location->sub_thoroughfare, // 'premises' => $request->location->premises, // 'voucher_id' => $recarga->id // ]); $notification = array( 'icon' => 'ic_i_mali_cover', 'title' => 'i.Mali recargas', 'body' => 'Parabéns, ' . ' comprou recarga ' . $recarga->vouchername . '.' . ' i.Mali é o Futuro', 'click_action' => 'com.imali.payapp.payment_RECARGA_NOTIFICATION', 'color' => '#ffffff' ); $data = array( 'reqMsgID' => $recarga->reqMsgID, 'vouchername' => $recarga->vouchername, 'vouchercode' => (float)$recarga->vouchercode, 'data' => $recarga->created_at, 'pin' => $recarga->pin, 'serial' => $recarga->serial, 'price' => $recarga->vouchervalue, 'vouchervalue' => $recarga->vouchervalue, 'sms' => $recarga->receipt, 'route' => 'RECARGA_NOTIFICATION', 'terminal' => 'firebase' ); $this->pushNotifification($request->user()->firebase_token, $notification, $data); $log = new Record(); $log->createLog([ 'description' => ' Voucher: ' . $request->voucher, 'details' => 'Compra Feita com Sucesso!', 'operation' => 'Buy Voucher', 'status' => 'Success', 'properties' => $recarga, 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json([ 'message' => 'Compra Feita com Sucesso!', 'transaction' => $transaction, // 'data' => $response, ], 200); } else { if ($response->PurchaseVoucherResult->fault->mustALR === true) { $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->amount + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->increment('captive_balance', $totalAmount); $g = GeneralAdvice::create([ 'reqMsgID' => $response->PurchaseVoucherResult->reqMsgID, 'reqterminalID' => $response->PurchaseVoucherResult->reqterminalID, // 'receiptFormat' => $response->PurchaseVoucherResult->receiptFormat, 'respDateTime' => $response->PurchaseVoucherResult->respDateTime, 'faultNumber' => $response->PurchaseVoucherResult->fault->faultnumber, 'message' => $response->PurchaseVoucherResult->fault->POR_operatorMsg, 'user_id' => $request->user()->id, 'type' => 'direct', // 'amount' => $request->voucher . substr(4, 4), 'amount' => $voucherAmount, 'msno' => $request->voucher, 'description' => $request->voucher ]); $log = new Record(); $log->createLog([ 'description' => 'Advice: ' . $g->reqMsgID . ' Voucher: ' . $request->voucher, 'details' => $response->PurchaseVoucherResult->fault->POR_operatorMsg, 'operation' => 'Buy Voucher', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json(['message' => $response->PurchaseVoucherResult->fault->POR_operatorMsg], 400); } else { $log = new Record(); $log->createLog([ 'description' => ' Voucher: ' . $request->voucher, 'details' => $response->PurchaseVoucherResult->fault->POR_operatorMsg, 'operation' => 'Buy Voucher', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); if ($response->PurchaseVoucherResult->fault->faultnumber == "35") { return response()->json(['message' => "Serviço de recargas indisponível"], 400); } else { return response()->json(['message' => $response->PurchaseVoucherResult->fault->POR_operatorMsg], 400); } } } } } catch (SoapFault $fault) { echo '<br>' . $fault; } } public function runAdvice(Request $request) { // $topupUrl = 'https://topupretail.com:18880/Service.asmx?wsdl'; $msid = new TransactionGeneration(); $params = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'terminalMsgID' => '202001070006', 'msgID' => $msid->generateMSID(), 'terminalID' => 'APP', 'test' => $this->isTest, // 'adviceReqMsgID' => '20216522449970315665', // C REDELEC // 'adviceReqMsgID' => '20215462068762388612', // ZAP // 'adviceReqMsgID' => '20215972186596705630', // MCL // 'adviceReqMsgID' => '20217028157282941592', // Agua // 'adviceReqMsgID' => '20214643983168827472', // real 'adviceReqMsgID' => '20217333024565608663', // real ) ); $data = json_decode(json_encode($params), true); $response = $this->client->Advice($data); return response()->json($response); } public function buyCredelec(Request $request) { $kyc = new Kyc(); $result = $kyc->checkUserBuyCredelec($request); if ($result) { $log = new Record(); $log->createLog([ 'description' => 'Nr Contador: ' . $request->credelec_number, ' Montante: ' . $request->amount, // 'description' => $request, 'details' => $result, 'operation' => 'Buy Credelec', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return $result; } else { try { $msid = new TransactionGeneration(); $params = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'terminalMsgID' => '202001070006', 'msgID' => $msid->generateMSID(), 'terminalID' => 'APP', 'test' => $this->isTest, 'meterIdentifier' => array( 'msno' => $request->credelec_number, 'track2Data' => '' ), 'purchaseValue' => $request->amount, 'receiptFormat' => 'POR_FORMATED_50', 'terminalLocation' => $this->terminalCityName, 'terminalChannel' => $this->terminalChannel, 'terminalCompanyName' => $this->terminalCompanyName, 'terminalOperator' => $this->terminalCompanyOprator ) ); $data = json_decode(json_encode($params), true); $response = $this->client->CreditVend($data); // MUSTALR if ($response->CreditVendResult->hasFault == true) { if ($response->CreditVendResult->fault->mustALR === true) { $g = GeneralAdvice::create([ 'reqMsgID' => $response->CreditVendResult->reqMsgID, 'reqterminalID' => $response->CreditVendResult->reqterminalID, 'receiptFormat' => $response->CreditVendResult->receiptFormat, 'respDateTime' => $response->CreditVendResult->respDateTime, 'faultnumber' => $response->CreditVendResult->fault->faultnumber, 'user_id' => $request->user()->id, 'type' => 'credelec', 'amount' => $request->amount, 'msno' => $request->credelec_number ]); $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->amount + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->increment('captive_balance', $totalAmount); // DB::table('users')->increment('votes', 5); $log = new Record(); $log->createLog([ 'description' => 'reqMsgID: ' . $g . 'Nr Contador: ' . $request->credelec_number, ' Montante: ' . $request->amount, 'details' => $response->CreditVendResult->fault->POR_operatorMsg . " Topup Fault: " . $g->faultnumber, 'operation' => 'Buy Credelec', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); } $log = new Record(); $log->createLog([ 'description' => 'Nr Contador: ' . $request->credelec_number, ' Montante: ' . $request->amount, 'details' => $response->CreditVendResult->fault->POR_operatorMsg, 'operation' => 'Buy Credelec', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); if ($response->CreditVendResult->fault->faultnumber == "35") { return response()->json(['message' => "Serviço de Credelec indisponível"], 400); } else { return response()->json(['message' => $response->CreditVendResult->fault->POR_operatorMsg], 400); } // return response()->json(['faultnumber' => $response->CreditVendResult->fault->faultnumber, 'message' => $response->CreditVendResult->fault->POR_operatorMsg, 'data' => $response->CreditVendResult], 400); } else { $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->amount + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->decrement('balance', $totalAmount); $imaliUser2 = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $category = RamoActivity::find(23); $credelec = Credelec::create([ 'reqMsgID' => $response->CreditVendResult->reqMsgID, 'receipt' => $response->CreditVendResult->receipt, 'reqterminalID' => $response->CreditVendResult->reqterminalID, 'receiptFormat' => $response->CreditVendResult->receiptFormat, 'respDateTime' => $response->CreditVendResult->respDateTime, 'smsreceipt' => $response->CreditVendResult->smsreceipt, 'reqterminalMsgID' => $response->CreditVendResult->reqterminalMsgID, 'customerMsg' => $response->CreditVendResult->customerMsg, 'TransactionCost' => $response->CreditVendResult->TransactionCost, 'utility_address' => $response->CreditVendResult->utility->address, 'utility_name' => $response->CreditVendResult->utility->name, 'utility_taxRef' => $response->CreditVendResult->utility->taxRef, 'StandardTokenTx_amount' => $response->CreditVendResult->standardTokenTx->StandardTokenTx->amount, 'StandardTokenTx_desc' => $response->CreditVendResult->standardTokenTx->StandardTokenTx->desc, 'StandardTokenTx_receiptNumber' => $response->CreditVendResult->standardTokenTx->StandardTokenTx->receiptNumber, 'StandardTokenTx_tarriff' => $response->CreditVendResult->standardTokenTx->StandardTokenTx->tarriff, 'StandardTokenTx_tax' => $response->CreditVendResult->standardTokenTx->StandardTokenTx->tax, 'StandardTokenTx_token' => $response->CreditVendResult->standardTokenTx->StandardTokenTx->token, 'StandardTokenTx_units' => $response->CreditVendResult->standardTokenTx->StandardTokenTx->units, // 'DebtPaymentTx_amount' => $response->CreditVendResult->debtPaymentTx->DebtPaymentTx->amount, // 'DebtPaymentTx_desc' => $response->CreditVendResult->debtPaymentTx->DebtPaymentTx->desc, // 'DebtPaymentTx_open' => $response->CreditVendResult->debtPaymentTx->DebtPaymentTx->open, // 'DebtPaymentTx_receiptNumber' => $response->CreditVendResult->debtPaymentTx->DebtPaymentTx->receiptNumber, // 'DebtPaymentTx_remainder' => $response->CreditVendResult->debtPaymentTx->DebtPaymentTx->remainder, // 'DebtPaymentTx_tax' => $response->CreditVendResult->debtPaymentTx->DebtPaymentTx->tax, 'user_id' => $request->user()->id, 'contador' => $request->credelec_number, 'amount' => $request->amount, 'category_id' => $category->id, 'old_balance' => $imaliUser->balance, 'new_balance' => $imaliUser2->balance ]); TransactionHistory::create([ 'transaction_type' => 'credelec', 'credelec_id' => $credelec->id, 'user_id' => $credelec->user_id, 'category_id' => $category->id ]); VoucherHistory::create([ 'user_id' => $credelec->user_id, 'credelec_id' => $credelec->id, 'transaction_type' => 'credelec' ]); $log = new Record(); $log->createLog([ 'description' => 'reqMsgID: ' . $credelec->reqMsgID . 'Nr Contador: ' . $request->credelec_number, ' Montante: ' . $request->amount, 'details' => "Credelec comprado com Sucesso", 'operation' => 'Buy Credelec', 'status' => 'Success', 'properties' => $credelec, 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); //$this->smsManager->sendSMSPurchaseCredelec($response->CreditVendResult->smsreceipt, auth()->user()->phone); $this->smsManager->sendSMSPurchaseCredelec($this->getFormatedCredelecMessage($response->CreditVendResult->smsreceipt), auth()->user()->phone); return response()->json(['message' => 'Credelec comprado com Sucesso', 'data' => $response, 'amount' => $credelec->amount, 'reqMsgID' => $credelec->reqMsgID, 'sms' => $credelec->smsreceipt], 200); } } catch (SoapFault $fault) { echo '<br>' . $fault; } } } //? Credelec Message public function getFormatedCredelecMessage($message) { $arr = explode("\n", $message); $recarga = 'Recarga: ' . $arr[9] . ' ' . $arr[10]; $contador = str_replace(":", ": ", $arr[1]); $total = str_replace(":", ": ", $arr[3]) . 'MT'; $energia = 'Energia: ' . $arr[8]; $iva = str_replace(":", ": ", $arr[4]) . 'MT'; $lixo = 'Tx ' . str_replace(":", ": ", $arr[7]) . 'MT'; $radio = 'Tx ' . str_replace(":", ": ", $arr[6]) . 'MT'; $divida = 'Divida: ' . explode(":", $arr[5])[1] . 'MT'; $newMsg = "Credelec\n" . $recarga . "\n" . $contador . "\n" . $total . "\n" . $energia . "\n" . $iva . "\n" . $lixo . "\n" . $radio . "\n" . $divida; return $newMsg; } //? Credelec Message public function buyVoucherWithAdvice(Request $request) { // $topupUrl = 'https://topupretail.com:18880/Service.asmx?wsdl'; try { $msidGeneration2 = new TransactionGeneration(); $transaction = $msidGeneration2->generateMSID(); $params = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'terminalMsgID' => '2020010700044', 'msgID' => $transaction, 'terminalID' => 'APP', 'test' => $this->isTest, 'order' => array( 'VoucherOrder' => array( 'vouchercode' => $request->voucher, 'qty' => 1 ) ), 'receiptFormat' => 'POR_FORMATED_50', 'terminalChannel' => 'ÁPP', 'terminalCompanyName' => 'Paytek', 'terminalOperator' => 'Operator' ) ); $data2 = json_decode(json_encode($params), true); $response = $this->client->PurchaseVoucher($data2); if ($response->PurchaseVoucherResult->hasFault === true) { if ($response->PurchaseVoucherResult->fault->mustALR === true) { GeneralAdvice::create([ 'reqMsgID' => $response->CreditVendResult->reqMsgID, 'reqterminalID' => $response->CreditVendResult->reqterminalID, 'receiptFormat' => $response->CreditVendResult->receiptFormat, 'respDateTime' => $response->CreditVendResult->respDateTime, 'faultnumber' => $response->CreditVendResult->fault->faultnumber, 'user_id' => $request->user()->id, 'type' => 'recargas', 'amount' => $request->amount, 'msno' => $request->credelec_number ]); $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->amount + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->increment('captive_balance', $totalAmount); } $paramsAdvice = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'adviceReqMsgID' => $transaction, 'terminalID' => 'i.Mali', 'terminalMsgID' => '2020010700060', 'msgID' => $msidGeneration2->generateMSID(), ) ); $data = json_decode(json_encode($paramsAdvice), true); $client = new SoapClient($this->topUpUrl, ['trace' => true]); $response = $client->Advice($data); return response()->json(['message' => 'Houve Bug de timeout', $response], 200); } else { $paramsAdvice = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'adviceReqMsgID' => $transaction, 'terminalID' => 'i.Mali', 'terminalMsgID' => '2020010700060', 'msgID' => $msidGeneration2->generateMSID(), ) ); $data = json_decode(json_encode($paramsAdvice), true); $responseAdvice = $this->client->Advice($data); return response()->json([$response, 'advice' => $responseAdvice], 200); } $sms = new SendSMS(); $sms->sendSMSPurchaseVoucher($response->PurchaseVoucherResult->vouchers->Voucher, $response->PurchaseVoucherResult->vouchers->Voucher->voucherinfo->vouchername, auth()->user()->phone); return response()->json($response, 200); } catch (SoapFault $fault) { echo '<br>' . $fault; } } public function buyVoucherDirectRecharge(Request $request) { // return response()->json(['message' => 'Serviço indisponivel'], 404); //return response()->json(['message' => $this->getBalance(['balance'])], 404); $this->validate($request, [ 'phone' => 'required', 'amount' => 'required', 'vouchercode' => 'required', ]); $msid = new TransactionGeneration(); $transaction = $msid->generateMSID(); try { // Com PIN if ($request->pin != 'vazio') { // if (Hash::check($request->pin, $request->user()->pin)) { $kyc = new Kyc(); $result = $kyc->checkUserForAirTime($request); if ($result) { $log = new Record(); $log->createLog([ 'description' => 'Celular: ' . $request->phone . ' Montante: ' . $request->amount, 'details' => $result, 'operation' => 'Buy Voucher', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return $result; } else { if ($request->vouchercode == 'MCL') { $directRecharge = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'adviceReqMsgID' => $transaction, 'terminalID' => 'i.Mali', 'terminalChannel' => 'i.Mali App', 'terminalMsgID' => '2020010700060', 'msgID' => $msid->generateMSID(), 'msisdn' => $request->phone, // 'msisdn' => '100000004', 'purchaseValue' => $request->amount, 'receiptFormat' => 'POR_FORMATED_50', 'terminalCompanyName' => 'Paytek', 'terminalOperator' => 'Operator', 'test' => $this->isTest, ) ); $data = json_decode(json_encode($directRecharge), true); $response = $this->client->MCelRecharge($data); if ($response->MCelRechargeResult->hasFault === true) { if ($response->MCelRechargeResult->fault->mustALR === true) { GeneralAdvice::create([ 'reqMsgID' => $response->MCelRechargeResult->reqMsgID, 'reqterminalID' => $response->MCelRechargeResult->reqterminalID, 'receiptFormat' => $response->MCelRechargeResult->receiptFormat, 'respDateTime' => $response->MCelRechargeResult->respDateTime, 'faultnumber' => $response->MCelRechargeResult->fault->faultnumber, 'user_id' => $request->user()->id, 'type' => 'direct', 'amount' => $request->amount, 'msno' => $request->phone, 'description' => $request->description ]); $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->amount + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->increment('captive_balance', $totalAmount); $log = new Record(); $log->createLog([ 'description' => 'Celular: ' . $request->phone . ' Montante: ' . $request->amount, 'details' => $response->MCelRechargeResult->fault->POR_operatorMsg, 'operation' => 'Buy Voucher', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'status' => 'Error', 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); if ($response->MCelRechargeResult->fault->faultnumber == "35") { return response()->json(['message' => "Serviço de recargas indisponível"], 400); } else { return response()->json(['message' => $response->MCelRechargeResult->fault->POR_operatorMsg], 400); } // return response()->json(['message' => $response->MCelRechargeResult->fault->POR_operatorMsg], 400); } else { if ($response->MCelRechargeResult->fault->faultnumber == "35") { return response()->json(['message' => "Serviço de recargas indisponível"], 400); } else { return response()->json(['message' => $response->MCelRechargeResult->fault->POR_operatorMsg], 400); } // return response()->json(['message' => $response->MCelRechargeResult->fault->POR_operatorMsg], 400); } } else { $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->amount + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->decrement('balance', $totalAmount); $imaliUser2 = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $resultVoucher = $response->MCelRechargeResult; $recarga = PurchaseVoucher::create([ 'vouchername' => $request->description, 'vouchercode' => $request->phone, 'vouchervalue' => $request->amount, 'price' => $request->amount, 'comissao' => $request->amount - $request->price, 'reqterminalMsgID' => $resultVoucher->reqterminalMsgID, 'reqterminalID' => $resultVoucher->reqterminalID, 'reqMsgID' => $resultVoucher->reqMsgID, 'respDateTime' => $resultVoucher->respDateTime, 'receiptFormat' => $resultVoucher->receiptFormat, 'receipt' => $resultVoucher->receipt, 'smsreceipt' => $resultVoucher->smsreceipt, 'user_id' => $request->user()->id, 'voucher_list_id' => null, 'datepurchased' => now(), 'type' => 'recarga', 'category_id' => 23, 'old_balance' => $imaliUser->balance, 'new_balance' => $imaliUser2->balance ]); $sms = new SendSMS(); // $sms->sendSMSPurchaseVoucher($response->PurchaseVoucherResult->vouchers->Voucher, $response->PurchaseVoucherResult->vouchers->Voucher->voucherinfo->vouchername, auth()->user()->phone); TransactionHistory::create([ 'user_id' => $recarga->user_id, 'voucher_id' => $recarga->id, 'category_id' => $recarga->category_id, 'transaction_type' => 'voucher' ]); VoucherHistory::create([ 'user_id' => $recarga->user_id, 'voucher_id' => $recarga->id, 'transaction_type' => 'voucher' ]); $log = new Record(); $log->createLog([ 'description' => 'Celular: ' . $request->phone . ' Montante: ' . $request->amount, 'details' => 'Compra Feita com Sucesso!', 'operation' => 'Buy Voucher', 'status' => 'Success', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json([ 'message' => 'Compra Feita com Sucesso!', 'transaction' => $transaction, // 'data' => $response, ], 200); } } if ($request->vouchercode == 'VOM') { $directRecharge = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'adviceReqMsgID' => $transaction, 'terminalID' => 'i.Mali', 'msgID' => $msid->generateMSID(), 'test' => $this->isTest, 'msisdn' => $request->phone, 'purchaseValue' => $request->amount, // 'purchaseValue' => '200000005', 'receiptFormat' => 'POR_FORMATED_50', 'terminalChannel' => 'i.Mali App', 'terminalCompanyName' => 'Paytek', 'terminalOperator' => 'Operator', 'terminalMsgID' => '2020010700060' ) ); $data = json_decode(json_encode($directRecharge), true); $response = $this->client->VodacomRecharge($data); if ($response->VodacomRechargeResult->hasFault === true) { if ($response->VodacomRechargeResult->fault->mustALR === true) { GeneralAdvice::create([ 'reqMsgID' => $response->VodacomRechargeResult->reqMsgID, 'reqterminalID' => $response->VodacomRechargeResult->reqterminalID, 'receiptFormat' => $response->VodacomRechargeResult->receiptFormat, 'respDateTime' => $response->VodacomRechargeResult->respDateTime, 'faultnumber' => $response->VodacomRechargeResult->fault->faultnumber, 'user_id' => $request->user()->id, 'type' => 'direct', 'amount' => $request->amount, 'msno' => $request->phone, 'description' => $request->description ]); $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->amount + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->increment('captive_balance', $totalAmount); $log = new Record(); $log->createLog([ 'description' => 'Celular: ' . $request->phone . ' Montante: ' . $request->amount, 'details' => $response->VodacomRechargeResult->fault->POR_operatorMsg, 'operation' => 'Buy Voucher', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); if ($response->VodacomRechargeResult->fault->faultnumber == "35") { return response()->json(['message' => "Serviço de recargas indisponível"], 400); } else { return response()->json(['message' => $response->VodacomRechargeResult->fault->POR_operatorMsg], 400); } // return response()->json(['message' => $response->VodacomRechargeResult->fault->POR_operatorMsg], 400); } else { $log = new Record(); $log->createLog([ 'description' => 'Celular: ' . $request->phone . ' Montante: ' . $request->amount, 'details' => $response->VodacomRechargeResult->fault->POR_operatorMsg, 'operation' => 'Buy Voucher', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); if ($response->VodacomRechargeResult->fault->faultnumber == "35") { return response()->json(['message' => "Serviço de recargas indisponível"], 400); } else { return response()->json(['message' => $response->VodacomRechargeResult->fault->POR_operatorMsg], 400); } // return response()->json(['message' => $response->VodacomRechargeResult->fault->POR_operatorMsg], 400); } } else { $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->amount + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->decrement('balance', $totalAmount); $imaliUser2 = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $resultVoucher = $response->VodacomRechargeResult; $vou = PurchaseVoucher::create([ 'vouchername' => $request->description, 'vouchercode' => $request->phone, 'vouchervalue' => $request->amount, 'price' => $request->amount, 'comissao' => $request->amount - $request->price, 'reqterminalMsgID' => $resultVoucher->reqterminalMsgID, 'reqterminalID' => $resultVoucher->reqterminalID, 'reqMsgID' => $resultVoucher->reqMsgID, 'respDateTime' => $resultVoucher->respDateTime, 'receiptFormat' => $resultVoucher->receiptFormat, 'receipt' => $resultVoucher->receipt, 'smsreceipt' => $resultVoucher->smsreceipt, 'user_id' => $request->user()->id, 'voucher_list_id' => null, 'datepurchased' => now(), 'type' => 'recarga', 'category_id' => 23, 'old_balance' => $imaliUser->balance, 'new_balance' => $imaliUser2->balance ]); $sms = new SendSMS(); // $sms->sendSMSPurchaseVoucher($response->PurchaseVoucherResult->vouchers->Voucher, $response->PurchaseVoucherResult->vouchers->Voucher->voucherinfo->vouchername, auth()->user()->phone); TransactionHistory::create([ 'user_id' => $vou->user_id, 'voucher_id' => $vou->id, 'category_id' => $vou->category_id, 'transaction_type' => 'voucher' ]); VoucherHistory::create([ 'user_id' => $vou->user_id, 'voucher_id' => $vou->id, 'transaction_type' => 'voucher' ]); $log = new Record(); $log->createLog([ 'description' => 'Celular: ' . $request->phone . ' Montante: ' . $request->amount, 'details' => 'Compra Feita com Sucesso', 'operation' => 'Buy Voucher', 'status' => 'Success', 'properties' => $vou, 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json([ 'message' => 'Compra Feita com Sucesso!', 'transaction' => $transaction, // 'data' => $response, ], 200); } } if ($request->vouchercode == 'MOV') { $directRecharge = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'adviceReqMsgID' => $transaction, 'terminalID' => 'i.Mali', 'terminalChannel' => 'i.Mali App', 'terminalMsgID' => '2020010700060', 'msgID' => $msid->generateMSID(), 'msisdn' => $request->phone, // 'msisdn' => '200000005', 'purchaseValue' => $request->amount, 'receiptFormat' => 'POR_FORMATED_50', 'terminalCompanyName' => 'Paytek', 'terminalOperator' => 'Operator', 'test' => $this->isTest, ) ); $data = json_decode(json_encode($directRecharge), true); $response = $this->client->MovitelRecharge($data); if ($response->MovitelRechargeResult->hasFault === true) { if ($response->MovitelRechargeResult->fault->mustALR === true) { GeneralAdvice::create([ 'reqMsgID' => $response->MovitelRechargeResult->reqMsgID, 'reqterminalID' => $response->MovitelRechargeResult->reqterminalID, 'receiptFormat' => $response->MovitelRechargeResult->receiptFormat, 'respDateTime' => $response->MovitelRechargeResult->respDateTime, 'faultnumber' => $response->MovitelRechargeResult->fault->faultnumber, 'user_id' => $request->user()->id, 'type' => 'direct', 'amount' => $request->amount, 'msno' => $request->phone, 'description' => $request->description ]); $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->amount + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->increment('captive_balance', $totalAmount); $log = new Record(); $log->createLog([ 'description' => 'Celular: ' . $request->phone . ' Montante: ' . $request->amount, 'details' => $response->MovitelRechargeResult->fault->POR_operatorMsg, 'operation' => 'Buy Voucher', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json(['message' => $response->MovitelRechargeResult->fault->POR_operatorMsg, 'data' => $response->MovitelRechargeResult], 400); } else { $log = new Record(); $log->createLog([ 'description' => 'Celular: ' . $request->phone . ' Montante: ' . $request->amount, 'details' => $response->MovitelRechargeResult->fault->POR_operatorMsg, 'operation' => 'Buy Voucher', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); if ($response->MovitelRechargeResult->fault->faultnumber == "35") { return response()->json(['message' => "Serviço de recargas indisponível"], 400); } else { return response()->json(['message' => $response->MovitelRechargeResult->fault->POR_operatorMsg], 400); } // return response()->json(['message' => $response->MovitelRechargeResult->fault->POR_operatorMsg], 400); } } else { $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->amount + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->decrement('balance', $totalAmount); $imaliUser2 = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $resultVoucher = $response->MovitelRechargeResult; $vou = PurchaseVoucher::create([ 'vouchername' => $request->description, 'vouchercode' => $request->phone, 'vouchervalue' => $request->amount, 'price' => $request->amount, // 'price' => $request->price, 'comissao' => $request->amount - $request->price, 'reqterminalMsgID' => $resultVoucher->reqterminalMsgID, 'reqterminalID' => $resultVoucher->reqterminalID, 'reqMsgID' => $resultVoucher->reqMsgID, 'respDateTime' => $resultVoucher->respDateTime, 'receiptFormat' => $resultVoucher->receiptFormat, 'receipt' => $resultVoucher->receipt, 'smsreceipt' => $resultVoucher->smsreceipt, 'user_id' => $request->user()->id, 'voucher_list_id' => null, 'type' => 'recarga', 'category_id' => 23, 'old_balance' => $imaliUser->balance, 'new_balance' => $imaliUser2->balance ]); $sms = new SendSMS(); // $sms->sendSMSPurchaseVoucher($response->PurchaseVoucherResult->vouchers->Voucher, $response->PurchaseVoucherResult->vouchers->Voucher->voucherinfo->vouchername, auth()->user()->phone); TransactionHistory::create([ 'user_id' => $vou->user_id, 'voucher_id' => $vou->id, 'category_id' => $vou->category_id, 'transaction_type' => 'voucher' ]); VoucherHistory::create([ 'user_id' => $vou->user_id, 'voucher_id' => $vou->id, 'transaction_type' => 'voucher' ]); $log = new Record(); $log->createLog([ 'description' => 'Celular: ' . $request->phone . ' Montante: ' . $request->amount, 'details' => 'Compra Feita com Sucesso!', 'operation' => 'Buy Voucher', 'status' => 'Success', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json([ 'message' => 'Compra Feita com Sucesso!', 'transaction' => $transaction, // 'data' => $response, // 'data2' => $resultVoucher ], 200); } } } // } else { // return response()->json(['message' => 'Pin incorrecto'], 400); // } } else { $kyc = new Kyc(); $result = $kyc->checkUserForAirTime($request); if ($result) { $log = new Record(); $log->createLog([ 'description' => 'Celular: ' . $request->phone . ' Montante: ' . $request->amount, 'details' => $result, 'operation' => 'Buy Voucher', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return $result; } else { if ($request->vouchercode == 'MCL') { $directRecharge = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'adviceReqMsgID' => $transaction, 'terminalID' => 'i.Mali', 'terminalChannel' => 'i.Mali App', 'terminalMsgID' => '2020010700060', 'msgID' => $msid->generateMSID(), 'msisdn' => $request->phone, 'purchaseValue' => $request->amount, 'receiptFormat' => 'POR_FORMATED_50', 'terminalCompanyName' => 'Paytek', 'terminalOperator' => 'Operator', 'test' => $this->isTest, ) ); $data = json_decode(json_encode($directRecharge), true); $response = $this->client->MCelRecharge($data); if ($response->MCelRechargeResult->hasFault === true) { if ($response->MCelRechargeResult->fault->mustALR === true) { GeneralAdvice::create([ 'reqMsgID' => $response->MCelRechargeResult->reqMsgID, 'reqterminalID' => $response->MCelRechargeResult->reqterminalID, 'receiptFormat' => $response->MCelRechargeResult->receiptFormat, 'respDateTime' => $response->MCelRechargeResult->respDateTime, 'faultnumber' => $response->MCelRechargeResult->fault->faultnumber, 'user_id' => $request->user()->id, 'type' => 'direct', 'amount' => $request->amount, 'msno' => $request->phone, 'description' => $request->description ]); $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->amount + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->increment('captive_balance', $totalAmount); $log = new Record(); $log->createLog([ 'description' => 'Celular: ' . $request->phone . ' Montante: ' . $request->amount, 'details' => $response->MCelRechargeResult->fault->POR_operatorMsg, 'operation' => 'Buy Voucher', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json(['message' => $response->MCelRechargeResult->fault->POR_operatorMsg], 400); } else { $log = new Record(); $log->createLog([ 'description' => 'Celular: ' . $request->phone . ' Montante: ' . $request->amount, 'details' => $response->MCelRechargeResult->fault->POR_operatorMsg, 'operation' => 'Buy Voucher', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); if ($response->MCelRechargeResult->fault->faultnumber == "35") { return response()->json(['message' => "Serviço de recargas indisponível"], 400); } else { return response()->json(['message' => $response->MCelRechargeResult->fault->POR_operatorMsg], 400); } // return response()->json(['message' => $response->MCelRechargeResult->fault->POR_operatorMsg], 400); } } else { $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->amount + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->decrement('balance', $totalAmount); $imaliUser2 = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $resultVoucher = $response->MCelRechargeResult; $resu = PurchaseVoucher::create([ 'vouchername' => $request->description, 'vouchercode' => $request->phone, 'vouchervalue' => $request->amount, 'price' => $request->amount, // 'price' => $request->price, 'comissao' => $request->amount - $request->price, 'reqterminalMsgID' => $resultVoucher->reqterminalMsgID, 'reqterminalID' => $resultVoucher->reqterminalID, 'reqMsgID' => $resultVoucher->reqMsgID, 'respDateTime' => $resultVoucher->respDateTime, 'receiptFormat' => $resultVoucher->receiptFormat, 'receipt' => $resultVoucher->receipt, 'smsreceipt' => $resultVoucher->smsreceipt, 'user_id' => $request->user()->id, 'voucher_list_id' => null, 'type' => 'recarga', 'category_id' => 23, 'old_balance' => $imaliUser->balance, 'new_balance' => $imaliUser2->balance ]); $sms = new SendSMS(); // $sms->sendSMSPurchaseVoucher($response->PurchaseVoucherResult->vouchers->Voucher, $response->PurchaseVoucherResult->vouchers->Voucher->voucherinfo->vouchername, auth()->user()->phone); TransactionHistory::create([ 'user_id' => $resu->user_id, 'voucher_id' => $resu->id, 'category_id' => $resu->category_id, 'transaction_type' => 'voucher' ]); VoucherHistory::create([ 'user_id' => $resu->user_id, 'voucher_id' => $resu->id, 'transaction_type' => 'voucher' ]); $log = new Record(); $log->createLog([ 'description' => 'Celular: ' . $request->phone . ' Montante: ' . $request->amount, 'details' => 'Compra Feita com Sucesso!', 'operation' => 'Buy Voucher', 'status' => 'Success', 'properties' => $resu, 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json([ 'message' => 'Compra Feita com Sucesso!', 'transaction' => $transaction, // 'data' => $response, ], 200); } // $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); // // $totalAmount = $request->amount + $imaliUser->taxa; // // DB::table('imali_accounts')->where('user_id', $request->user()->id)->decrement('balance', $totalAmount); // // // $sms = new SendSMS(); // //// $sms->sendSMSPurchaseVoucher($response->PurchaseVoucherResult->vouchers->Voucher, $response->PurchaseVoucherResult->vouchers->Voucher->voucherinfo->vouchername, auth()->user()->phone); // // return response()->json([ // 'message' => 'Compra Feita com Sucesso!', // 'transaction' => $transaction, // 'data' => $response, // ], 200); } if ($request->vouchercode == 'VOM') { $directRecharge = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'adviceReqMsgID' => $transaction, 'terminalID' => 'i.Mali', 'msgID' => $msid->generateMSID(), 'test' => $this->isTest, 'msisdn' => $request->phone, 'purchaseValue' => $request->amount, 'receiptFormat' => 'POR_FORMATED_50', 'terminalChannel' => 'i.Mali App', 'terminalCompanyName' => 'Paytek', 'terminalOperator' => 'Operator', 'terminalMsgID' => '2020010700060' ) ); $data = json_decode(json_encode($directRecharge), true); $response = $this->client->VodacomRecharge($data); if ($response->VodacomRechargeResult->hasFault === true) { if ($response->VodacomRechargeResult->fault->mustALR === true) { GeneralAdvice::create([ 'reqMsgID' => $response->VodacomRechargeResult->reqMsgID, 'reqterminalID' => $response->VodacomRechargeResult->reqterminalID, 'receiptFormat' => $response->VodacomRechargeResult->receiptFormat, 'respDateTime' => $response->VodacomRechargeResult->respDateTime, 'faultnumber' => $response->VodacomRechargeResult->fault->faultnumber, 'user_id' => $request->user()->id, 'type' => 'direct', 'amount' => $request->amount, 'msno' => $request->phone, 'description' => $request->description ]); $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->amount + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->increment('captive_balance', $totalAmount); $log = new Record(); $log->createLog([ 'description' => 'Celular: ' . $request->phone . ' Montante: ' . $request->amount, 'details' => $response->VodacomRechargeResult->fault->POR_operatorMsg, 'operation' => 'Buy Voucher', 'status' => 'Error', 'properties' => json_encode($request->except(['pin'])), // 'properties' => $request->all(), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json(['message' => $response->VodacomRechargeResult->fault->POR_operatorMsg], 400); } else { $log = new Record(); $log->createLog([ 'description' => 'Celular: ' . $request->phone . ' Montante: ' . $request->amount, 'details' => $response->VodacomRechargeResult->fault->POR_operatorMsg, 'operation' => 'Buy Voucher', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); if ($response->VodacomRechargeResult->fault->faultnumber == "35") { return response()->json(['message' => "Serviço de recargas indisponível"], 400); } else { return response()->json(['message' => $response->VodacomRechargeResult->fault->POR_operatorMsg], 400); } // return response()->json(['message' => $response->VodacomRechargeResult->fault->POR_operatorMsg], 400); } } else { $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->amount + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->decrement('balance', $totalAmount); $sms = new SendSMS(); $imaliUser2 = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $resultVoucher = $response->VodacomRechargeResult; $su = PurchaseVoucher::create([ 'vouchername' => $request->description, 'vouchercode' => $request->phone, 'vouchervalue' => $request->amount, 'price' => $request->amount, 'comissao' => $request->amount - $request->price, 'reqterminalMsgID' => $resultVoucher->reqterminalMsgID, 'reqterminalID' => $resultVoucher->reqterminalID, 'reqMsgID' => $resultVoucher->reqMsgID, 'respDateTime' => $resultVoucher->respDateTime, 'receiptFormat' => $resultVoucher->receiptFormat, 'receipt' => $resultVoucher->receipt, 'smsreceipt' => $resultVoucher->smsreceipt, 'user_id' => $request->user()->id, 'voucher_list_id' => null, 'type' => 'recarga', 'datepurchased' => now(), 'category_id' => 23, 'old_balance' => $imaliUser->balance, 'new_balance' => $imaliUser2->balance ]); // $sms->sendSMSPurchaseVoucher($response->PurchaseVoucherResult->vouchers->Voucher, $response->PurchaseVoucherResult->vouchers->Voucher->voucherinfo->vouchername, auth()->user()->phone); TransactionHistory::create([ 'user_id' => $su->user_id, 'voucher_id' => $su->id, 'category_id' => $su->category_id, 'transaction_type' => 'voucher' ]); VoucherHistory::create([ 'user_id' => $su->user_id, 'voucher_id' => $su->id, 'transaction_type' => 'voucher' ]); $log = new Record(); $log->createLog([ 'description' => 'Celular: ' . $request->phone . ' Montante: ' . $request->amount, 'details' => 'Compra Feita com Sucesso!', 'operation' => 'Buy Voucher', 'status' => 'Success', 'properties' => $su, 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json([ 'message' => 'Compra Feita com Sucesso!', 'transaction' => $transaction, // 'data' => $response, ], 200); } // $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); // // $totalAmount = $request->amount + $imaliUser->taxa; // // DB::table('imali_accounts')->where('user_id', $request->user()->id)->decrement('balance', $totalAmount); // // // $sms = new SendSMS(); // //// $sms->sendSMSPurchaseVoucher($response->PurchaseVoucherResult->vouchers->Voucher, $response->PurchaseVoucherResult->vouchers->Voucher->voucherinfo->vouchername, auth()->user()->phone); // // return response()->json([ // 'message' => 'Compra Feita com Sucesso!', // 'transaction' => $transaction, // 'data' => $response, // ], 200); } if ($request->vouchercode == 'MOV') { $directRecharge = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'adviceReqMsgID' => $transaction, 'terminalID' => 'i.Mali', 'terminalChannel' => 'i.Mali App', 'terminalMsgID' => '2020010700060', 'msgID' => $msid->generateMSID(), 'msisdn' => $request->phone, 'purchaseValue' => $request->amount, 'receiptFormat' => 'POR_FORMATED_50', 'terminalCompanyName' => 'Paytek', 'terminalOperator' => 'Operator', 'test' => $this->isTest, ) ); $data = json_decode(json_encode($directRecharge), true); $response = $this->client->MovitelRecharge($data); if ($response->MovitelRechargeResult->hasFault === true) { if ($response->MovitelRechargeResult->fault->mustALR === true) { GeneralAdvice::create([ 'reqMsgID' => $response->MovitelRechargeResult->reqMsgID, 'reqterminalID' => $response->MovitelRechargeResult->reqterminalID, 'receiptFormat' => $response->MovitelRechargeResult->receiptFormat, 'respDateTime' => $response->MovitelRechargeResult->respDateTime, 'faultnumber' => $response->MovitelRechargeResult->fault->faultnumber, 'user_id' => $request->user()->id, 'type' => 'direct', 'amount' => $request->amount, 'msno' => $request->phone, 'description' => $request->description ]); $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->amount + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->increment('captive_balance', $totalAmount); $log = new Record(); $log->createLog([ 'description' => 'Celular: ' . $request->phone . ' Montante: ' . $request->amount, 'details' => $response->MovitelRechargeResult->fault->POR_operatorMsg, 'operation' => 'Buy Voucher', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json(['message' => $response->MovitelRechargeResult->fault->POR_operatorMsg, 'data' => $response->MovitelRechargeResult], 400); } else { $log = new Record(); $log->createLog([ 'description' => 'Celular: ' . $request->phone . ' Montante: ' . $request->amount, 'details' => $response->MovitelRechargeResult->fault->POR_operatorMsg, 'operation' => 'Buy Voucher', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); if ($response->MovitelRechargeResult->fault->faultnumber == "35") { return response()->json(['message' => "Serviço de recargas indisponível"], 400); } else { return response()->json(['message' => $response->MovitelRechargeResult->fault->POR_operatorMsg], 400); } } } else { $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->amount + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->decrement('balance', $totalAmount); $imaliUser2 = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $resultVoucher = $response->MovitelRechargeResult; $vouch = PurchaseVoucher::create([ 'vouchername' => $request->description, 'vouchercode' => $request->phone, 'vouchervalue' => $request->amount, // 'price' => $request->price, 'price' => $request->amount, 'comissao' => $request->amount - $request->price, 'reqterminalMsgID' => $resultVoucher->reqterminalMsgID, 'reqterminalID' => $resultVoucher->reqterminalID, 'reqMsgID' => $resultVoucher->reqMsgID, 'respDateTime' => $resultVoucher->respDateTime, 'receiptFormat' => $resultVoucher->receiptFormat, 'receipt' => $resultVoucher->receipt, 'smsreceipt' => $resultVoucher->smsreceipt, 'user_id' => $request->user()->id, 'voucher_list_id' => null, 'type' => 'recarga', 'category_id' => 23, 'old_balance' => $imaliUser->balance, 'new_balance' => $imaliUser2->balance ]); $sms = new SendSMS(); // $sms->sendSMSPurchaseVoucher($response->PurchaseVoucherResult->vouchers->Voucher, $response->PurchaseVoucherResult->vouchers->Voucher->voucherinfo->vouchername, auth()->user()->phone); TransactionHistory::create([ 'user_id' => $vouch->user_id, 'voucher_id' => $vouch->id, 'category_id' => $vouch->category_id, 'transaction_type' => 'voucher' ]); VoucherHistory::create([ 'user_id' => $vouch->user_id, 'voucher_id' => $vouch->id, 'transaction_type' => 'voucher' ]); $log = new Record(); $log->createLog([ 'description' => 'Celular: ' . $request->phone . ' Montante: ' . $request->amount, 'details' => 'Compra Feita com Sucesso!', 'operation' => 'Buy Voucher', 'status' => 'Success', 'properties' => $vouch, 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json([ 'message' => 'Compra Feita com Sucesso!', 'transaction' => $transaction, // 'data' => $response, ], 200); } // // $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); // // $totalAmount = $request->amount + $imaliUser->taxa; // // DB::table('imali_accounts')->where('user_id', $request->user()->id)->decrement('balance', $totalAmount); // // // $sms = new SendSMS(); // //// $sms->sendSMSPurchaseVoucher($response->PurchaseVoucherResult->vouchers->Voucher, $response->PurchaseVoucherResult->vouchers->Voucher->voucherinfo->vouchername, auth()->user()->phone); // // return response()->json([ // 'message' => 'Compra Feita com Sucesso!', // 'transaction' => $transaction, // 'data' => $response, // ], 200); } } } } catch (SoapFault $fault) { echo '<br>' . $fault; } } public function checkContador(Request $request) { $msidGeneration2 = new TransactionGeneration(); $transaction = $msidGeneration2->generateMSID(); // 07063184670 // 84626671881 $directRecharge = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'adviceReqMsgID' => $transaction, 'terminalID' => '1', 'terminalMsgID' => '2020010700060', 'msgID' => $msidGeneration2->generateMSID(), 'meterIdentifier' => array( // 'msno' => '00008', 'msno' => $request->msno, 'track2Data' => '', ), 'test' => $this->isTest, ) ); $data = json_decode(json_encode($directRecharge), true); $response = $this->client->ConfirmCustomer($data); if ($response->ConfirmCustomerResult->hasFault == false) { $contador = Contador::query() ->where('msno', $request->msno) ->where('user_id', $request->user()->id) ->first(); if ($contador) { $log = new Record(); $log->createLog([ 'description' => 'Contador: ' . $request->msno . ' msgID: ' . $msidGeneration2->generateMSID(), 'details' => 'Este contador já foi adicionado', 'operation' => 'Check Contador EDM', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json(['message' => 'Este contador já foi adicionado'], 400); } else { $contador = Contador::create([ 'contador_name' => $request->contador_name, 'reqterminalMsgID' => $response->ConfirmCustomerResult->reqterminalMsgID, 'reqterminalID' => $response->ConfirmCustomerResult->reqterminalID, 'reqMsgID' => $response->ConfirmCustomerResult->reqMsgID, 'respDateTime' => $response->ConfirmCustomerResult->respDateTime, 'customerAddr' => $response->ConfirmCustomerResult->confirmCustResult->customerAddr, 'customerName' => $response->ConfirmCustomerResult->confirmCustResult->customerName, 'customerType' => $response->ConfirmCustomerResult->confirmCustResult->customerType, 'idNo' => $response->ConfirmCustomerResult->confirmCustResult->idNo, 'leRefNo' => $response->ConfirmCustomerResult->confirmCustResult->leRefNo, 'agrRef' => $response->ConfirmCustomerResult->confirmCustResult->agrRef, 'locRef' => $response->ConfirmCustomerResult->confirmCustResult->locRef, // 'taxRef' => $response->ConfirmCustomerResult->confirmCustResult->taxRef, 'utilName' => $response->ConfirmCustomerResult->confirmCustResult->utilName, 'SGC' => $response->ConfirmCustomerResult->confirmCustResult->SGC, 'TT' => $response->ConfirmCustomerResult->confirmCustResult->TT, 'ALG' => $response->ConfirmCustomerResult->confirmCustResult->ALG, 'TI' => $response->ConfirmCustomerResult->confirmCustResult->TI, 'KRN' => $response->ConfirmCustomerResult->confirmCustResult->KRN, 'msno' => $response->ConfirmCustomerResult->confirmCustResult->msno, 'user_id' => $request->user()->id ]); $log = new Record(); $log->createLog([ 'description' => 'Contador: ' . $request->msno . ' msgID: ' . $msidGeneration2->generateMSID(), 'details' => 'Contador Adicionado com Sucesso', 'operation' => 'Check Contador EDM', 'status' => 'Success', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json(['message' => 'Contador Adicionado com Sucesso', 'data' => $contador], 200); } } else { $log = new Record(); $log->createLog([ 'description' => 'Contador: ' . $request->msno . ' msgID: ' . $msidGeneration2->generateMSID(), 'details' => $response->ConfirmCustomerResult->fault->POR_operatorMsg, 'operation' => 'Check Contador EDM', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); // if ($response->MovitelRechargeResult->fault->faultnumber == "35") { // // return response()->json(['message' => "Serviço de recargas indisponível"], 400); // // } else { // return response()->json(['message' => $response->MovitelRechargeResult->fault->POR_operatorMsg], 400); // } return response()->json(['message' => $response->ConfirmCustomerResult->fault->POR_operatorMsg], 404); } } public function getMyContador(Request $request) { $contadores = Contador::query() ->where('user_id', $request->user()->id) ->orderByDesc('created_at') ->get(); return response()->json(['data' => $contadores]); } function sendSMSCredelec() {} public function getZapPacotes(Request $request) { // $topupUrl = 'https://topupretail.com:18880/Service.asmx?wsdl'; $msidGeneration = new TransactionGeneration(); $transaction = $msidGeneration->generateMSID(); $directRecharge = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'terminalID' => 'i.Mali', 'terminalMsgID' => '2020010700060', // 'msgID' => $msidGeneration->generateMSID(), 'msgID' => $transaction, 'test' => $this->isTest, ) ); $data = json_decode(json_encode($directRecharge), true); $response = $this->client->ZAPAvailableProducts($data); return response()->json(['data' => $response->ZAPAvailableProductsResult->products->ZAPProduct]); } public function getDstvProducts($number, $type) { $msidGeneration = new TransactionGeneration(); $transaction = $msidGeneration->generateMSID(); $directRecharge = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'terminalID' => 'i.Mali', 'terminalMsgID' => '2020010700060', 'msgID' => $msidGeneration->generateMSID(), 'test' => $this->isTest, 'smartCardnumber' => $number ) ); $data = json_decode(json_encode($directRecharge), true); $response = $this->client->DSTVConfirmCustomer($data); $result = $response->DSTVConfirmCustomerResult; $responseNew = null; $responseDue = null; $amount = null; if ($result->hasFault == true) { return response()->json(['message' => $response->DSTVConfirmCustomerResult->fault->POR_operatorMsg], 400); } else { if ($type == "GOTV") { if ($result->hasGoTV == true) { if ($result->hasNormal == false and $result->statusGoTV == 'Open' and $result->hasBoxOffice == false) { $dataSumbit = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'terminalID' => 'i.Mali', 'terminalMsgID' => '2020010700060', 'msgID' => $msidGeneration->generateMSID(), 'test' => $this->isTest, 'customerNumber' => $result->customerNumber ) ); $data = json_decode(json_encode($dataSumbit), true); $responseNew = $this->client->DSTVAccountPmntQuote($data); } if ($result->hasNormal == false and $result->statusGoTV == 'Suspended' and $result->hasBoxOffice == false) { $dataSumbit = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'terminalID' => 'i.Mali', 'terminalMsgID' => '2020010700060', 'msgID' => $msidGeneration->generateMSID(), 'test' => $this->isTest, 'customerNumber' => $result->customerNumber ) ); $data = json_decode(json_encode($dataSumbit), true); $client = new SoapClient($this->topUpUrl, ['trace' => true]); $responseDue = $client->DSTVAccountPmntDue($data); } if ($responseDue != null) { $responseDue = $responseDue->DSTVAccountPmntDueResult; } $dataNew = null; if ($responseNew != null) { $responseNew = $responseNew->DSTVAccountPmntQuoteResult->products->DSTVProduct; } // $product = $this->getDstvProduct($type, $result->customerNumber); $product = $this->getDstvProduct($type, $number); if ($product->DSTVAvailableProductsResult->hasFault == true) { return response()->json([ // 'product' => $product->DSTVAvailableProductsResult->products->DSTVProduct, // 'product' => $product->DSTVAvailableProductsResult, 'products' => $product, 'client_result' => $result, 'payment_quote' => $responseNew, 'data' => array($responseNew), 'payment_due' => $responseDue ]); } else { if (is_array($product->DSTVAvailableProductsResult->products->DSTVProduct)) { return response()->json([ 'product' => $product->DSTVAvailableProductsResult->products->DSTVProduct, // 'product' => $product->DSTVAvailableProductsResult, 'products' => $product, 'client_result' => $result, 'payment_quote' => $responseNew, 'data' => array($responseNew), 'payment_due' => $responseDue ]); } else { return response()->json([ 'product' => array($product->DSTVAvailableProductsResult->products->DSTVProduct), // 'product' => $product->DSTVAvailableProductsResult, 'products' => $product, 'client_result' => $result, 'payment_quote' => $responseNew, 'data' => array($responseNew), 'payment_due' => $responseDue ]); } } } else { return response()->json(['message' => 'Este número não tem GOTV'], 400); } } elseif ($type == "DSTV") { if ($result->hasGoTV == false and $result->hasNormal == true) { // if ($result->hasNormal == true and $result->statusGoTV == 'Open' and $result->hasBoxOffice == false) { if ($result->hasNormal == true and $result->statusNormal == 'Open' and $result->hasBoxOffice == false) { $dataSumbit = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'terminalID' => 'i.Mali', 'terminalMsgID' => '2020010700060', 'msgID' => $msidGeneration->generateMSID(), 'test' => $this->isTest, 'customerNumber' => $result->customerNumber ) ); $data = json_decode(json_encode($dataSumbit), true); $responseNew = $this->client->DSTVAccountPmntQuote($data); } // if ($result->hasNormal == false and $result->statusNormal == 'Suspended' and $result->hasBoxOffice == false) { if ($result->hasNormal == true and $result->statusNormal == 'Suspended' and $result->hasBoxOffice == false) { $dataSumbit = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'terminalID' => 'i.Mali', 'terminalMsgID' => '2020010700060', 'msgID' => $msidGeneration->generateMSID(), 'test' => $this->isTest, 'customerNumber' => $result->customerNumber ) ); $data = json_decode(json_encode($dataSumbit), true); $client = new SoapClient($this->topUpUrl, ['trace' => true]); $responseDue = $client->DSTVAccountPmntDue($data); } if ($responseDue != null) { $responseDue = $responseDue->DSTVAccountPmntDueResult; } if ($responseNew != null) { $responseNew = $responseNew->DSTVAccountPmntQuoteResult->products->DSTVProduct; } $product = $this->getDstvProduct($type, $number); // return response()->json([ // 'product' => $product->DSTVAvailableProductsResult->products->DSTVProduct, // 'products' => $product, // 'client_result' => $result, // 'payment_quote' => array($responseNew), // 'data' => array($responseNew), // 'payment_due' => $responseDue // ]); if ($product->DSTVAvailableProductsResult->hasFault == true) { return response()->json([ 'products' => $product, 'client_result' => $result, 'payment_quote' => $responseNew, 'data' => array($responseNew), 'payment_due' => $responseDue ]); } else { if (is_array($product->DSTVAvailableProductsResult->products->DSTVProduct)) { return response()->json([ 'product' => $product->DSTVAvailableProductsResult->products->DSTVProduct, 'products' => $product, 'client_result' => $result, 'payment_quote' => $responseNew, 'data' => array($responseNew), 'payment_due' => $responseDue ]); } else { return response()->json([ 'product' => array($product->DSTVAvailableProductsResult->products->DSTVProduct), 'products' => $product, 'client_result' => $result, 'payment_quote' => $responseNew, 'data' => array($responseNew), 'payment_due' => $responseDue ]); } } } else { return response()->json(['message' => 'Este número não tem DSTV'], 400); } } } } private function getDstvProduct($type, $customerSmartCard) { $msidGeneration = new TransactionGeneration(); $transaction = $msidGeneration->generateMSID(); $dataSumbit = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'terminalID' => 'i.Mali', 'terminalMsgID' => '2020010700060', 'msgID' => $transaction, 'test' => $this->isTest, 'paymentType' => $type, 'customerNumber' => '', 'smartCardnumber' => $customerSmartCard ) ); // 'customerNumber' => "7026701729", // 'customerNumber' => '', // 'smartCardnumber' => "7026701729", // 'smartCardnumber' => "4620835248", $data = json_decode(json_encode($dataSumbit), true); $response = $this->client->DSTVAvailableProducts($data); return $response; } public function buyDstvPacote(Request $request) { $this->validate($request, [ 'payment_type' => 'required|in:GOTV,DSTV', 'description' => 'required', 'code' => 'required', 'smartCardnumber' => 'required', 'price' => 'required', 'period' => 'required', //'pin' => 'required', 'customerNumber' => 'required' ], [ 'payment_type.in' => 'a variavel payment_type deve ser GOTV ou DSTV', ]); $kyc = new Kyc(); $result = $kyc->checkUserBuyDSTV($request); if ($result) { return $result; } else { $msidGeneration = new TransactionGeneration(); $directRecharge = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'terminalID' => 'i.Mali', 'terminalMsgID' => '2020010700060', 'msgID' => $msidGeneration->generateMSID(), 'test' => $this->isTest, 'customerNumber' => $request->customerNumber, 'paymentType' => $request->payment_type, 'purchaseValue' => $request->price, // 'period' => $request->period, 'period' => 1, 'receiptFormat' => 'POR_FORMATED_50', 'terminalLocation' => 'Maputo Cidade', 'terminalChannel' => "i.Mali", 'terminalCompanyName' => 'Paytek Africa', 'terminalOperator' => 'i.Mali', ) ); $data = json_decode(json_encode($directRecharge), true); $response = $this->client->DSTVSubmitPayment($data); $result = $response->DSTVSubmitPaymentResult; if ($result->hasFault == true and $result->fault->mustALR == true) { GeneralAdvice::create([ 'reqMsgID' => $result->reqMsgID, 'reqterminalID' => $result->reqterminalID, 'receiptFormat' => $result->receiptFormat, 'respDateTime' => $result->respDateTime, 'faultnumber' => $result->fault->faultnumber, 'user_id' => $request->user()->id, 'type' => 'dstv', 'amount' => $request->price, 'msno' => $request->code, 'description' => $request->description ]); $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->price + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->increment('captive_balance', $totalAmount); $log = new Record(); $log->createLog([ 'description' => 'Nr Cliente: ' . $request->customerNumber . 'code: ' . $request->code, 'price: ' . $request->price, 'details' => $result->fault->POR_operatorMsg, 'operation' => 'Compra do Pacote ' . $request->payment_type, 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); // if ($result->fault->faultnumber == "9") { // // // TRATAMOS O METODO DE MUSTALT // // return response()->json([ // 'message' => $result->fault->POR_operatorMsg, // 'description' => 'VAmos tratar o must Alr', // 'faultnumber' => $result->fault->faultnumber, // 'data' => $response // ], 400); // } // DEVEMOS TRATAR O MUSTALR return response()->json([ 'message' => $result->fault->POR_operatorMsg, 'faultnumber' => $result->fault->faultnumber, 'description2' => 'VAmos tratar o must Alr', 'data' => $response ], 400); } elseif ($result->hasFault == true and $result->fault->mustALR == false) { if ($result->fault->faultnumber == "35") { return response()->json([ 'message' => "Serviço de recargas indisponível.", 'faultnumber' => $result->fault->faultnumber, 'data' => $response ], 400); } else { return response()->json([ 'message' => $result->fault->POR_operatorMsg, 'faultnumber' => $result->fault->faultnumber, 'data' => $response ], 400); } } else { // METODOS DE PAGAMENTO $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->price + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->decrement('balance', $totalAmount); $imaliUser2 = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $recarga = PurchaseVoucher::create([ 'transaction' => $result->transactionNo, 'vouchername' => $request->payment_type . '-' . $request->description, // 'vouchername' =>$request->description, 'vouchercode' => $request->code, 'vouchervalue' => $request->price, 'price' => $request->price, 'datepurchased' => $result->respDateTime, 'reqterminalMsgID' => $result->reqterminalMsgID, 'reqterminalID' => $result->reqterminalID, 'reqMsgID' => $result->reqMsgID, 'respDateTime' => $result->respDateTime, 'receiptFormat' => $result->receiptFormat, 'receipt' => $result->receipt, 'smsreceipt' => $result->smsreceipt, 'user_id' => $request->user()->id, 'voucher_list_id' => null, 'type' => 'Tv', 'smartCard' => $request->customerNumber, 'category_id' => 18, 'old_balance' => $imaliUser->balance, 'new_balance' => $imaliUser2->balance ]); TransactionHistory::create([ 'user_id' => $recarga->user_id, 'voucher_id' => $recarga->id, 'category_id' => $recarga->category_id, 'transaction_type' => 'tv' ]); VoucherHistory::create([ 'user_id' => $recarga->user_id, 'voucher_id' => $recarga->id, 'transaction_type' => 'tv' ]); $log = new Record(); $log->createLog([ 'description' => 'Transaction' . $recarga->reqMsgID . ' Nr Cliente: ' . $request->customerNumber . 'code: ' . $request->code, 'price: ' . $request->price, 'details' => "Pacote Activado Com Sucesso", 'operation' => 'Buy StarTimes', 'status' => 'Success', 'properties' => $recarga, 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); $notification = array( 'icon' => 'ic_i_mali_cover', 'title' => 'i.Mali recargas', 'body' => 'Parabéns, ' . ' comprou recarga ' . $recarga->vouchername . '.' . ' i.Mali é o Futuro', 'click_action' => 'com.imali.payapp.payment_RECARGA_NOTIFICATION', 'color' => '#ffffff' ); $data = array( 'reqMsgID' => $recarga->reqMsgID, 'vouchername' => $recarga->vouchername, 'vouchercode' => (float)$recarga->vouchercode, 'data' => $recarga->created_at, 'price' => $recarga->price, 'vouchervalue' => $recarga->vouchervalue, 'sms' => $recarga->receipt, 'route' => 'RECARGA_NOTIFICATION', 'terminal' => 'firebase' ); $this->pushNotifification($request->user()->firebase_token, $notification, $data); return response()->json([ 'message' => 'Pagamento Feito com Sucesso', 'data' => $response, 'reqMsgID' => $response->DSTVSubmitPaymentResult->reqMsgID ], 200); } // } } // public function getDstvProductsOLD($customerNumber) // { // $msidGeneration = new TransactionGeneration(); // // $transaction = $msidGeneration->generateMSID(); // // $directRecharge = array( // 'req' => array( // 'authCred' => array( // 'opName' => $this->username, // 'password' => $this->password // ), // 'terminalID' => 'i.Mali', // 'terminalMsgID' => '2020010700060', // 'msgID' => $msidGeneration->generateMSID(), // 'test' => $this->isTest, // 'paymentType' => 'GOTV', // 'customerNumber' => $customerNumber, //// 'customerNumber' => '9001005', //// 'customerNumber' => '9001008', //// 'customerNumber' => '9001006', //// 'smartCardnumber' => '1001008' // ) // ); // // $data = json_decode(json_encode($directRecharge), true); // // $options = array( // 'cache_wsdl' => 0, // 'trace' => 1, // 'stream_context' => stream_context_create(array( // 'ssl' => array( // 'verify_peer' => false, // 'verify_peer_name' => false, // 'allow_self_signed' => true // ) // ))); // // $client = new SoapClient($this->topUpUrl, $options); //// $response = $client->DSTVAvailableProducts($data); // $response = $client->DSTVConfirmCustomer($data); // //// $result = $response->DSTVConfirmCustomerResult; //// //// if ($result->hasFault == false) { //// if ($result->hasGOTV == true && $result->statusGoTV == 'open') { //// //// } //// } // // return response()->json($response); // //// if ($response->DSTVAvailableProductsResult->hasFault === false) { //// return response()->json(['data' => $response->DSTVAvailableProductsResult->products->DSTVProduct]); //// } else { //// return response()->json(['message' => $response->DSTVAvailableProductsResult->fault->POR_operatorMsg], 400); //// } // //// return response()->json(['data' => $response->DSTVAvailableProductsResult->products->DSTVProduct]); //// return response()->json(['data' => $response]); // } // // public function getDstvProducts($customerNumber) // { // $msidGeneration = new TransactionGeneration(); // $transaction = $msidGeneration->generateMSID(); // $directRecharge = array( // 'req' => array( // 'authCred' => array( // 'opName' => $this->username, // 'password' => $this->password // ), // 'terminalID' => 'i.Mali', // 'terminalMsgID' => '2020010700060', // 'msgID' => $msidGeneration->generateMSID(), // 'test' => $this->isTest, // 'paymentType' => 'GOTV', // 'smartCardnumber' => $customerNumber // ) // ); // // $data = json_decode(json_encode($directRecharge), true); // // $options = array( // 'cache_wsdl' => 0, // 'trace' => 1, // 'stream_context' => stream_context_create(array( // 'ssl' => array( // 'verify_peer' => false, // 'verify_peer_name' => false, // 'allow_self_signed' => true // ) // ))); // //// $client = new SoapClient($this->topUpUrl, ['trace' => true]); // $client = new SoapClient($this->topUpUrl, $options); // $response = $client->DSTVConfirmCustomer($data); // // $result = $response->DSTVConfirmCustomerResult; // // // return response()->json($result); // // $responseNew = null; // $responseNewData = null; // $responseDue = null; // $amount = null; // // if ($result->hasNormal == false and $result->statusGoTV == 'Open' and $result->hasNormal == false and $result->hasBoxOffice == false) { // // $dataSumbit = array( // 'req' => array( // 'authCred' => array( // 'opName' => $this->username, // 'password' => $this->password // ), // 'terminalID' => 'i.Mali', // 'terminalMsgID' => '2020010700060', // 'msgID' => $msidGeneration->generateMSID(), // 'test' => $this->isTest, // 'customerNumber' => $result->customerNumber // ) // ); // $data = json_decode(json_encode($dataSumbit), true); // // $options = array( // 'cache_wsdl' => 0, // 'trace' => 1, // 'stream_context' => stream_context_create(array( // 'ssl' => array( // 'verify_peer' => false, // 'verify_peer_name' => false, // 'allow_self_signed' => true // ) // ))); // //// $client = new SoapClient($this->topUpUrl, ['trace' => true]); // $client = new SoapClient($this->topUpUrl, $options); // $responseNew = $client->DSTVAccountPmntQuote($data); // } // // if ($result->hasNormal == false and $result->statusGoTV == 'Suspended' and $result->hasBoxOffice == false) { // // $dataSumbit = array( // 'req' => array( // 'authCred' => array( // 'opName' => $this->username, // 'password' => $this->password // ), // 'terminalID' => 'i.Mali', // 'terminalMsgID' => '2020010700060', // 'msgID' => $msidGeneration->generateMSID(), // 'test' => $this->isTest, // 'customerNumber' => $result->customerNumber // ) // ); // $data = json_decode(json_encode($dataSumbit), true); // // $options = array( // 'cache_wsdl' => 0, // 'trace' => 1, // 'stream_context' => stream_context_create(array( // 'ssl' => array( // 'verify_peer' => false, // 'verify_peer_name' => false, // 'allow_self_signed' => true // ) // ))); // // $client = new SoapClient($this->topUpUrl, $options); // $responseDue = $client->DSTVAccountPmntDue($data); // //// $amount = $responseNew->DSTVAccountPmntDueResult->dueAmount; // } // //// $pagamento = array( //// 'req' => array( //// 'authCred' => array( //// 'opName' => $this->username, //// 'password' => $this->password //// ), //// 'terminalID' => 'i.Mali', //// 'terminalMsgID' => '2020010700060', //// 'msgID' => $msidGeneration->generateMSID(), //// 'test' => $this->isTest, //// 'customerNumber' => $result->customerNumber, //// 'paymentType' => 'GOTV', //// 'purchaseValue' => $amount, //// 'period' => $result->periodGoTV, //// 'receiptFormat' => 'POR_FORMATED_50', //// 'terminalLocation' => 'Maputo Cidade', //// 'terminalChannel' => "i.Mali", //// 'terminalCompanyName' => 'Paytek Africa', //// 'terminalOperator' => 'User121: ', //// ) //// ); //// //// $data = json_decode(json_encode($pagamento), true); //// $client = new SoapClient($this->topUpUrl, ['trace' => true]); //// $responsePagamento = $client->DSTVSubmitPayment($data); // //// return response()->json(['clienteResult' => $result, 'PREPayment' => $responseNew, 'payment'=> $responsePagamento]); // // if ($responseDue != null) { // $responseDue = $responseDue->DSTVAccountPmntDueResult; // } // // if ($responseNew != null) { // $responseNew = $responseNew->DSTVAccountPmntQuoteResult->products->DSTVProduct; // $responseNewData = $responseNew; // // if (!is_array($responseNew)) // $responseNew = array($responseNew); // } // // return response()->json(['client_result' => $result, 'payment_quote' => $responseNewData, 'data' => $responseNew, 'payment_due' => $responseDue]); // // } // // public function buyDstvPacote(Request $request) // { // // return $request->all(); //// $kyc = new Kyc(); //// $result = $kyc->checkUserBuyZap($request); //// if ($result) { //// return $result; //// } else { //// //// $msidGeneration = new TransactionGeneration(); //// //// $directRecharge = array( //// 'req' => array( //// 'authCred' => array( //// 'opName' => $this->username, //// 'password' => $this->password //// ), //// 'terminalID' => 'i.Mali', //// 'terminalMsgID' => '2020010700060', //// 'msgID' => $msidGeneration->generateMSID(), //// 'test' => $this->isTest, //// 'customerNumber' => $request->customerNumber, //// 'paymentType' => $request->payment_type, //// 'purchaseValue' => $request->price, //// 'period' => 1, //// 'receiptFormat' => 'POR_FORMATED_50', //// 'terminalLocation' => 'Maputo Cidade', //// 'terminalChannel' => "i.Mali", //// 'terminalCompanyName' => 'Paytek Africa', //// 'terminalOperator' => 'Paytek iMali', //// ) //// ); //// //// $data = json_decode(json_encode($directRecharge), true); //// $client = new SoapClient($this->topUpUrl, ['trace' => true]); //// $response = $client->DSTVSubmitPayment($data); //// //// return response()->json(['message' => 'Pagamento Feito com Sucesso', 'data' => $response]); //// //// } // // } // todo ---- Actualizado customerNumber para costumerNumber public function buyZapPacote(Request $request) { $kyc = new Kyc(); $result = $kyc->checkUserBuyZap($request); if ($result) { $log = new Record(); $log->createLog([ 'description' => 'Nr Cliente: ' . $request->costumerNumber . 'code: ' . $request->code, 'price: ' . $request->price, 'details' => $result, 'operation' => 'Buy Zap', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return $result; } else { // $topupUrl = 'https://topupretail.com:18880/Service.asmx?wsdl'; $msidGeneration = new TransactionGeneration(); $transaction = $msidGeneration->generateMSID(); $directRecharge = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'terminalID' => 'i.Mali', 'terminalMsgID' => '2020010700060', 'msgID' => $msidGeneration->generateMSID(), 'test' => $this->isTest, 'customerNumber' => $request->costumerNumber, 'code' => $request->code, 'price' => $request->price, 'receiptFormat' => 'POR_FORMATED_50', 'terminalLocation' => 'Maputo Cidade', 'terminalChannel' => "i.Mali", 'terminalCompanyName' => 'Paytek Africa', 'terminalOperator' => 'User121', ) ); $data = json_decode(json_encode($directRecharge), true); $response = $this->client->ZAPPayment($data); $zapResult = $response->ZAPPaymentResult; if ($zapResult->hasFault === false) { // $recarga = PurchaseVoucher::create([ //// 'transaction' => $response->transaction, // 'vouchername' => $request->description, // 'vouchercode' => $request->code, // 'vouchervalue' => $request->price, // 'price' => $request->price, //// 'barcode' => $voucherInfo->barcode, // 'reqterminalMsgID' => $zapResult->reqterminalMsgID, // 'reqterminalID' => $zapResult->reqterminalID, // 'reqMsgID' => $zapResult->reqMsgID, // 'respDateTime' => $zapResult->respDateTime, //// 'voucherinfo' => $voucherInfo, //// 'serial' => $voucher->serial, //// 'pin' => $voucher->pin, //// 'datepurchased' => $voucher->datepurchased, // 'receiptFormat' => $zapResult->receiptFormat, // 'receipt' => $zapResult->receipt, // 'smsreceipt' => $zapResult->smsreceipt, // 'user_id' => $request->user()->id, // 'voucher_list_id' => null, // 'type' => 'Tv' // ]); $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->price + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->decrement('balance', $totalAmount); $imaliUser2 = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $recarga = PurchaseVoucher::create([ // 'transaction' => $response->transaction, 'vouchername' => 'Zap-' . $request->description, 'vouchercode' => $request->code, 'vouchervalue' => $request->price, 'price' => $request->price, // 'barcode' => $voucherInfo->barcode, 'reqterminalMsgID' => $zapResult->reqterminalMsgID, 'reqterminalID' => $zapResult->reqterminalID, 'reqMsgID' => $zapResult->reqMsgID, 'respDateTime' => $zapResult->respDateTime, // 'voucherinfo' => $voucherInfo, // 'serial' => $voucher->serial, // 'pin' => $voucher->pin, // 'datepurchased' => $voucher->datepurchased, 'receiptFormat' => $zapResult->receiptFormat, 'receipt' => $zapResult->receipt, 'smsreceipt' => $zapResult->smsreceipt, 'user_id' => $request->user()->id, 'voucher_list_id' => null, 'type' => 'Tv', 'category_id' => 18, 'old_balance' => $imaliUser->balance, 'new_balance' => $imaliUser2->balance ]); TransactionHistory::create([ 'user_id' => $recarga->user_id, 'voucher_id' => $recarga->id, 'category_id' => $recarga->category_id, 'transaction_type' => 'tv' ]); $notification = array( 'icon' => 'ic_i_mali_cover', 'title' => 'i.Mali recargas', 'body' => 'Parabéns, ' . ' comprou recarga ' . $recarga->vouchername . '.' . ' i.Mali é o Futuro', 'click_action' => 'com.imali.payapp.payment_RECARGA_NOTIFICATION', 'color' => '#ffffff' ); $data = array( 'reqMsgID' => $recarga->reqMsgID, 'vouchername' => $recarga->vouchername, 'vouchercode' => (float)$recarga->vouchercode, 'data' => $recarga->created_at, // 'pin' => $recarga->pin, // 'serial' => $recarga->serial, 'price' => $recarga->price, 'vouchervalue' => $recarga->vouchervalue, 'sms' => $recarga->receipt, 'route' => 'RECARGA_NOTIFICATION', 'terminal' => 'firebase' ); $this->pushNotifification($request->user()->firebase_token, $notification, $data); $log = new Record(); $log->createLog([ 'description' => 'Transaction' . $recarga->reqMsgID . ' Nr Cliente: ' . $request->costumerNumber . 'code: ' . $request->code, 'price: ' . $request->price, 'details' => $result, 'operation' => 'Buy Zap', 'status' => 'Success', 'properties' => $recarga, 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json(['data' => $response, 'message' => 'Pacote renovado com Sucesso', 'sms' => $zapResult->smsreceipt, 'reqMsgID' => $zapResult->reqMsgID]); } else { if ($response->ZAPPaymentResult->fault->mustALR === true) { GeneralAdvice::create([ 'reqMsgID' => $response->ZAPPaymentResult->reqMsgID, 'reqterminalID' => $response->ZAPPaymentResult->reqterminalID, 'receiptFormat' => $response->ZAPPaymentResult->receiptFormat, 'respDateTime' => $response->ZAPPaymentResult->respDateTime, 'faultnumber' => $response->ZAPPaymentResult->fault->faultnumber, 'user_id' => $request->user()->id, 'type' => 'zap', 'amount' => $request->price, 'msno' => $request->code, 'description' => $request->description ]); $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->price + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->increment('captive_balance', $totalAmount); $log = new Record(); $log->createLog([ 'description' => 'Nr Cliente: ' . $request->costumerNumber . 'code: ' . $request->code, 'price: ' . $request->price, 'details' => $response->ZAPPaymentResult->fault->POR_operatorMsg, 'operation' => 'Check Contador EDM', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); } $log = new Record(); $log->createLog([ 'description' => 'Nr Cliente: ' . $request->costumerNumber . 'code: ' . $request->code, 'price: ' . $request->price, 'details' => $response->ZAPPaymentResult->fault->POR_operatorMsg, 'operation' => 'Check Contador EDM', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); if ($response->ZAPPaymentResult->fault->faultnumber == "35") { return response()->json(['message' => "Serviço de recargas indisponível"], 400); } else { return response()->json(['message' => $response->ZAPPaymentResult->fault->POR_operatorMsg], 400); } // return response()->json(['data' => $response, 'message' => $response->ZAPPaymentResult->fault->POR_operatorMsg], 400); } } } public function getWaterClient(Request $request) { // $topupUrl = 'https://topupretail.com:18880/Service.asmx?wsdl'; $msidGeneration = new TransactionGeneration(); $transaction = $msidGeneration->generateMSID(); $directRecharge = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'terminalID' => 'i.Mali', 'terminalMsgID' => '2020010700060', 'msgID' => $msidGeneration->generateMSID(), 'test' => $this->isTest, 'clientNumber' => $request->clientNumber, 'entityNumber' => $request->entityNumber, ) ); $data = json_decode(json_encode($directRecharge), true); $response = $this->client->AquaConfirmCustomer($data); $result = $response->AquaConfirmCustomerResult; if ($result->hasFault === true) { return response()->json(['message' => $result->fault->POR_operatorMsg, 'data' => $result], 400); } else { $count = 0; $name = ''; // $total = count((array)$result->aquaConfrimCustDocs->AquaConfrimCustDocs); // $total = count((array($result->aquaConfrimCustDocs->AquaConfrimCustDocs))); $conta = ContaWater::query() ->where('entityNumber', $request->entityNumber) ->where('clientNumber', $request->clientNumber) ->where('user_id', $request->user()->id) ->first(); if (is_array($result->aquaConfrimCustDocs->AquaConfrimCustDocs)) { foreach ($result->aquaConfrimCustDocs->AquaConfrimCustDocs as $wdata) { $name = $wdata->clientName; } if (!$conta) { ContaWater::create([ 'entityNumber' => $request->entityNumber, 'clientNumber' => $request->clientNumber, 'clientName' => $name, 'user_id' => $request->user()->id ]); } return response()->json(['data' => $result->aquaConfrimCustDocs->AquaConfrimCustDocs], 200); } else { if (!$conta) { ContaWater::create([ 'entityNumber' => $request->entityNumber, 'clientNumber' => $request->clientNumber, 'clientName' => $result->aquaConfrimCustDocs->AquaConfrimCustDocs->clientName, 'user_id' => $request->user()->id ]); } return response()->json(['data' => array($result->aquaConfrimCustDocs->AquaConfrimCustDocs)], 200); } } } public function payWater(Request $request) { // /VERIFICAR KYC // $topupUrl = 'https://topupretail.com:18880/Service.asmx?wsdl'; $kyc = new Kyc(); $result = $kyc->checkUserBuyWater($request); if ($result) { $log = new Record(); $log->createLog([ 'description' => 'Nr Cliente: ' . $request->clientNumber . 'Entidade: ' . $request->entityNumber, 'Montante: ' . $request->purchaseValue, 'details' => $result, 'operation' => 'Pay Water', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return $result; } else { $msidGeneration = new TransactionGeneration(); $transaction = $msidGeneration->generateMSID(); $directRecharge = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'terminalID' => 'i.Mali', 'terminalMsgID' => '2020010700060', 'msgID' => $msidGeneration->generateMSID(), 'test' => $this->isTest, 'clientNumber' => $request->clientNumber, 'entityNumber' => $request->entityNumber, 'documentTypeID' => $request->documentTypeID, 'documentYear' => $request->documentYear, 'documentNumber' => $request->documentNumber, 'clientName' => $request->clientName, 'purchaseValue' => $request->purchaseValue, 'receiptFormat' => 'POR_FORMATED_50', 'terminalLocation' => '', 'terminalChannel' => 'i.Mali', 'terminalCompanyName' => 'Paytek', 'terminalOperator' => $request->user()->name, ) ); $data = json_decode(json_encode($directRecharge), true); $response = $this->client->AquaPayment($data); if ($response->AquaPaymentResult->hasFault === false) { $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->purchaseValue + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->decrement('balance', $totalAmount); $imaliUser2 = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $water = Water::create([ 'user_id' => $request->user()->id, 'reqterminalID' => $response->AquaPaymentResult->reqterminalID, 'reqMsgID' => $response->AquaPaymentResult->reqMsgID, 'reqterminalMsgID' => $response->AquaPaymentResult->reqterminalMsgID, 'respDateTime' => $response->AquaPaymentResult->respDateTime, 'receiptFormat' => $response->AquaPaymentResult->receiptFormat, 'smsreceipt' => $response->AquaPaymentResult->smsreceipt, 'receipt' => $response->AquaPaymentResult->receipt, 'TransactionCost' => $response->AquaPaymentResult->TransactionCost, 'clientNumber' => $request->clientNumber, 'entityNumber' => $request->entityNumber, 'documentTypeID' => $request->documentTypeID, 'documentYear' => $request->documentYear, 'documentNumber' => $request->documentNumber, 'clientName' => $request->clientName, 'purchaseValue' => $request->purchaseValue, 'category_id' => 22, 'old_balance' => $imaliUser->balance, 'new_balance' => $imaliUser2->balance ]); // $sms = new SendSMS(); // $sms->sendSMSPurchaseWater($water->smsreceipt, $request->user()->phone); TransactionHistory::create([ 'user_id' => $water->user_id, 'water_id' => $water->id, 'category_id' => $water->category_id, 'transaction_type' => 'water' ]); VoucherHistory::create([ 'user_id' => $water->user_id, 'water_id' => $water->id, 'transaction_type' => 'water' ]); return response()->json(['message' => 'Transacção efectuada com Sucesso', 'sms' => $water->smsreceipt, 'reqMsgID' => $water->reqMsgID], 200); } else { if ($response->AquaPaymentResult->fault->mustALR === true) { $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->purchaseValue + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->increment('captive_balance', $totalAmount); GeneralAdvice::create([ 'reqMsgID' => $response->AquaPaymentResult->reqMsgID, 'reqterminalID' => $response->AquaPaymentResult->reqterminalID, 'receiptFormat' => $response->AquaPaymentResult->receiptFormat, 'respDateTime' => $response->AquaPaymentResult->respDateTime, 'faultnumber' => $response->AquaPaymentResult->fault->faultnumber, 'user_id' => $request->user()->id, 'type' => 'agua', 'amount' => $request->purchaseValue, 'msno' => $request->entityNumber, 'description' => 'Factura Agua' ]); } if ($response->AquaPaymentResult->fault->faultnumber == "35") { return response()->json(['message' => "Serviço de recargas indisponível"], 400); } else { return response()->json(['message' => $response->AquaPaymentResult->fault->POR_operatorMsg], 400); } } } } public function checkClientStartTimes($smartCard) { $transaction = $this->msid->generateMSID(); $directRecharge = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'terminalID' => 'i.Mali', 'terminalMsgID' => '2020010700060', 'msgID' => $transaction, 'test' => $this->isTest, 'smartCardnumber' => $smartCard ) ); $data = json_decode(json_encode($directRecharge), true); $response = $this->client->StarConfirmCustomer($data); if ($response->StarConfirmCustomerResult->hasFault == true) { // return response()->json($response->StarConfirmCustomerResult); return response()->json([ 'message' => $response->StarConfirmCustomerResult->fault->POR_operatorMsg ], 400); } else { if (is_array($response->StarConfirmCustomerResult->availProducts->StarProduct)) { return response()->json([ 'account' => $response->StarConfirmCustomerResult, 'data' => $response->StarConfirmCustomerResult->availProducts->StarProduct ]); } else { return response()->json([ 'account' => $response->StarConfirmCustomerResult, 'data' => array($response->StarConfirmCustomerResult->availProducts->StarProduct) ]); } } } public function payStartTimesPackage(Request $request) { $this->validate($request, [ 'productDesc' => 'required', 'productNumber' => 'required', 'purchaseValue' => 'required', 'smartCardnumber' => 'required' ]); $kyc = new Kyc(); $result = $kyc->checkUserBuyStartimes($request); if ($result) { $log = new Record(); $log->createLog([ 'description' => 'Nr Cliente: ' . $request->smartCardnumber . 'code: ' . $request->productNumber, 'price: ' . $request->purchaseValue, 'details' => $result, 'operation' => 'Buy StarTimes', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return $result; } else { $transaction = $this->msid->generateMSID(); $directRecharge = array( 'req' => array( 'authCred' => array( 'opName' => $this->username, 'password' => $this->password ), 'terminalID' => 'i.Mali', 'terminalMsgID' => '2020010700060', 'msgID' => $transaction, 'test' => $this->isTest, 'smartCardnumber' => $request->smartCardnumber, 'productDesc' => $request->productDesc, 'productNumber' => $request->productNumber, 'purchaseValue' => $request->purchaseValue, 'receiptFormat' => 'POR_FORMATED_50', 'terminalChannel' => 'iMali_APP', 'terminalCompanyName' => 'Paytek', 'terminalOperator' => 'iMali', 'terminalLocation' => 'Maputo' ) ); $data = json_decode(json_encode($directRecharge), true); $response = $this->client->StarPayment($data); if ($response->StarPaymentResult->hasFault == false) { $result = $response->StarPaymentResult; $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->purchaseValue + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->decrement('balance', $totalAmount); $imaliUser2 = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $recarga = PurchaseVoucher::create([ 'transaction' => $result->transactionId, 'vouchername' => 'StarTimes-' . $request->productDesc, 'vouchercode' => $request->productNumber, 'vouchervalue' => $request->purchaseValue, 'price' => $request->purchaseValue, 'datepurchased' => $result->respDateTime, 'reqterminalMsgID' => $result->reqterminalMsgID, 'reqterminalID' => $result->reqterminalID, 'reqMsgID' => $result->reqMsgID, 'respDateTime' => $result->respDateTime, 'receiptFormat' => $result->receiptFormat, 'receipt' => $result->receipt, 'smsreceipt' => $result->smsreceipt, 'user_id' => $request->user()->id, 'voucher_list_id' => null, 'type' => 'Tv', 'smartCard' => $request->smartCardnumber, 'category_id' => 18, 'old_balance' => $imaliUser->balance, 'new_balance' => $imaliUser2->balance ]); TransactionHistory::create([ 'user_id' => $recarga->user_id, 'voucher_id' => $recarga->id, 'category_id' => $recarga->category_id, 'transaction_type' => 'tv' ]); VoucherHistory::create([ 'user_id' => $recarga->user_id, 'voucher_id' => $recarga->id, 'transaction_type' => 'tv' ]); $log = new Record(); $log->createLog([ 'description' => 'Transaction' . $recarga->reqMsgID . ' Nr Cliente: ' . $request->smartCardNumber . 'code: ' . $request->productNumber, 'price: ' . $request->purchaseValue, 'details' => "Pacote Activado Com Sucesso", 'operation' => 'Buy StarTimes', 'status' => 'Success', 'properties' => $recarga, 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); $notification = array( 'icon' => 'ic_i_mali_cover', 'title' => 'i.Mali recargas', 'body' => 'Parabéns, ' . ' comprou recarga ' . $recarga->vouchername . '.' . ' i.Mali é o Futuro', 'click_action' => 'com.imali.payapp.payment_RECARGA_NOTIFICATION', 'color' => '#ffffff' ); $data = array( 'reqMsgID' => $recarga->reqMsgID, 'vouchername' => $recarga->vouchername, 'vouchercode' => (float)$recarga->vouchercode, 'data' => $recarga->created_at, 'price' => $recarga->price, 'vouchervalue' => $recarga->vouchervalue, 'sms' => $recarga->receipt, 'route' => 'RECARGA_NOTIFICATION', 'terminal' => 'firebase' ); $this->pushNotifification($request->user()->firebase_token, $notification, $data); return response()->json([ 'payment' => $response, 'message' => 'Pacote activado com Sucesso', 'reqMsgID' => $recarga->reqMsgID, 'sms' => $recarga->smsreceipt ], 200); } else { if ($response->StarPaymentResult->fault->mustALR == true) { $imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $totalAmount = $request->amount + $imaliUser->taxa; DB::table('imali_accounts')->where('user_id', $request->user()->id)->increment('captive_balance', $totalAmount); $g = GeneralAdvice::create([ 'reqMsgID' => $response->StarPaymentResult->reqMsgID, 'reqterminalID' => $response->StarPaymentResult->reqterminalID, 'receiptFormat' => $response->StarPaymentResult->receiptFormat, 'respDateTime' => $response->StarPaymentResult->respDateTime, 'faultNumber' => $response->StarPaymentResult->fault->faultnumber, 'message' => $response->StarPaymentResult->fault->POR_operatorMsg, 'user_id' => $request->user()->id, 'type' => 'direct', 'amount' => $request->purchaseValue, 'msno' => $request->productNumber, 'description' => $request->productDesc ]); $log = new Record(); $log->createLog([ 'description' => 'Transaction ' . $g->reqMsgID . ' Voucher: ' . $request->productDesc, 'details' => $response->StarPaymentResult->fault->POR_operatorMsg, 'operation' => 'Buy StarTimes', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); } else { return response()->json([ // 'payment' => $response, 'message' => $response->StarPaymentResult->fault->POR_operatorMsg ], 400); } } } } public function pushNotifification($token, $notification = array(), $data = array()) { $apiKey = 'AAAA8zVzEPQ:APA91bHl_DXB6UGb_6gZlmFnaLTQoANtX_OBjvl3nOy2bSlnFhxedvk6EhGj7cZoIvmlbKeCnqGxXbuyMH_rEPuhRXvuitXzo6Pfl2TMXLar1PlifXqEhYq6tS55UMrY2Kffzj-P_UH-'; $fields = array('to' => $token, 'notification' => $notification, 'data' => $data); $headers = array('Authorization: key=' . $apiKey, 'Content-Type: application/json'); $url = 'https://fcm.googleapis.com/fcm/send'; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($fields)); $result = curl_exec($curl); curl_close($curl); return json_decode($result, true); } //? Remover contador de energia public function destroy($id) { // recuperando o contador try { $quota = Contador::findOrFail($id); } catch (\Exception $e) { return response()->json(['message' => 'O contador selecionado não existe na Base de Dados!'], 500); } // excluindo o contador try { $quota->delete(); return response()->json(['message' => 'Contador removido com sucesso.'], 200); } catch (\Exception $e) { return response()->json(['message' => 'Erro ao excluir o contador, possivelmente encontra-se relacionado com outros registos'], 500); } } }