<?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;
class TopUpController extends Controller
{
protected $username;
protected $password;
protected $topUpUrl;
protected $terminalChannel;
protected $terminalCompanyName;
protected $terminalCompanyOprator;
protected $terminalCityName;
protected $msid;
protected $client;
protected SmsManager $smsManager;
public function __construct()
{
// ini_set('soap.wsdl_cache_enabled',0);
// ini_set('soap.wsdl_cache_ttl',0);
// TESTE
// 'opName' => 'TEST_PAYTEK',
// 'password' => 'TESTpassPAYtek'
// $this->username = "TEST_PAYTEK";
// $this->password = "TESTpassPAYtek";
// $this->topUpUrl = 'https://topupretail.com:18880/Service.asmx?wsdl';
//// PRODUCTION
$this->username = "PAYTEK_PROD";
$this->password = "fs.S}nf4:IGXT|R";
$this->topUpUrl = 'https://topupretail.com:18873/Service.asmx?wsdl';
$this->terminalChannel = "IMALI APP";
$this->terminalCompanyName = "Paytek";
$this->terminalCompanyOprator = "IMALI_001";
$this->terminalCityName = "Maputo Cidade";
// 'cache_wsdl' => 0,
// 'trace' => 1,
$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'
)
)));
$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' => false,
'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);
$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
]);
$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);
// $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' => (double)$recarga->vouchercode,
'data' => $recarga->created_at,
'pin' => $recarga->pin,
'serial' => $recarga->serial,
'price' => $recarga->vouchervalue,
'vouchervalue' => $recarga->vouchervalue,
'sms' => $recarga->receipt,
'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 {
$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->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 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' => false,
'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);
$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
]);
$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);
// $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' => (double)$recarga->vouchercode,
'data' => $recarga->created_at,
'pin' => $recarga->pin,
'serial' => $recarga->serial,
'price' => $recarga->vouchervalue,
'vouchervalue' => $recarga->vouchervalue,
'sms' => $recarga->receipt,
'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' => false,
// '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' => false,
'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);
$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
]);
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);
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;
}
}
}
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' => false,
'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)
{
$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' => false,
)
);
$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 {
$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
]);
$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);
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' => false,
'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 {
$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
]);
$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);
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' => false,
)
);
$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 {
$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
]);
$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);
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' => false,
)
);
$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 {
$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
]);
$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);
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' => false,
'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();
$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
]);
// $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' => false,
)
);
$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 {
$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
]);
$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);
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' => false,
)
);
$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], 400);
}
}
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' => false,
)
);
$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' => false,
'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' => true,
'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' => true,
'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' => true,
'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' => true,
'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' => false,
'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)
{
$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' => false,
'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
$this->imaliUser = ImaliAccount::query()->where('user_id', $request->user()->id)->first();
$totalAmount = $request->price + $this->imaliUser->taxa;
DB::table('imali_accounts')->where('user_id', $request->user()->id)->decrement('balance', $totalAmount);
$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
]);
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' => (double)$recarga->vouchercode,
'data' => $recarga->created_at,
'price' => $recarga->price,
'vouchervalue' => $recarga->vouchervalue,
'sms' => $recarga->receipt,
'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' => true,
// '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' => true,
// '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' => true,
// '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' => true,
// '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' => true,
//// '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' => true,
//// '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]);
////
//// }
//
// }
public function buyZapPacote(Request $request)
{
$kyc = new Kyc();
$result = $kyc->checkUserBuyZap($request);
if ($result) {
$log = new Record();
$log->createLog([
'description' => 'Nr Cliente: ' . $request->customerNumber . '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' => false,
'customerNumber' => $request->customerNumber,
'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);
$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
]);
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' => (double)$recarga->vouchercode,
'data' => $recarga->created_at,
// 'pin' => $recarga->pin,
// 'serial' => $recarga->serial,
'price' => $recarga->price,
'vouchervalue' => $recarga->vouchervalue,
'sms' => $recarga->receipt,
'terminal' => 'firebase'
);
$this->pushNotifification($request->user()->firebase_token, $notification, $data);
$log = new Record();
$log->createLog([
'description' => 'Transaction' . $recarga->reqMsgID . ' Nr Cliente: ' . $request->customerNumber . '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->customerNumber . '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->customerNumber . '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' => false,
'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' => false,
'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);
$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
]);
// $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' => false,
'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' => false,
'smartCardnumber' => '01012301234',
'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);
$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
]);
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' => (double)$recarga->vouchercode,
'data' => $recarga->created_at,
'price' => $recarga->price,
'vouchervalue' => $recarga->vouchervalue,
'sms' => $recarga->receipt,
'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);
}
}