validate($request,$transaction->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(); // Recuperation des wallets hyperviseur et superviseur $codeGenerer = CodeGenerer::findOrFail($network_agent->codeGenerer_id); $superviseur = AgentsPlus::where('code_membre',$codeGenerer->code_parrain)->firstOrFail(); $hyperviseur = AgentsPlus::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);;; $transaction->fill($request->all()); $client = new \GuzzleHttp\Client(); // Procedure de depot d'argent if($transaction->type == 'credit') { $frais = $transaction->montant * $config->taux_com_client_depot; if($walletAgent->balance_princ >= ($transaction->montant + $config->taux_com_client_depot + $config->part_banque_depot)){ //Requete vers la banque // 1 ---> Emmètre via API sécurisé SSL une requête de débit de notre //compte marchand la valeur égale au $montantDepot( montant de la //transaction – la frais calculé en % - frais minimum fixe du //dépôt client) et créditer sa carte visa de cette valeur $banqueCommission = floatval($config->frais_min_banque_depot * $config->part_banque_depot); // 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($config->frais_min_banque_depot * $config->taux_com_ag_depot); $superviseurCommission = floatval($config->frais_min_banque_depot * $config->taux_com_sup_depot); $hyperviseurCommission = $frais + $config->frais_min_banque_depot - $superviseurCommission - $agentCommission - $banqueCommission; $walletAgent->balance_com += $agentCommission; $walletSuperviseur->balance_com += $superviseurCommission; $walletHyperviseur->balance_com += $hyperviseurCommission; }else{ return $this->errorResponse('Solde agent inferieur au montant de depot + frais + frais minimun de depot de la banque', Response::HTTP_BAD_REQUEST); } // Procedure de retrait d'argent }elseif ($transaction->type == 'debit') { $frais = $transaction->montant * $config->taux_com_client_retrait; //Requete vers la banque // 1 ---> Emmètre via API sécurisé SSL une requête de retrait du //(montant de la transaction + frais de transaction) pour débiter //sa carte et créditer notre compte marchand $banqueCommission = floatval($transaction->montant * $config->part_banque_retrait); // 2---> Emmètre via API sécurisé SSL une requête de débit de notre //compte marchand du (montant de la transaction multiplié //par la Part de la banque partenaire en % ) et créditer le //compte des opérations défini avec notre banque partenaire $walletAgent->balance_princ += $transaction->montant; $agentCommission=floatval($transaction->montant*$config->taux_com_ag_retrait); $superviseurCommission=floatval($transaction->montant*$config->taux_com_sup_retrait); $hyperviseurCommission = $frais + $config->frais_min_banque_depot - $superviseurCommission - $agentCommission - $banqueCommission; $walletAgent->balance_com += $agentCommission; $walletSuperviseur->balance_com += $superviseurCommission; $walletHyperviseur->balance_com += $hyperviseurCommission; } $transaction->date = new \DateTime(); $transaction->statut = 1; $walletAgent->save(); $walletSuperviseur->save(); $walletHyperviseur->save(); $transaction->save(); return $this->successResponse($transaction); } }