+ Fix bugs and add User - Envoi de wallet à carte
This commit is contained in:
parent
2ecf785ca3
commit
8a87d9231c
|
@ -113,6 +113,9 @@ class iLinkTransactionController extends Controller
|
|||
$walletUser = WalletsUser::findOrFail($request->id_wallet_user);
|
||||
$user = User::findOrFail($walletUser->idUser);
|
||||
if ($this->checkPassword($request->password, $user->encrypted_password, $user->salt)) {
|
||||
if($request->montant > $walletUser->balance){
|
||||
return $this->errorResponse(trans('errors.insufficient_balance'));
|
||||
}else{
|
||||
$transaction->frais = $frais = ($request->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 = ($request->init_country != $request->final_country) ? $this->calculateTax($taxesInternationales, $frais) : $this->calculateTax($taxesNationales, $frais);
|
||||
$transaction->montant_depot = $montantDepot = $transaction->montant - $frais - $taxe;
|
||||
|
@ -165,12 +168,58 @@ class iLinkTransactionController extends Controller
|
|||
'init_country'=>$this->getCountryName($request->init_country) , 'final_country'=>$this->getCountryName($request->final_country),
|
||||
'sender_code' => $user->user_code, 'receiver_code' => $transaction->id_destinataire]));
|
||||
return $this->successResponse(trans('messages.successful_transaction'));
|
||||
}
|
||||
} else {
|
||||
return $this->errorResponse(trans('messages.incorrect_user_password'));
|
||||
}
|
||||
break;
|
||||
case 2: //User - Envoi de wallet à carte
|
||||
$this->validate($request, $transaction->card_rules());
|
||||
$walletUser = WalletsUser::findOrFail($request->id_wallet_user);
|
||||
$user = User::findOrFail($walletUser->idUser);
|
||||
if ($this->checkPassword($request->password, $user->encrypted_password, $user->salt)) {
|
||||
if ($request->montant > $walletUser->balance) {
|
||||
return $this->errorResponse(trans('errors.insufficient_balance'));
|
||||
} else {
|
||||
$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_user_wallet_carte / 100;
|
||||
$transaction->montant_depot = $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) {
|
||||
$walletUser->balance -= $transaction->montant;
|
||||
|
||||
$walletHyperviseur->balance_com += $frais;
|
||||
$transaction->commission_hyp = $frais;
|
||||
$transaction->id_wallet_hyp = $walletHyperviseur->id;
|
||||
$transaction->frais = $frais;
|
||||
$transaction->date = new \DateTime();
|
||||
$walletHyperviseur->save();
|
||||
$walletUser->save();
|
||||
$transaction->save();
|
||||
$this->sendMail($user->email, trans('messages.successful_transaction'), trans('messages.successful_user_send_to_cart',
|
||||
['id_transaction' => $transaction->id, 'amount' => $this->toMoneyWithNetwork($transaction->montant, $request->id_network),
|
||||
'net' => $this->toMoneyWithNetwork($montantDepot, $request->id_network), 'fees' => $this->toMoneyWithNetwork($frais, $request->id_network),
|
||||
'sender_code' => $user->user_code, 'cart_number' => wordwrap($request->numero_carte, 4, ' ', true)]));
|
||||
return $this->successResponse(trans('messages.successful_transaction'));
|
||||
|
||||
} else {
|
||||
return $this->errorResponse(trans('errors.visa_api_failed'), Response::HTTP_INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
return $this->errorResponse(trans('messages.incorrect_user_password'));
|
||||
}
|
||||
break;
|
||||
case 3: //User - Envoi de wallet à cash
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@ use Brick\Money\ExchangeRateProvider\BaseCurrencyProvider;
|
|||
use Brick\Money\Money;
|
||||
use Brick\Math\RoundingMode;
|
||||
use PDO;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
trait Helper
|
||||
{
|
||||
|
@ -46,6 +47,14 @@ trait Helper
|
|||
return Country::findOrFail($id_country)->name;
|
||||
}
|
||||
|
||||
public function toMoneyWithNetwork($amount , $id_network){
|
||||
$currency = collect(DB::select('SELECT cu.code FROM networks n INNER JOIN countries c ON c.id = n.country_id INNER JOIN currencies cu ON cu.id = c.idCurrency
|
||||
WHERE n.id = :id',['id'=>$id_network]))->first();
|
||||
|
||||
$money = Money::of(round($amount, 0),$currency ? $currency->code : 'XAF');
|
||||
return $money->formatTo('fr_FR');
|
||||
}
|
||||
|
||||
public function toMoney($amount, $id_country)
|
||||
{
|
||||
$country = Country::findOrFail($id_country);
|
||||
|
|
|
@ -9,5 +9,6 @@ return [
|
|||
'visa_api_failed'=> 'Request to API visa failed',
|
||||
'failed_transaction' => 'Failed transaction',
|
||||
'user_phone_not_exist' => 'This customer number does not exist',
|
||||
'wallet_not_defined' => 'This code does not correspond to an iLink wallet'
|
||||
'wallet_not_defined' => 'This code does not correspond to an iLink wallet',
|
||||
'insufficient_balance'=> 'The balance is insufficient to complete this transaction',
|
||||
];
|
||||
|
|
|
@ -56,4 +56,12 @@ Transaction information:
|
|||
- Fees + Tax : :fees
|
||||
- Number of the sending wallet: :sender_code
|
||||
- Number of the recipient wallet: :receiver_code',
|
||||
'successful_user_send_to_cart' => 'Sending money to a visa card made.
|
||||
Transaction information:
|
||||
- Transaction ID: :id_transaction
|
||||
- Amount of the transaction: :amount
|
||||
- Net shipping amount: :net
|
||||
- Fees: :fees
|
||||
- Number of the sending wallet: :sender_code
|
||||
- Recipient\'s card number: :cart_number',
|
||||
];
|
||||
|
|
|
@ -9,5 +9,6 @@ return [
|
|||
'visa_api_failed'=> 'La requete vers l\'api visa a échouée',
|
||||
'failed_transaction' => 'Transaction échouée',
|
||||
'user_phone_not_exist' => 'Ce numéro client n\'existe pas',
|
||||
'wallet_not_defined' => 'Ce code ne correspond pas à un wallet iLink'
|
||||
'wallet_not_defined' => 'Ce code ne correspond pas à un wallet iLink',
|
||||
'insufficient_balance'=> 'Le solde est insuffisant pour effectuer cette transaction',
|
||||
];
|
||||
|
|
|
@ -56,4 +56,12 @@ Informations de la transaction :
|
|||
- Frais et Taxe : :fees
|
||||
- Numero du wallet émetteur : :sender_code
|
||||
- Numero du wallet destinataire : :receiver_code',
|
||||
'successful_user_send_to_cart' => 'Envoi d\'argent vers une carte visa effectué.
|
||||
Informations de la transaction :
|
||||
- Transaction ID : :id_transaction
|
||||
- Montant de la transaction : :amount
|
||||
- Montant net d\'envoi: :net
|
||||
- Frais : :fees
|
||||
- Numero du wallet émetteur : :sender_code
|
||||
- Numero de la carte du destinataire : :cart_number',
|
||||
];
|
||||
|
|
Loading…
Reference in New Issue