+ Update method User - Envoi wallet à cash

This commit is contained in:
Djery-Tom 2020-06-28 11:45:17 +01:00
parent 5b436497a7
commit 9c86ac281d
4 changed files with 69 additions and 25 deletions

View File

@ -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 ( $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 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') if($network->type == 'ilink')
$network->type = 'ilink-world'; $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); return $this->successResponse($networks);
} }

View File

@ -126,7 +126,7 @@ class iLinkTransactionController extends Controller
} else { } 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->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->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(); $configPayeur = ConfigWallet::where('id_network', $request->network_destinataire)->firstOrFail();
$reseauPayeur = PayingNetwork::where('id_network', $request->network_destinataire)->where('id_configWallet', $config->id)->firstOrFail(); $reseauPayeur = PayingNetwork::where('id_network', $request->network_destinataire)->where('id_configWallet', $config->id)->firstOrFail();
if ($init_country != $request->final_country) { if ($init_country != $request->final_country) {
@ -136,8 +136,10 @@ class iLinkTransactionController extends Controller
$transaction->part_reseau_payeur = 0; $transaction->part_reseau_payeur = 0;
$transaction->part_reseau_emetteur = $frais; $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; $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') { if ($configPayeur->type == 'ilink') {
$destinataire = User::where('user_code', $request->id_destinataire)->first(); $destinataire = User::where('user_code', $request->id_destinataire)->first();
if ($destinataire) { // Si c'est un wallet ilink if ($destinataire) { // Si c'est un wallet ilink
@ -205,7 +207,7 @@ class iLinkTransactionController extends Controller
$transaction->expiration_date = $expiration_date; $transaction->expiration_date = $expiration_date;
$frais = $request->montant * $config->taux_com_user_wallet_carte / 100; $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['amount'] = $montantDepot;
$body['card_number'] = $request->numero_carte; $body['card_number'] = $request->numero_carte;
$body['cvv'] = $request->cvv; $body['cvv'] = $request->cvv;
@ -250,11 +252,42 @@ class iLinkTransactionController extends Controller
} else { } 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->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->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; $walletUser->balance -= $transaction->montant;
$transaction->commission_hyp = $frais; $walletHyperviseur->balance_com += $transaction->commission_hyp;
$walletHyperviseur->balance_com += $frais;
$code_retrait = $this->random_string(); $code_retrait = $this->random_string();
$hash = $this->hashSSHA($code_retrait); $hash = $this->hashSSHA($code_retrait);
$transaction->encrypted_code_retrait = $hash['encrypted']; $transaction->encrypted_code_retrait = $hash['encrypted'];
@ -263,8 +296,11 @@ class iLinkTransactionController extends Controller
$transaction->id_wallet_hyp = $walletHyperviseur->id; $transaction->id_wallet_hyp = $walletHyperviseur->id;
$transaction->id_transaction = $this->getTransactionID(); $transaction->id_transaction = $this->getTransactionID();
$reseauPayeur->save();
$walletHyperviseur->save(); $walletHyperviseur->save();
$walletUser->save(); $walletUser->save();
$transaction->date = new \DateTime();
$transaction->status_retrait = 0;
$transaction->save(); $transaction->save();
$message = trans('messages.successful_user_send_to_cash', $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), ['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) {
if ($transaction->status_retrait == 0) { if ($transaction->status_retrait == 0) {
if ($this->checkPassword($request->code_retrait, $transaction->encrypted_code_retrait, $transaction->code_retrait_salt)) { 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_ag = floatval($transaction->frais * $config->taux_com_ag_retrait_cash / 100);
$part_sup = floatval($transaction->frais * $config->taux_com_sup_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; $walletAgent->balance_com += $part_ag;
$walletSuperviseur->balance_com += $part_sup; $walletSuperviseur->balance_com += $part_sup;
$walletHyperviseur->balance_com -= ($part_ag + $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); $frais = floatval($request->montant * $config->taux_com_wallet_ag_carte_cash / 100);
$montantRetrait = $transaction->montant + $frais; $montantRetrait = $transaction->montant + $frais;
$transaction->montant_retrait = $montantRetrait; $transaction->montant_net = $montantRetrait;
$body['amount'] = $montantRetrait; $body['amount'] = $montantRetrait;
$body['card_number'] = $request->numero_carte; $body['card_number'] = $request->numero_carte;
$body['cvv'] = $request->cvv; $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); $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); $taxe = ($request->init_country != $request->final_country) ? $this->calculateTax($taxesInternationales, $frais) : $this->calculateTax($taxesNationales, $frais);
$montantDepot = $request->montant - $frais - $taxe; $montantDepot = $request->montant - $frais - $taxe;
$transaction->montant_depot = $montantDepot; $transaction->montant_net = $montantDepot;
$walletUser->balance += $montantDepot; $walletUser->balance += $montantDepot;
$commisionAgent = floatval($frais * $config->taux_com_ag_envoi_cash / 100); $commisionAgent = floatval($frais * $config->taux_com_ag_envoi_cash / 100);
$commisionSuper = floatval($frais * $config->taux_com_sup_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); $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); $taxe = ($request->init_country != $request->final_country) ? $this->calculateTax($taxesInternationales, $frais) : $this->calculateTax($taxesNationales, $frais);
$montantDepot = $request->montant - $frais - $taxe; $montantDepot = $request->montant - $frais - $taxe;
$transaction->montant_depot = $montantDepot; $transaction->montant_net = $montantDepot;
//Emettre une trame securise pour crediter le wallet utilisateur //Emettre une trame securise pour crediter le wallet utilisateur
// $walletUser->balance += $montantDepot; // $walletUser->balance += $montantDepot;
// $transaction->id_destinataire = r // $transaction->id_destinataire = r
@ -486,7 +522,7 @@ class iLinkTransactionController extends Controller
$frais = $request->montant * $config->taux_com_wallet_ag_envoi_cash_carte / 100; $frais = $request->montant * $config->taux_com_wallet_ag_envoi_cash_carte / 100;
$montantDepot = $transaction->montant - $frais; $montantDepot = $transaction->montant - $frais;
$transaction->montant_depot = $montantDepot; $transaction->montant_net = $montantDepot;
$body['amount'] = $montantDepot; $body['amount'] = $montantDepot;
$body['card_number'] = $request->numero_carte; $body['card_number'] = $request->numero_carte;
$body['cvv'] = $request->cvv; $body['cvv'] = $request->cvv;
@ -547,7 +583,7 @@ class iLinkTransactionController extends Controller
$commisionSuper = floatval($frais * $config->taux_com_sup_envoi_cash / 100); $commisionSuper = floatval($frais * $config->taux_com_sup_envoi_cash / 100);
$commisionHyper = floatval($frais * $config->taux_com_hyp_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; $walletAgent->balance_com += $commisionAgent;
$transaction->commission_ag = $commisionAgent; $transaction->commission_ag = $commisionAgent;
$walletSuperviseur->balance_com += $commisionSuper; $walletSuperviseur->balance_com += $commisionSuper;

View File

@ -15,8 +15,8 @@ use Illuminate\Database\Eloquent\Model;
* @property int $id * @property int $id
* @property string $id_transaction * @property string $id_transaction
* @property float $montant * @property float $montant
* @property float $montant_depot * @property float $montant_net_final_country
* @property float $montant_retrait * @property float $montant_net
* @property string $encrypted_code_retrait * @property string $encrypted_code_retrait
* @property string $code_retrait_salt * @property string $code_retrait_salt
* @property int $status_retrait * @property int $status_retrait
@ -38,6 +38,7 @@ use Illuminate\Database\Eloquent\Model;
* @property float $taxe * @property float $taxe
* @property float $part_reseau_emetteur * @property float $part_reseau_emetteur
* @property float $part_reseau_payeur * @property float $part_reseau_payeur
* @property float $part_reseau_payeur_final_country
* @property string $numero_carte * @property string $numero_carte
* @property Carbon $expiration_date * @property Carbon $expiration_date
* @property int $init_country * @property int $init_country
@ -70,8 +71,8 @@ class WalletIlinkTransaction extends Model
protected $casts = [ protected $casts = [
'montant' => 'float', 'montant' => 'float',
'montant_depot' => 'float', 'montant_net_final_country' => 'float',
'montant_retrait' => 'float', 'montant_net' => 'float',
'status_retrait' => 'int', 'status_retrait' => 'int',
'network_destinataire' => 'int', 'network_destinataire' => 'int',
'network_emetteur' => 'int', 'network_emetteur' => 'int',
@ -79,6 +80,7 @@ class WalletIlinkTransaction extends Model
'taxe' => 'float', 'taxe' => 'float',
'part_reseau_emetteur' => 'float', 'part_reseau_emetteur' => 'float',
'part_reseau_payeur' => 'float', 'part_reseau_payeur' => 'float',
'part_reseau_payeur_final_country' => 'float',
'init_country' => 'int', 'init_country' => 'int',
'final_country' => 'int', 'final_country' => 'int',
'commission_banque' => 'float', 'commission_banque' => 'float',
@ -103,8 +105,8 @@ class WalletIlinkTransaction extends Model
protected $fillable = [ protected $fillable = [
'id_transaction', 'id_transaction',
'montant', 'montant',
'montant_depot', 'montant_net_final_country',
'montant_retrait', 'montant_net',
'encrypted_code_retrait', 'encrypted_code_retrait',
'code_retrait_salt', 'code_retrait_salt',
'status_retrait', 'status_retrait',
@ -126,6 +128,7 @@ class WalletIlinkTransaction extends Model
'taxe', 'taxe',
'part_reseau_emetteur', 'part_reseau_emetteur',
'part_reseau_payeur', 'part_reseau_payeur',
'part_reseau_payeur_final_country',
'numero_carte', 'numero_carte',
'expiration_date', 'expiration_date',
'init_country', 'init_country',

View File

@ -105,7 +105,7 @@ trait Helper
public function getTransactionID(){ public function getTransactionID(){
$d = new DateTime(); $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); return str_replace(' ' ,'.',$first);
} }