From 9c86ac281d606371c30b77f72698b65b47c55010 Mon Sep 17 00:00:00 2001 From: Djery-Tom Date: Sun, 28 Jun 2020 11:45:17 +0100 Subject: [PATCH] =?UTF-8?q?+=20Update=20method=20User=20-=20Envoi=20wallet?= =?UTF-8?q?=20=C3=A0=20cash?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/HelperController.php | 11 +++- .../iLinkTransactionController.php | 64 +++++++++++++++---- app/Models/WalletIlinkTransaction.php | 17 +++-- app/Traits/Helper.php | 2 +- 4 files changed, 69 insertions(+), 25 deletions(-) diff --git a/app/Http/Controllers/HelperController.php b/app/Http/Controllers/HelperController.php index a013892..530398c 100755 --- a/app/Http/Controllers/HelperController.php +++ b/app/Http/Controllers/HelperController.php @@ -23,10 +23,8 @@ class HelperController extends Controller // } - public function countries($id_wallet_user) + public function countries() { - $walletUser = WalletsUser::findOrFail($id_wallet_user); - $init_country = $walletUser->user->network->country->id; $countries = DB::select('SELECT id , name , code_dial , code_country FROM countries_currencies WHERE id IN ( SELECT distinct c.id FROM networks n INNER JOIN countries_currencies c ON n.country_id=c.id INNER JOIN configWallet cw ON cw.id_network = n.id WHERE status = 1 );'); @@ -57,6 +55,13 @@ class HelperController extends Controller if($network->type == 'ilink') $network->type = 'ilink-world'; } + if($request->id_country == $init_country ){ + $currentNetwork = new \stdClass(); + $currentNetwork->id = $config->network->id; + $currentNetwork->name = $config->network->name; + $currentNetwork->type = 'ilink-world'; + array_unshift($networks,$currentNetwork); + } return $this->successResponse($networks); } diff --git a/app/Http/Controllers/iLinkTransactionController.php b/app/Http/Controllers/iLinkTransactionController.php index 4445a1f..659eb39 100755 --- a/app/Http/Controllers/iLinkTransactionController.php +++ b/app/Http/Controllers/iLinkTransactionController.php @@ -126,7 +126,7 @@ class iLinkTransactionController extends Controller } else { $transaction->frais = $frais = ($init_country != $request->final_country) ? $this->calculateFees($plr_user_wallet_wallet, $request->montant) : $this->calculateFees($plr_user_wallet_wallet_national, $request->montant); $transaction->taxe = $taxe = ($init_country != $request->final_country) ? $this->calculateTax($taxesInternationales, $frais) : $this->calculateTax($taxesNationales, $frais); - $transaction->montant_depot = $montantDepot = $transaction->montant - $frais - $taxe; + $transaction->montant_net = $montantDepot = $transaction->montant - $frais - $taxe; $configPayeur = ConfigWallet::where('id_network', $request->network_destinataire)->firstOrFail(); $reseauPayeur = PayingNetwork::where('id_network', $request->network_destinataire)->where('id_configWallet', $config->id)->firstOrFail(); if ($init_country != $request->final_country) { @@ -136,8 +136,10 @@ class iLinkTransactionController extends Controller $transaction->part_reseau_payeur = 0; $transaction->part_reseau_emetteur = $frais; } + $transaction->montant_net_final_country = $this->toMoneyAmount($montantDepot, $init_country, $request->final_country); $transaction->commission_hyp = $transaction->part_reseau_emetteur; - $reseauPayeur->balance_com += $this->toMoneyAmount($transaction->part_reseau_payeur, $init_country, $request->final_country); + $transaction->part_reseau_payeur_final_country = $this->toMoneyAmount($transaction->part_reseau_payeur, $init_country, $request->final_country); + $reseauPayeur->balance_com += $transaction->part_reseau_payeur_final_country; if ($configPayeur->type == 'ilink') { $destinataire = User::where('user_code', $request->id_destinataire)->first(); if ($destinataire) { // Si c'est un wallet ilink @@ -205,7 +207,7 @@ class iLinkTransactionController extends Controller $transaction->expiration_date = $expiration_date; $frais = $request->montant * $config->taux_com_user_wallet_carte / 100; - $transaction->montant_depot = $montantDepot = $transaction->montant - $frais; + $transaction->montant_net = $montantDepot = $transaction->montant - $frais; $body['amount'] = $montantDepot; $body['card_number'] = $request->numero_carte; $body['cvv'] = $request->cvv; @@ -250,11 +252,42 @@ class iLinkTransactionController extends Controller } else { $transaction->frais = $frais = ($init_country != $request->final_country) ? $this->calculateFees($plr_user_wallet_cash, $request->montant) : $this->calculateFees($plr_user_wallet_cash_national, $request->montant); $transaction->taxe = $taxe = ($init_country != $request->final_country) ? $this->calculateTax($taxesInternationales, $frais) : $this->calculateTax($taxesNationales, $frais); - $transaction->montant_retrait = $montantRetrait = $transaction->montant - $frais - $taxe; - + $transaction->montant_net = $montantRetrait = $transaction->montant - $frais - $taxe; + $configPayeur = ConfigWallet::where('id_network', $request->network_destinataire)->firstOrFail(); + $reseauPayeur = PayingNetwork::where('id_network', $request->network_destinataire)->where('id_configWallet', $config->id)->firstOrFail(); + if ($init_country != $request->final_country) { + $transaction->part_reseau_payeur = $frais * $reseauPayeur->taux_partage / 100; + $transaction->part_reseau_emetteur = $frais - $transaction->part_reseau_payeur; + } else { + $transaction->part_reseau_payeur = 0; + $transaction->part_reseau_emetteur = $frais; + } + $transaction->montant_net_final_country = $this->toMoneyAmount($montantRetrait, $init_country, $request->final_country); + $transaction->commission_hyp = $transaction->part_reseau_emetteur; + $transaction->part_reseau_payeur_final_country = $this->toMoneyAmount($transaction->part_reseau_payeur, $init_country, $request->final_country); + $reseauPayeur->balance_com += $transaction->part_reseau_payeur_final_country; + if ($configPayeur->type == 'ilink') { + //Hyperviseur payeur + $hyperviseurPayeur = AgentPlus::where('category', 'hyper')->where('network_id', $request->network_destinataire)->firstOrFail(); + if ($hyperviseurPayeur->id == $hyperviseur->id) { //Si c'est le reseau payeur est aussi emetteur + $walletHyperviseur->balance_com += $transaction->part_reseau_payeur; + $reseauPayeur->balance_com += $this->toMoneyAmount($transaction->part_reseau_emetteur, $init_country, $request->final_country); + $transaction->id_wallet_hyp_payeur = $walletHyperviseur->id; + } else { + $wallet_agent_hypPayeur = WalletAgent::where('agent_id', $hyperviseurPayeur->id)->firstOrFail(); + $walletHyperviseurPayeur = Wallet::findOrFail($wallet_agent_hypPayeur->wallet_id); + $walletHyperviseurPayeur->balance_com += $this->toMoneyAmount($transaction->part_reseau_payeur, $init_country, $request->final_country); + $transaction->id_wallet_hyp_payeur = $walletHyperviseurPayeur->id; + $walletHyperviseurPayeur->save(); + } + }else{ + //Emettre requete SSL vers wallet extene correspondant pour recharger le compte dont l'id est : +// $transaction->id_destinataire ; + // et le montant est: +// $montantDepot; + } $walletUser->balance -= $transaction->montant; - $transaction->commission_hyp = $frais; - $walletHyperviseur->balance_com += $frais; + $walletHyperviseur->balance_com += $transaction->commission_hyp; $code_retrait = $this->random_string(); $hash = $this->hashSSHA($code_retrait); $transaction->encrypted_code_retrait = $hash['encrypted']; @@ -263,8 +296,11 @@ class iLinkTransactionController extends Controller $transaction->id_wallet_hyp = $walletHyperviseur->id; $transaction->id_transaction = $this->getTransactionID(); + $reseauPayeur->save(); $walletHyperviseur->save(); $walletUser->save(); + $transaction->date = new \DateTime(); + $transaction->status_retrait = 0; $transaction->save(); $message = trans('messages.successful_user_send_to_cash', ['id_transaction' => $transaction->id_transaction, 'amount' => $this->toMoney($transaction->montant, $init_country), 'net_init' => $this->toMoney($montantRetrait, $init_country), @@ -307,10 +343,10 @@ class iLinkTransactionController extends Controller if ($transaction) { if ($transaction->status_retrait == 0) { if ($this->checkPassword($request->code_retrait, $transaction->encrypted_code_retrait, $transaction->code_retrait_salt)) { - if ($transaction->montant_retrait == $request->montant) { + if ($transaction->montant_net == $request->montant) { $part_ag = floatval($transaction->frais * $config->taux_com_ag_retrait_cash / 100); $part_sup = floatval($transaction->frais * $config->taux_com_sup_retrait_cash / 100); - $walletAgent->balance_princ += $transaction->montant_retrait; + $walletAgent->balance_princ += $transaction->montant_net; $walletAgent->balance_com += $part_ag; $walletSuperviseur->balance_com += $part_sup; $walletHyperviseur->balance_com -= ($part_ag + $part_sup); @@ -348,7 +384,7 @@ class iLinkTransactionController extends Controller $frais = floatval($request->montant * $config->taux_com_wallet_ag_carte_cash / 100); $montantRetrait = $transaction->montant + $frais; - $transaction->montant_retrait = $montantRetrait; + $transaction->montant_net = $montantRetrait; $body['amount'] = $montantRetrait; $body['card_number'] = $request->numero_carte; $body['cvv'] = $request->cvv; @@ -406,7 +442,7 @@ class iLinkTransactionController extends Controller $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; - $transaction->montant_depot = $montantDepot; + $transaction->montant_net = $montantDepot; $walletUser->balance += $montantDepot; $commisionAgent = floatval($frais * $config->taux_com_ag_envoi_cash / 100); $commisionSuper = floatval($frais * $config->taux_com_sup_envoi_cash / 100); @@ -446,7 +482,7 @@ class iLinkTransactionController extends Controller $frais = ($request->init_country != $request->final_country) ? $this->calculateFees($plr_agent_depot_autre_wallet, $request->montant) : $this->calculateFees($plr_agent_depot_autre_wallet_national, $request->montant); $taxe = ($request->init_country != $request->final_country) ? $this->calculateTax($taxesInternationales, $frais) : $this->calculateTax($taxesNationales, $frais); $montantDepot = $request->montant - $frais - $taxe; - $transaction->montant_depot = $montantDepot; + $transaction->montant_net = $montantDepot; //Emettre une trame securise pour crediter le wallet utilisateur // $walletUser->balance += $montantDepot; // $transaction->id_destinataire = r @@ -486,7 +522,7 @@ class iLinkTransactionController extends Controller $frais = $request->montant * $config->taux_com_wallet_ag_envoi_cash_carte / 100; $montantDepot = $transaction->montant - $frais; - $transaction->montant_depot = $montantDepot; + $transaction->montant_net = $montantDepot; $body['amount'] = $montantDepot; $body['card_number'] = $request->numero_carte; $body['cvv'] = $request->cvv; @@ -547,7 +583,7 @@ class iLinkTransactionController extends Controller $commisionSuper = floatval($frais * $config->taux_com_sup_envoi_cash / 100); $commisionHyper = floatval($frais * $config->taux_com_hyp_envoi_cash / 100); - $transaction->montant_retrait = $montantRetrait; + $transaction->montant_net = $montantRetrait; $walletAgent->balance_com += $commisionAgent; $transaction->commission_ag = $commisionAgent; $walletSuperviseur->balance_com += $commisionSuper; diff --git a/app/Models/WalletIlinkTransaction.php b/app/Models/WalletIlinkTransaction.php index 25acd55..21209b5 100644 --- a/app/Models/WalletIlinkTransaction.php +++ b/app/Models/WalletIlinkTransaction.php @@ -15,8 +15,8 @@ use Illuminate\Database\Eloquent\Model; * @property int $id * @property string $id_transaction * @property float $montant - * @property float $montant_depot - * @property float $montant_retrait + * @property float $montant_net_final_country + * @property float $montant_net * @property string $encrypted_code_retrait * @property string $code_retrait_salt * @property int $status_retrait @@ -38,6 +38,7 @@ use Illuminate\Database\Eloquent\Model; * @property float $taxe * @property float $part_reseau_emetteur * @property float $part_reseau_payeur + * @property float $part_reseau_payeur_final_country * @property string $numero_carte * @property Carbon $expiration_date * @property int $init_country @@ -70,8 +71,8 @@ class WalletIlinkTransaction extends Model protected $casts = [ 'montant' => 'float', - 'montant_depot' => 'float', - 'montant_retrait' => 'float', + 'montant_net_final_country' => 'float', + 'montant_net' => 'float', 'status_retrait' => 'int', 'network_destinataire' => 'int', 'network_emetteur' => 'int', @@ -79,6 +80,7 @@ class WalletIlinkTransaction extends Model 'taxe' => 'float', 'part_reseau_emetteur' => 'float', 'part_reseau_payeur' => 'float', + 'part_reseau_payeur_final_country' => 'float', 'init_country' => 'int', 'final_country' => 'int', 'commission_banque' => 'float', @@ -103,8 +105,8 @@ class WalletIlinkTransaction extends Model protected $fillable = [ 'id_transaction', 'montant', - 'montant_depot', - 'montant_retrait', + 'montant_net_final_country', + 'montant_net', 'encrypted_code_retrait', 'code_retrait_salt', 'status_retrait', @@ -126,6 +128,7 @@ class WalletIlinkTransaction extends Model 'taxe', 'part_reseau_emetteur', 'part_reseau_payeur', + 'part_reseau_payeur_final_country', 'numero_carte', 'expiration_date', 'init_country', @@ -212,7 +215,7 @@ class WalletIlinkTransaction extends Model 'code_retrait' =>'required|size:16', ]; } - /// User Operation rules + /// User Operation rules public function send_wallet_wallet_rules(){ return [ 'final_country' =>'required|integer|min:0|not_in:0', diff --git a/app/Traits/Helper.php b/app/Traits/Helper.php index 57fb8ac..db71123 100644 --- a/app/Traits/Helper.php +++ b/app/Traits/Helper.php @@ -105,7 +105,7 @@ trait Helper public function getTransactionID(){ $d = new DateTime(); - $first = str_replace(['-',':'], '',$d->format("Y-m-d H:i:s.u")); + $first = str_replace(['-',':'], '',$d->format("y-m-d H:i:s.u")); return str_replace(' ' ,'.',$first); }