+ Add iLink agent depot transactions v1 ( Cash vers wallet ilink and Cash vers une carte visa )
This commit is contained in:
parent
9fe2fcdcf0
commit
12dc918736
|
@ -1,18 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
class ExampleController extends Controller
|
||||
{
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
//
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Traits\ApiResponser;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class HelperController extends Controller
|
||||
{
|
||||
use ApiResponser;
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
public function countries()
|
||||
{
|
||||
$countries = DB::select('SELECT id , name FROM countries');
|
||||
return $this->successResponse($countries);
|
||||
}
|
||||
}
|
|
@ -110,6 +110,8 @@ class TransactionController extends Controller
|
|||
$transaction->id_wallet_hyp = $walletHyperviseur->id;
|
||||
$transaction->commission_hyp = $hyperviseurCommission;
|
||||
$transaction->commission_ag = $agentCommission;
|
||||
}else{
|
||||
return $this->errorResponse(trans('errors.visa_api_failed'),Response::HTTP_INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
|
||||
// }else{
|
||||
|
@ -165,6 +167,8 @@ class TransactionController extends Controller
|
|||
$transaction->id_wallet_hyp = $walletHyperviseur->id;
|
||||
$transaction->commission_hyp = $hyperviseurCommission;
|
||||
$transaction->commission_ag = $agentCommission;
|
||||
}else{
|
||||
return $this->errorResponse(trans('errors.visa_api_failed'),Response::HTTP_INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -175,7 +179,7 @@ class TransactionController extends Controller
|
|||
$walletSuperviseur->save();
|
||||
$walletHyperviseur->save();
|
||||
$transaction->save();
|
||||
return $this->successResponse($walletAgent);
|
||||
return $this->successResponse(trans('messages.successful_transaction'));
|
||||
}
|
||||
|
||||
public function lastTransactions($id_wallet)
|
||||
|
|
|
@ -6,6 +6,7 @@ namespace App\Http\Controllers;
|
|||
use App\Models\Identification;
|
||||
use App\Models\User;
|
||||
use App\Traits\ApiResponser;
|
||||
use App\Traits\Helper;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Facades\Date;
|
||||
|
@ -14,7 +15,7 @@ use Illuminate\Support\Facades\Mail;
|
|||
class UserController extends Controller
|
||||
{
|
||||
use ApiResponser;
|
||||
|
||||
use Helper;
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
|
@ -181,13 +182,4 @@ class UserController extends Controller
|
|||
return $destination;
|
||||
}
|
||||
|
||||
private function sendMail($email , $title , $messageText){
|
||||
|
||||
$recipients = [$email];
|
||||
Mail::mailer('smtp')->raw($messageText, function ($message) use ($recipients,$title) {
|
||||
$message->subject($title);
|
||||
$message->to($recipients);
|
||||
});
|
||||
// return $this->successResponse("mail envoye");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,334 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\AgentPlus;
|
||||
use App\Models\CodeGenerer;
|
||||
use App\Models\ConfigWallet;
|
||||
use App\Models\NetworksAgent;
|
||||
use App\Models\TypeIlinkTransaction;
|
||||
use App\Models\PaliersConfigWallet;
|
||||
use App\Models\User;
|
||||
use App\Models\Wallet;
|
||||
use App\Models\WalletAgent;
|
||||
use App\Models\WalletIlinkTransaction;
|
||||
use App\Models\WalletsUser;
|
||||
use App\Models\WalletTransaction;
|
||||
use App\Traits\ApiResponser;
|
||||
use App\Traits\Helper;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use function GuzzleHttp\Promise\all;
|
||||
|
||||
class iLinkTransactionController extends Controller
|
||||
{
|
||||
use ApiResponser;
|
||||
use Helper;
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
public function add(Request $request)
|
||||
{
|
||||
$transaction = new WalletIlinkTransaction();
|
||||
$this->validate($request, [
|
||||
'type' => 'required|integer|min:0|not_in:0',
|
||||
'id_wallet_agent' => 'integer|min:0|not_in:0',
|
||||
'id_wallet_user' => 'integer|min:0|not_in:0',
|
||||
]);
|
||||
$type = TypeIlinkTransaction::findOrFail($request->type);
|
||||
|
||||
$walletAgent = Wallet::findOrFail($request->get('id_wallet_agent'));
|
||||
$network_agent = NetworksAgent::findOrFail($walletAgent->id_networkAgent);
|
||||
// Configuratrion du wallet
|
||||
$config = ConfigWallet::where('id_network', $network_agent->network_id)->firstOrFail();
|
||||
|
||||
// Recuperation des wallets hyperviseur et superviseur
|
||||
$codeGenerer = CodeGenerer::findOrFail($network_agent->codeGenerer_id);
|
||||
$superviseur = AgentPlus::where('code_membre', $codeGenerer->code_parrain)->firstOrFail();
|
||||
$hyperviseur = AgentPlus::where('code_membre', $superviseur->code_parrain)->firstOrFail();
|
||||
|
||||
$wallet_agent_sup = WalletAgent::where('agent_id', $superviseur->id)->firstOrFail();
|
||||
$wallet_agent_hyp = WalletAgent::where('agent_id', $hyperviseur->id)->firstOrFail();
|
||||
$walletSuperviseur = Wallet::findOrFail($wallet_agent_sup->wallet_id);
|
||||
$walletHyperviseur = Wallet::findOrFail($wallet_agent_hyp->wallet_id);
|
||||
|
||||
$taxesNationales = array_values(array_filter($config->taxes->all(), function ($tax) {
|
||||
return $tax->destination == 'national';
|
||||
}));
|
||||
|
||||
$taxesInternationales = array_values(array_filter($config->taxes->all(), function ($tax) {
|
||||
return $tax->destination == 'international';
|
||||
}));
|
||||
|
||||
|
||||
$plr_user_wallet_wallet = $this->getPaliers($config->paliers_config_wallets->all(), "user_wallet_wallet_international");
|
||||
$plr_user_wallet_cash = $this->getPaliers($config->paliers_config_wallets->all(), "user_wallet_cash_international");
|
||||
$plr_agent_depot_wallet_ilink = $this->getPaliers($config->paliers_config_wallets->all(), "agent_depot_wallet_ilink_international");
|
||||
$plr_agent_depot_autre_wallet = $this->getPaliers($config->paliers_config_wallets->all(), "agent_depot_autre_wallet_international");
|
||||
$plr_agent_cash_cash = $this->getPaliers($config->paliers_config_wallets->all(), "agent_cash_cash_international");
|
||||
|
||||
$plr_user_wallet_wallet_national = $this->getPaliers($config->paliers_config_wallets->all(), "user_wallet_wallet_national");
|
||||
$plr_user_wallet_cash_national = $this->getPaliers($config->paliers_config_wallets->all(), "user_wallet_cash_national");
|
||||
$plr_agent_depot_wallet_ilink_national = $this->getPaliers($config->paliers_config_wallets->all(), "agent_depot_wallet_ilink_national");
|
||||
$plr_agent_depot_autre_wallet_national = $this->getPaliers($config->paliers_config_wallets->all(), "agent_depot_autre_wallet_national");
|
||||
$plr_agent_cash_cash_national = $this->getPaliers($config->paliers_config_wallets->all(), "agent_cash_cash_national");
|
||||
|
||||
|
||||
$data = $request->all();
|
||||
if (isset($request->cvv) && !is_numeric($request->cvv))
|
||||
return $this->errorResponse('errors.invalid_cvv');
|
||||
|
||||
$transaction->fill($data);
|
||||
// Client API
|
||||
$client = new \GuzzleHttp\Client([
|
||||
'base_uri' => env('VISA_API_URL'),
|
||||
'auth' => [env('VISA_API_USERNAME'), env('VISA_API_PASSWORD')]
|
||||
]);
|
||||
|
||||
switch ($type->id) {
|
||||
case 1: //User - Envoi wallet à wallet
|
||||
|
||||
break;
|
||||
case 2: //User - Envoi de wallet à carte
|
||||
|
||||
break;
|
||||
case 3: //User - Envoi de wallet à cash
|
||||
|
||||
break;
|
||||
case 4: //User - Envoi de wallet à banque
|
||||
// Non disponible
|
||||
//Pas de taxes
|
||||
break;
|
||||
// case 5: //User - Envoi de carte à wallet
|
||||
// $frais =$montant * $config->taux_com_user_carte_wallet / 100;
|
||||
//// $taxe = ($init_country != $final_country) ? $this->calculateTax($taxesInternationales , $frais) : $this->calculateTax($taxesNationales ,$frais);
|
||||
// break;
|
||||
// case 6: //User - Envoi de carte à cash
|
||||
// $frais =$montant * $config->taux_com_user_carte_cash / 100;
|
||||
//// $taxe = ($init_country != $final_country) ? $this->calculateTax($taxesInternationales , $frais) : $this->calculateTax($taxesNationales ,$frais);
|
||||
// break;
|
||||
case 9: // User - Retrait de wallet en cash
|
||||
|
||||
break;
|
||||
case 10: //User - Retrait de carte vers wallet
|
||||
|
||||
break;
|
||||
case 11: // User - Retrait de carte vers cash
|
||||
|
||||
break;
|
||||
case 12: // Agent - Retrait en cash
|
||||
|
||||
break;
|
||||
case 13: // Agent - Retrait de la carte vers cash
|
||||
|
||||
break;
|
||||
case 14: // Agent - Envoi de cash vers wallet iLink
|
||||
$this->validate($request, $transaction->first_rules());
|
||||
$user = User::where('user_code', $request->user_code)->firstOrFail();
|
||||
if($this->checkPassword($request->password,$user->encrypted_password,$user->salt)){
|
||||
$walletUser = WalletsUser::where('idUser', $user->id)->firstOrFail();
|
||||
|
||||
$frais = ($request->init_country != $request->final_country) ? $this->calculateFees($plr_agent_depot_wallet_ilink, $request->montant) : $this->calculateFees($plr_agent_depot_wallet_ilink_national, $request->montant);
|
||||
$taxe = ($request->init_country != $request->final_country) ? $this->calculateTax($taxesInternationales, $frais) : $this->calculateTax($taxesNationales, $frais);
|
||||
$montantDepot = $request->montant - $frais - $taxe;
|
||||
$walletUser->balance += $montantDepot;
|
||||
$commisionAgent = floatval($frais * $config->taux_com_ag_envoi_cash / 100);
|
||||
$commisionSuper = floatval($frais * $config->taux_com_sup_envoi_cash / 100);
|
||||
$commisionHyper = floatval($frais * $config->taux_com_ag_envoi_cash / 100);
|
||||
$walletAgent->balance_com += $commisionAgent;
|
||||
$transaction->commission_ag = $commisionAgent;
|
||||
$walletSuperviseur->balance_com += $commisionSuper;
|
||||
$transaction->commission_sup = $commisionSuper;
|
||||
$walletHyperviseur->balance_com += $commisionHyper;
|
||||
$transaction->commission_hyp = $commisionHyper;
|
||||
$transaction->taxe = $taxe;
|
||||
$transaction->frais = $frais;
|
||||
$transaction->date = new \DateTime();
|
||||
$walletUser->save();
|
||||
$walletAgent->save();
|
||||
$walletSuperviseur->save();
|
||||
$walletHyperviseur->save();
|
||||
$transaction->id_wallet_user = $walletUser->id;
|
||||
$transaction->id_wallet_ag = $walletAgent->id;
|
||||
$transaction->id_wallet_sup = $walletSuperviseur->id;
|
||||
$transaction->id_wallet_hyp = $walletHyperviseur->id;
|
||||
$transaction->save();
|
||||
$this->sendMail($user->email, trans('messages.successful_transaction'), trans('messages.successful_deposit_ilink',['montant'=> $montantDepot]));
|
||||
return $this->successResponse(trans('messages.successful_transaction'));
|
||||
}else{
|
||||
return $this->errorResponse(trans('messages.incorrect_user_password'));
|
||||
}
|
||||
break;
|
||||
case 15: // Agent - Envoi de cash vers autre wallet
|
||||
|
||||
break;
|
||||
case 16: // Agent - Envoi de cash vers une carte visa
|
||||
$this->validate($request, $transaction->card_rules());
|
||||
$expiration_date = \DateTime::createFromFormat('m/y', $request->expiration_date);
|
||||
if (!$expiration_date)
|
||||
$expiration_date = new \DateTime();
|
||||
$transaction->expiration_date = $expiration_date;
|
||||
|
||||
$frais = $request->montant * $config->taux_com_wallet_ag_envoi_cash_carte / 100;
|
||||
$montantDepot = $transaction->montant - $frais;
|
||||
|
||||
$body['amount'] = $montantDepot;
|
||||
$body['card_number'] = $request->numero_carte;
|
||||
$body['cvv'] = $request->cvv;
|
||||
$body['expiry_date'] = $expiration_date->format('Y-m');
|
||||
|
||||
$response = $client->post('fund-transfer-api/v1/transaction/push', ['json' => $body]);
|
||||
$code = $response->getStatusCode();
|
||||
|
||||
if ($code == 200) {
|
||||
$banqueCommission = floatval($frais * $config->taux_com_banque_depot_cash_carte / 100);
|
||||
$transaction->commission_banque = $banqueCommission;
|
||||
// 2---> Emmètre via API sécurisé SSL une requête de débit de notre
|
||||
//compte marchand du (Part de la banque partenaire en %
|
||||
//pour le dépôtqui s’applique sur les frais minimum) et créditer
|
||||
//le compte des opérations défini avec notre banque
|
||||
//partenaire
|
||||
|
||||
$walletAgent->balance_princ -= $transaction->montant;
|
||||
|
||||
$agentCommission = floatval($frais * $config->taux_com_ag_depot_cash_carte / 100);
|
||||
$superviseurCommission = floatval($frais * $config->taux_com_sup_depot_cash_carte / 100);
|
||||
$hyperviseurCommission = floatval($frais * $config->taux_com_hyp_depot_cash_carte / 100);
|
||||
|
||||
$walletAgent->balance_com += $agentCommission;
|
||||
$transaction->commission_ag = $agentCommission;
|
||||
$walletSuperviseur->balance_com += $superviseurCommission;
|
||||
$transaction->commission_sup = $superviseurCommission;
|
||||
$walletHyperviseur->balance_com += $hyperviseurCommission;
|
||||
$transaction->commission_hyp = $hyperviseurCommission;
|
||||
$transaction->id_wallet_ag = $walletAgent->id;
|
||||
$transaction->id_wallet_sup = $walletSuperviseur->id;
|
||||
$transaction->id_wallet_hyp = $walletHyperviseur->id;
|
||||
$transaction->frais = $frais;
|
||||
$transaction->date = new \DateTime();
|
||||
$transaction->save();
|
||||
return $this->successResponse(trans('messages.successful_transaction'));
|
||||
|
||||
} else {
|
||||
return $this->errorResponse(trans('errors.visa_api_failed'), Response::HTTP_INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
break;
|
||||
case 17: // Agent - Envoi de cash vers cash
|
||||
|
||||
break;
|
||||
case 18: // Agent - Envoi de cash vers banque
|
||||
// Indisponible
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function lastTransactions($id_wallet)
|
||||
{
|
||||
$transactions = WalletTransaction::where('id_wallet', $id_wallet)->orderBy('date', 'desc')->limit(10)
|
||||
->get(['type', DB::raw('\'wallet\' as source'), 'montant', 'numCarte AS destinataire', 'date', 'id']);
|
||||
return $this->successResponse($transactions);
|
||||
}
|
||||
|
||||
public function calculateCommission(Request $request)
|
||||
{
|
||||
$rules = [
|
||||
'id_wallet' => 'required|integer|min:1',
|
||||
'montant' => 'required|numeric|min:0|not_in:0',
|
||||
'type' => 'required|in:credit,debit',
|
||||
];
|
||||
|
||||
$this->validate($request, $rules);
|
||||
|
||||
$walletAgent = Wallet::findOrFail($request->get('id_wallet'));
|
||||
$network_agent = NetworksAgent::findOrFail($walletAgent->id_networkAgent);
|
||||
// Configuratrion du wallet
|
||||
$config = ConfigWallet::where('id_network', $network_agent->network_id)->firstOrFail();
|
||||
$commission = null;
|
||||
if ($request->type == 'credit') {
|
||||
//Depot
|
||||
$commission = ($request->montant * $config->taux_com_client_depot / 100) + $config->frais_min_banque_depot;
|
||||
$data['montant_calcule'] = $request->montant - $commission;
|
||||
} elseif ($request->type == 'debit') {
|
||||
// Retrait
|
||||
$commission = $request->montant * $config->taux_com_client_retrait / 100;
|
||||
$data['montant_calcule'] = $request->montant + $commission;
|
||||
}
|
||||
|
||||
$data['commission'] = $commission;
|
||||
return $this->successResponse($data);
|
||||
}
|
||||
|
||||
|
||||
private function getPaliers(array $paliers, $type)
|
||||
{
|
||||
return array_values(array_filter($paliers, function ($palier) use ($type) {
|
||||
return $palier->type == $type;
|
||||
}));
|
||||
}
|
||||
|
||||
//Calcul des frais internationaux
|
||||
private function calculateFees(array $paliers, $montant)
|
||||
{
|
||||
$size = sizeof($paliers);
|
||||
|
||||
$min = $paliers[0]->min;
|
||||
$max = $size > 0 ? $paliers[$size - 1]->max : 0;
|
||||
$palier = null;
|
||||
foreach ($paliers as $p) {
|
||||
if ($montant >= $p->min && $montant <= $p->max) {
|
||||
$palier = $p;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($palier) {
|
||||
return (($palier->min + $palier->max) / 2 * $palier->taux / 100);
|
||||
} else {
|
||||
if ($montant < $min)
|
||||
return $min * $paliers[0]->taux / 100;
|
||||
else if ($montant > $max)
|
||||
return $max * $paliers[$size - 1]->taux / 100;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Calcul des taxes
|
||||
private function calculateTax(array $taxes, $frais)
|
||||
{
|
||||
$sommeTaux = 0;
|
||||
$sommeFixe = 0;
|
||||
foreach ($taxes as $tax) {
|
||||
if ($tax->type == '%')
|
||||
$sommeTaux += $tax->valeur;
|
||||
|
||||
if ($tax->type == 'fixe')
|
||||
$sommeFixe += $tax->valeur;
|
||||
}
|
||||
return ($frais * $sommeTaux / 100) + $sommeFixe;
|
||||
}
|
||||
|
||||
private function random_string()
|
||||
{
|
||||
$character_set_array = array();
|
||||
$character_set_array[] = array('count' => 12, 'characters' => 'abcdefghjkmnpqrstuvwxyz');
|
||||
$character_set_array[] = array('count' => 4, 'characters' => '23456789');
|
||||
$temp_array = array();
|
||||
foreach ($character_set_array as $character_set) {
|
||||
for ($i = 0; $i < $character_set['count']; $i++) {
|
||||
$temp_array[] = $character_set['characters'][rand(0, strlen($character_set['characters']) - 1)];
|
||||
}
|
||||
}
|
||||
shuffle($temp_array);
|
||||
return implode('', $temp_array);
|
||||
}
|
||||
}
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
|
@ -16,14 +17,39 @@ use Illuminate\Database\Eloquent\Model;
|
|||
* @property float $taux_com_client_depot
|
||||
* @property float $taux_com_ag_retrait
|
||||
* @property float $taux_com_ag_depot
|
||||
* @property float $taux_com_sup_retrait
|
||||
* @property float $taux_com_sup_depot
|
||||
* @property float $taux_com_sup_retrait
|
||||
* @property float $part_banque_retrait
|
||||
* @property float $part_banque_depot
|
||||
* @property float $frais_min_banque_depot
|
||||
* @property int $id_network
|
||||
* @property float $taux_com_user_wallet_carte
|
||||
* @property float $taux_com_user_carte_wallet
|
||||
* @property float $taux_com_user_carte_cash
|
||||
* @property float $taux_com_wallet_ag_envoi_cash_carte
|
||||
* @property float $taux_com_wallet_ag_carte_cash
|
||||
* @property float $taux_com_wallet_ag_depot_carte
|
||||
* @property float $taux_com_ag_envoi_cash
|
||||
* @property float $taux_com_sup_envoi_cash
|
||||
* @property float $taux_com_hyp_envoi_cash
|
||||
* @property float $taux_com_ag_retrait_cash
|
||||
* @property float $taux_com_sup_retrait_cash
|
||||
* @property float $taux_com_hyp_retrait_cash
|
||||
* @property float $taux_com_ag_depot_cash_carte
|
||||
* @property float $taux_com_sup_depot_cash_carte
|
||||
* @property float $taux_com_hyp_depot_cash_carte
|
||||
* @property float $taux_com_banque_depot_cash_carte
|
||||
* @property float $taux_com_ag_retrait_carte_cash
|
||||
* @property float $taux_com_sup_retrait_carte_cash
|
||||
* @property float $taux_com_hyp_retrait_carte_cash
|
||||
* @property float $taux_com_banque_retrait_carte_cash
|
||||
* @property float $taux_com_hyp_retrait_carte_cash_ilink
|
||||
* @property float $taux_com_banque_retrait_carte_cash_ilink
|
||||
* @property string $type
|
||||
*
|
||||
* @property Network $network
|
||||
* @property Collection|PaliersConfigWallet[] $paliers_config_wallets
|
||||
* @property Collection|Tax[] $taxes
|
||||
*
|
||||
* @package App\Models
|
||||
*/
|
||||
|
@ -37,24 +63,84 @@ class ConfigWallet extends Model
|
|||
'taux_com_client_depot' => 'float',
|
||||
'taux_com_ag_retrait' => 'float',
|
||||
'taux_com_ag_depot' => 'float',
|
||||
'taux_com_sup_retrait' => 'float',
|
||||
'taux_com_sup_depot' => 'float',
|
||||
'taux_com_sup_retrait' => 'float',
|
||||
'part_banque_retrait' => 'float',
|
||||
'part_banque_depot' => 'float',
|
||||
'frais_min_banque_depot' => 'float',
|
||||
'id_network' => 'int'
|
||||
'id_network' => 'int',
|
||||
'taux_com_user_wallet_carte' => 'float',
|
||||
'taux_com_user_carte_wallet' => 'float',
|
||||
'taux_com_user_carte_cash' => 'float',
|
||||
'taux_com_wallet_ag_envoi_cash_carte' => 'float',
|
||||
'taux_com_wallet_ag_carte_cash' => 'float',
|
||||
'taux_com_wallet_ag_depot_carte' => 'float',
|
||||
'taux_com_ag_envoi_cash' => 'float',
|
||||
'taux_com_sup_envoi_cash' => 'float',
|
||||
'taux_com_hyp_envoi_cash' => 'float',
|
||||
'taux_com_ag_retrait_cash' => 'float',
|
||||
'taux_com_sup_retrait_cash' => 'float',
|
||||
'taux_com_hyp_retrait_cash' => 'float',
|
||||
'taux_com_ag_depot_cash_carte' => 'float',
|
||||
'taux_com_sup_depot_cash_carte' => 'float',
|
||||
'taux_com_hyp_depot_cash_carte' => 'float',
|
||||
'taux_com_banque_depot_cash_carte' => 'float',
|
||||
'taux_com_ag_retrait_carte_cash' => 'float',
|
||||
'taux_com_sup_retrait_carte_cash' => 'float',
|
||||
'taux_com_hyp_retrait_carte_cash' => 'float',
|
||||
'taux_com_banque_retrait_carte_cash' => 'float',
|
||||
'taux_com_hyp_retrait_carte_cash_ilink' => 'float',
|
||||
'taux_com_banque_retrait_carte_cash_ilink' => 'float'
|
||||
];
|
||||
|
||||
protected $fillable = [
|
||||
'taux_com_retrait',
|
||||
'taux_com_client_retrait',
|
||||
'taux_com_client_depot',
|
||||
'taux_com_ag_retrait',
|
||||
'com_depot',
|
||||
'taux_com_ag_depot',
|
||||
'id_network'
|
||||
'taux_com_sup_depot',
|
||||
'taux_com_sup_retrait',
|
||||
'part_banque_retrait',
|
||||
'part_banque_depot',
|
||||
'frais_min_banque_depot',
|
||||
'id_network',
|
||||
'taux_com_user_wallet_carte',
|
||||
'taux_com_user_carte_wallet',
|
||||
'taux_com_user_carte_cash',
|
||||
'taux_com_wallet_ag_envoi_cash_carte',
|
||||
'taux_com_wallet_ag_carte_cash',
|
||||
'taux_com_wallet_ag_depot_carte',
|
||||
'taux_com_ag_envoi_cash',
|
||||
'taux_com_sup_envoi_cash',
|
||||
'taux_com_hyp_envoi_cash',
|
||||
'taux_com_ag_retrait_cash',
|
||||
'taux_com_sup_retrait_cash',
|
||||
'taux_com_hyp_retrait_cash',
|
||||
'taux_com_ag_depot_cash_carte',
|
||||
'taux_com_sup_depot_cash_carte',
|
||||
'taux_com_hyp_depot_cash_carte',
|
||||
'taux_com_banque_depot_cash_carte',
|
||||
'taux_com_ag_retrait_carte_cash',
|
||||
'taux_com_sup_retrait_carte_cash',
|
||||
'taux_com_hyp_retrait_carte_cash',
|
||||
'taux_com_banque_retrait_carte_cash',
|
||||
'taux_com_hyp_retrait_carte_cash_ilink',
|
||||
'taux_com_banque_retrait_carte_cash_ilink',
|
||||
'type'
|
||||
];
|
||||
|
||||
public function network()
|
||||
{
|
||||
return $this->belongsTo(Network::class, 'id_network');
|
||||
}
|
||||
|
||||
public function paliers_config_wallets()
|
||||
{
|
||||
return $this->hasMany(PaliersConfigWallet::class, 'idConfig');
|
||||
}
|
||||
|
||||
public function taxes()
|
||||
{
|
||||
return $this->hasMany(Tax::class, 'idConfig');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Created by Reliese Model.
|
||||
*/
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
* Class PaliersConfigWallet
|
||||
*
|
||||
* @property int $id
|
||||
* @property string $type
|
||||
* @property float $min
|
||||
* @property float $max
|
||||
* @property float $taux
|
||||
* @property int $idConfig
|
||||
*
|
||||
* @property ConfigWallet $config_wallet
|
||||
*
|
||||
* @package App\Models
|
||||
*/
|
||||
class PaliersConfigWallet extends Model
|
||||
{
|
||||
protected $table = 'paliersConfigWallet';
|
||||
public $timestamps = false;
|
||||
|
||||
protected $casts = [
|
||||
'min' => 'float',
|
||||
'max' => 'float',
|
||||
'taux' => 'float',
|
||||
'idConfig' => 'int'
|
||||
];
|
||||
|
||||
protected $fillable = [
|
||||
'type',
|
||||
'min',
|
||||
'max',
|
||||
'taux',
|
||||
'idConfig'
|
||||
];
|
||||
|
||||
public function config_wallet()
|
||||
{
|
||||
return $this->belongsTo(ConfigWallet::class, 'idConfig');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Created by Reliese Model.
|
||||
*/
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
* Class Tax
|
||||
*
|
||||
* @property int $id
|
||||
* @property string $nom
|
||||
* @property string $type
|
||||
* @property float $valeur
|
||||
* @property string $destination
|
||||
* @property int $idConfig
|
||||
*
|
||||
* @property ConfigWallet $config_wallet
|
||||
*
|
||||
* @package App\Models
|
||||
*/
|
||||
class Tax extends Model
|
||||
{
|
||||
protected $table = 'taxes';
|
||||
public $timestamps = false;
|
||||
|
||||
protected $casts = [
|
||||
'valeur' => 'float',
|
||||
'idConfig' => 'int'
|
||||
];
|
||||
|
||||
protected $fillable = [
|
||||
'nom',
|
||||
'type',
|
||||
'valeur',
|
||||
'destination',
|
||||
'idConfig'
|
||||
];
|
||||
|
||||
public function config_wallet()
|
||||
{
|
||||
return $this->belongsTo(ConfigWallet::class, 'idConfig');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Created by Reliese Model.
|
||||
*/
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
* Class TypeIlinkTransaction
|
||||
*
|
||||
* @property int $id
|
||||
* @property string $acteur
|
||||
* @property string $nom
|
||||
*
|
||||
* @property Collection|WalletIlinkTransaction[] $wallet_ilink_transactions
|
||||
*
|
||||
* @package App\Models
|
||||
*/
|
||||
class TypeIlinkTransaction extends Model
|
||||
{
|
||||
protected $table = 'type_ilink_transaction';
|
||||
public $timestamps = false;
|
||||
|
||||
protected $fillable = [
|
||||
'acteur',
|
||||
'nom'
|
||||
];
|
||||
|
||||
public function wallet_ilink_transactions()
|
||||
{
|
||||
return $this->hasMany(WalletIlinkTransaction::class, 'type');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,166 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Created by Reliese Model.
|
||||
*/
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
* Class WalletIlinkTransaction
|
||||
*
|
||||
* @property int $id
|
||||
* @property float $montant
|
||||
* @property float $montant_retrait
|
||||
* @property string $code_retrait
|
||||
* @property int $status_retrait
|
||||
* @property string $id_destinataire
|
||||
* @property string $type_id_destinataire
|
||||
* @property int $network_destinataire
|
||||
* @property string $type_document_destinataire
|
||||
* @property string $id_document_destinataire
|
||||
* @property string $nom_destinataire
|
||||
* @property string $prenom_destinataire
|
||||
* @property string $nom_emetteur
|
||||
* @property string $prenom_emetteur
|
||||
* @property float $frais
|
||||
* @property float $taxe
|
||||
* @property string $numero_carte
|
||||
* @property Carbon $expiration_date
|
||||
* @property int $init_country
|
||||
* @property int $final_country
|
||||
* @property float $commission_banque
|
||||
* @property float $commission_ag
|
||||
* @property float $commission_sup
|
||||
* @property float $commission_hyp
|
||||
* @property int $id_wallet_user
|
||||
* @property int $id_wallet_ag
|
||||
* @property int $id_wallet_sup
|
||||
* @property int $id_wallet_hyp
|
||||
* @property int $canceled
|
||||
* @property int $type
|
||||
* @property Carbon $date
|
||||
*
|
||||
* @property Country $country
|
||||
* @property Wallet $wallet
|
||||
* @property WalletsUser $wallets_user
|
||||
* @property TypeIlinkTransaction $type_ilink_transaction
|
||||
* @property Network $network
|
||||
*
|
||||
* @package App\Models
|
||||
*/
|
||||
class WalletIlinkTransaction extends Model
|
||||
{
|
||||
protected $table = 'wallet_ilink_transaction';
|
||||
public $timestamps = false;
|
||||
|
||||
protected $casts = [
|
||||
'montant' => 'float',
|
||||
'montant_retrait' => 'float',
|
||||
'status_retrait' => 'int',
|
||||
'network_destinataire' => 'int',
|
||||
'frais' => 'float',
|
||||
'taxe' => 'float',
|
||||
'init_country' => 'int',
|
||||
'final_country' => 'int',
|
||||
'commission_banque' => 'float',
|
||||
'commission_ag' => 'float',
|
||||
'commission_sup' => 'float',
|
||||
'commission_hyp' => 'float',
|
||||
'id_wallet_user' => 'int',
|
||||
'id_wallet_ag' => 'int',
|
||||
'id_wallet_sup' => 'int',
|
||||
'id_wallet_hyp' => 'int',
|
||||
'canceled' => 'int',
|
||||
'type' => 'int'
|
||||
];
|
||||
|
||||
protected $dates = [
|
||||
'expiration_date',
|
||||
'date'
|
||||
];
|
||||
|
||||
protected $fillable = [
|
||||
'montant',
|
||||
'montant_retrait',
|
||||
'code_retrait',
|
||||
'status_retrait',
|
||||
'id_destinataire',
|
||||
'type_id_destinataire',
|
||||
'network_destinataire',
|
||||
'type_document_destinataire',
|
||||
'id_document_destinataire',
|
||||
'nom_destinataire',
|
||||
'prenom_destinataire',
|
||||
'nom_emetteur',
|
||||
'prenom_emetteur',
|
||||
'frais',
|
||||
'taxe',
|
||||
'numero_carte',
|
||||
'expiration_date',
|
||||
'init_country',
|
||||
'final_country',
|
||||
'commission_banque',
|
||||
'commission_ag',
|
||||
'commission_sup',
|
||||
'commission_hyp',
|
||||
'id_wallet_user',
|
||||
'id_wallet_ag',
|
||||
'id_wallet_sup',
|
||||
'id_wallet_hyp',
|
||||
'canceled',
|
||||
'type',
|
||||
'date'
|
||||
];
|
||||
|
||||
public function country()
|
||||
{
|
||||
return $this->belongsTo(Country::class, 'final_country');
|
||||
}
|
||||
|
||||
public function wallet()
|
||||
{
|
||||
return $this->belongsTo(Wallet::class, 'id_wallet_sup');
|
||||
}
|
||||
|
||||
public function wallets_user()
|
||||
{
|
||||
return $this->belongsTo(WalletsUser::class, 'id_wallet_user');
|
||||
}
|
||||
|
||||
public function type_ilink_transaction()
|
||||
{
|
||||
return $this->belongsTo(TypeIlinkTransaction::class, 'type');
|
||||
}
|
||||
|
||||
public function network()
|
||||
{
|
||||
return $this->belongsTo(Network::class, 'network_destinataire');
|
||||
}
|
||||
|
||||
// Regles de validation
|
||||
//Envoi de cash vers wallet iLink
|
||||
public function first_rules()
|
||||
{
|
||||
return [
|
||||
'user_code'=>'required',
|
||||
'init_country' =>'required|integer|min:0|not_in:0',
|
||||
'final_country' =>'required|integer|min:0|not_in:0',
|
||||
'montant'=> 'required|numeric|min:0|not_in:0',
|
||||
'password'=>'required'
|
||||
];
|
||||
}
|
||||
|
||||
public function card_rules()
|
||||
{
|
||||
return [
|
||||
'montant'=> 'required|numeric|min:0|not_in:0',
|
||||
'numero_carte'=>'required',
|
||||
'cvv'=>'required_if:facade,front|size:3',
|
||||
'expiration_date'=>'required_if:facade,front|date_format:m/y|after_or_equal:today',
|
||||
];
|
||||
}
|
||||
}
|
|
@ -7,6 +7,7 @@
|
|||
namespace App\Models;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
|
@ -18,6 +19,7 @@ use Illuminate\Database\Eloquent\Model;
|
|||
* @property int $idUser
|
||||
*
|
||||
* @property User $user
|
||||
* @property Collection|WalletIlinkTransaction[] $wallet_ilink_transactions
|
||||
*
|
||||
* @package App\Models
|
||||
*/
|
||||
|
@ -45,4 +47,9 @@ class WalletsUser extends Model
|
|||
{
|
||||
return $this->belongsTo(User::class, 'idUser');
|
||||
}
|
||||
|
||||
public function wallet_ilink_transactions()
|
||||
{
|
||||
return $this->hasMany(WalletIlinkTransaction::class, 'id_wallet_user');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace App\Traits;
|
||||
|
||||
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
|
||||
trait Helper
|
||||
{
|
||||
public function sendMail($email , $title , $messageText){
|
||||
|
||||
$recipients = [$email];
|
||||
Mail::mailer('smtp')->raw($messageText, function ($message) use ($recipients,$title) {
|
||||
$message->subject($title);
|
||||
$message->to($recipients);
|
||||
});
|
||||
// return $this->successResponse("mail envoye");
|
||||
}
|
||||
|
||||
public function checkPassword($password , $encrypted_password , $salt)
|
||||
{
|
||||
$encrypted_password_to_check = base64_encode(sha1($password . $salt, true) . $salt);
|
||||
return $encrypted_password_to_check == $encrypted_password;
|
||||
}
|
||||
}
|
|
@ -5,5 +5,7 @@ return [
|
|||
'service_unavailable' => 'Service unavailable',
|
||||
'invalid_cvv' => 'Invalid CVV',
|
||||
'compression_failed' => 'Image compression failed!',
|
||||
'identification_carried_out' => 'Identification already carried out'
|
||||
'identification_carried_out' => 'Identification already carried out',
|
||||
'visa_api_failed'=> 'Request to API visa failed',
|
||||
'failed_transaction' => 'Failed transaction',
|
||||
];
|
||||
|
|
|
@ -8,6 +8,8 @@ return [
|
|||
'success_treated_demand' => 'Request successfully processed',
|
||||
'canceled_credit_request' => 'Canceled credit request',
|
||||
'canceled_transaction' => 'Canceled transaction',
|
||||
'successful_transaction' => 'Successful transaction',
|
||||
'incorrect_user_password' => 'Incorrect user password',
|
||||
'successful_identification'=>'User :name has been successfully identified.',
|
||||
'user_identificated' => 'User already identificated',
|
||||
'user_not_identificated' => 'User is not identificated',
|
||||
|
@ -25,5 +27,6 @@ You can now use all iLink World services.
|
|||
Welcome to the iLink World family !!!
|
||||
|
||||
Regards,
|
||||
ILinkWorld team.'
|
||||
ILinkWorld team.',
|
||||
'successful_deposit_ilink' => 'Your ilink account has been reloaded with :montant'
|
||||
];
|
||||
|
|
|
@ -5,5 +5,7 @@ return [
|
|||
'service_unavailable' => 'Service non disponible',
|
||||
'invalid_cvv' => 'CVV invalide',
|
||||
'compression_failed' => 'Échec de la compression d\'image',
|
||||
'identification_carried_out' => 'Identification déjà éffectuée'
|
||||
'identification_carried_out' => 'Identification déjà éffectuée',
|
||||
'visa_api_failed'=> 'La requete vers l\'api visa a échouée',
|
||||
'failed_transaction' => 'Transaction échouée',
|
||||
];
|
||||
|
|
|
@ -8,6 +8,8 @@ return [
|
|||
'success_treated_demand' => 'Demande traitée avec succès',
|
||||
'canceled_credit_request' => 'Demande de crédit annulée',
|
||||
'canceled_transaction' => 'Transaction annulée',
|
||||
'successful_transaction' => 'Transaction réussie',
|
||||
'incorrect_user_password' => 'Mot de passe utilisateur incorrect',
|
||||
'successful_identification' => 'L\'utilisateur :name a été identifié avec succes',
|
||||
'validated_identification' => 'Identification validée',
|
||||
'user_identificated' => 'Utilisateur déjà identifié',
|
||||
|
@ -25,5 +27,6 @@ Vous pouvez desormais utiliser tous les services de iLink World.
|
|||
Bienvenue dans la famille iLink World !!!
|
||||
|
||||
Cordialement,
|
||||
Equipe iLinkWorld.'
|
||||
Equipe iLinkWorld.',
|
||||
'successful_deposit_ilink' => 'Votre compte ilink a été rechargé d\'un montant de :montant'
|
||||
];
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
//$router->get('/', function () use ($router) {
|
||||
// return $router->app->version();
|
||||
//});
|
||||
// Helper routes
|
||||
$router->get('countries','HelperController@countries');
|
||||
|
||||
// Transactions routes
|
||||
$router->group(['prefix' => '/transactions'] , function () use ($router){
|
||||
|
@ -21,6 +23,11 @@ $router->group(['prefix' => '/transactions'] , function () use ($router){
|
|||
$router->get('{id_wallet}','TransactionController@lastTransactions');
|
||||
$router->post('commission','TransactionController@calculateCommission');
|
||||
$router->delete('{id_transaction}','TransactionController@cancel');
|
||||
|
||||
// Transactions wallet ilink
|
||||
$router->group(['prefix' => '/ilink'] , function () use ($router){
|
||||
$router->post('','iLinkTransactionController@add');
|
||||
});
|
||||
});
|
||||
|
||||
// Credits routes
|
||||
|
|
Loading…
Reference in New Issue