+ Implementation of visa-api
This commit is contained in:
parent
71270c8e88
commit
cbb31f0b97
|
@ -11,7 +11,7 @@ LOG_SLACK_WEBHOOK_URL=
|
||||||
DB_CONNECTION=mysql
|
DB_CONNECTION=mysql
|
||||||
DB_HOST=127.0.0.1
|
DB_HOST=127.0.0.1
|
||||||
DB_PORT=3306
|
DB_PORT=3306
|
||||||
DB_DATABASE=iLink_test2
|
DB_DATABASE=iLink_preprod
|
||||||
DB_USERNAME=root
|
DB_USERNAME=root
|
||||||
DB_PASSWORD=vps@2017GA
|
DB_PASSWORD=vps@2017GA
|
||||||
|
|
||||||
|
@ -29,3 +29,7 @@ MAIL_USERNAME=noreply@ilink-app.com
|
||||||
MAIL_PASSWORD=ilink2017GA
|
MAIL_PASSWORD=ilink2017GA
|
||||||
MAIL_FROM_ADDRESS=noreply@ilink-app.com
|
MAIL_FROM_ADDRESS=noreply@ilink-app.com
|
||||||
MAIL_FROM_NAME="iLink World"
|
MAIL_FROM_NAME="iLink World"
|
||||||
|
|
||||||
|
VISA_API_URL=localhost:8082
|
||||||
|
VISA_API_USERNAME=admin
|
||||||
|
VISA_API_PASSWORD=PasswordHere!
|
||||||
|
|
|
@ -101,15 +101,26 @@ class Handler extends ExceptionHandler
|
||||||
return $this->errorResponse($exception->getMessage(),Response::HTTP_INTERNAL_SERVER_ERROR);
|
return $this->errorResponse($exception->getMessage(),Response::HTTP_INTERNAL_SERVER_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($exception instanceof \ErrorException)
|
||||||
|
{
|
||||||
|
return $this->errorResponse($exception->getMessage(),Response::HTTP_INTERNAL_SERVER_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
if ( $exception instanceof ClientException)
|
if ( $exception instanceof ClientException)
|
||||||
{
|
{
|
||||||
$message = $exception->getResponse()->getBody()->getContents();
|
$message = $exception->getResponse()->getBody()->getContents();
|
||||||
$error =json_decode($message) ;
|
$error =json_decode($message);
|
||||||
$code = $exception->getCode();
|
$code = $exception->getCode();
|
||||||
|
|
||||||
if($error)
|
if($error){
|
||||||
return $this->errorResponse($error->error,$code);
|
if($error->message){
|
||||||
else
|
$message = json_decode($error->message);
|
||||||
|
if(isset($message->errorMessage))
|
||||||
|
return $this->errorResponse($message->errorMessage,$code);
|
||||||
|
return $this->errorResponse($message,$code);
|
||||||
|
}
|
||||||
|
return $this->errorResponse($error,$code);
|
||||||
|
} else
|
||||||
return $this->errorResponse($message,$code);
|
return $this->errorResponse($message,$code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,16 +72,68 @@ class CommissionController extends Controller
|
||||||
$file_ext = end($original_filename_arr);
|
$file_ext = end($original_filename_arr);
|
||||||
$destination_path = './upload/user/';
|
$destination_path = './upload/user/';
|
||||||
$image = 'U-' . time() . '.' . $file_ext;
|
$image = 'U-' . time() . '.' . $file_ext;
|
||||||
|
// File info
|
||||||
|
// $fileName = basename($_FILES["image"]["name"]);
|
||||||
|
// $imageUploadPath = $uploadPath . $fileName;
|
||||||
|
// $fileType = pathinfo($imageUploadPath, PATHINFO_EXTENSION);
|
||||||
|
|
||||||
if ($request->file('image')->move($destination_path, $image)) {
|
// Allow certain file formats
|
||||||
$user->image = '/upload/user/' . $image;
|
$allowTypes = array('jpg','png','jpeg','gif');
|
||||||
return $this->successResponse($user);
|
if(in_array(strtolower($file_ext), $allowTypes)){
|
||||||
} else {
|
// Image temp source
|
||||||
return $this->errorResponse('Cannot upload file');
|
// $imageTemp = $_FILES["image"]["tmp_name"];
|
||||||
|
|
||||||
|
// Compress size and upload image
|
||||||
|
$compressedImage = $this->compressImage($request->file('image'), '/'. $image, 80);
|
||||||
|
if($compressedImage){
|
||||||
|
return $this->successResponse("Image compressed successfully.");
|
||||||
|
}else{
|
||||||
|
return $this->errorResponse( "Image compress failed!");
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
return $this->errorResponse('Sorry, only JPG, JPEG, PNG, & GIF files are allowed to upload.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if ($request->file('image')->move($destination_path, $image)) {
|
||||||
|
// $user->image = '/upload/user/' . $image;
|
||||||
|
// return $this->successResponse($user);
|
||||||
|
// } else {
|
||||||
|
// return $this->errorResponse('Cannot upload file');
|
||||||
|
// }
|
||||||
} else {
|
} else {
|
||||||
return $this->errorResponse('File not found');
|
return $this->errorResponse('File not found');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Custom function to compress image size and
|
||||||
|
* upload to the server using PHP
|
||||||
|
*/
|
||||||
|
function compressImage($source, $destination, $quality) {
|
||||||
|
// Get image info
|
||||||
|
$imgInfo = getimagesize($source);
|
||||||
|
$mime = $imgInfo['mime'];
|
||||||
|
|
||||||
|
// Create a new image from file
|
||||||
|
switch($mime){
|
||||||
|
case 'image/jpeg':
|
||||||
|
$image = imagecreatefromjpeg($source);
|
||||||
|
break;
|
||||||
|
case 'image/png':
|
||||||
|
$image = imagecreatefrompng($source);
|
||||||
|
break;
|
||||||
|
case 'image/gif':
|
||||||
|
$image = imagecreatefromgif($source);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$image = imagecreatefromjpeg($source);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save image
|
||||||
|
imagejpeg($image, $destination, $quality);
|
||||||
|
|
||||||
|
// Return compressed image
|
||||||
|
return $destination;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ use Illuminate\Support\Facades\DB;
|
||||||
class TransactionController extends Controller
|
class TransactionController extends Controller
|
||||||
{
|
{
|
||||||
use ApiResponser;
|
use ApiResponser;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new controller instance.
|
* Create a new controller instance.
|
||||||
*
|
*
|
||||||
|
@ -29,117 +30,134 @@ class TransactionController extends Controller
|
||||||
|
|
||||||
public function add(Request $request)
|
public function add(Request $request)
|
||||||
{
|
{
|
||||||
$transaction = new WalletTransaction ;
|
$transaction = new WalletTransaction;
|
||||||
$this->validate($request,$transaction->rules());
|
$this->validate($request, $transaction->rules());
|
||||||
|
|
||||||
$walletAgent = Wallet::findOrFail($request->get('id_wallet'));
|
$walletAgent = Wallet::findOrFail($request->get('id_wallet'));
|
||||||
$network_agent = NetworksAgent::findOrFail( $walletAgent->id_networkAgent);
|
$network_agent = NetworksAgent::findOrFail($walletAgent->id_networkAgent);
|
||||||
// Configuratrion du wallet
|
// Configuratrion du wallet
|
||||||
$config = ConfigWallet::where('id_network',$network_agent->network_id)->firstOrFail();
|
$config = ConfigWallet::where('id_network', $network_agent->network_id)->firstOrFail();
|
||||||
|
|
||||||
// Recuperation des wallets hyperviseur et superviseur
|
// Recuperation des wallets hyperviseur et superviseur
|
||||||
$codeGenerer = CodeGenerer::findOrFail($network_agent->codeGenerer_id);
|
$codeGenerer = CodeGenerer::findOrFail($network_agent->codeGenerer_id);
|
||||||
$superviseur = AgentPlus::where('code_membre',$codeGenerer->code_parrain)->firstOrFail();
|
$superviseur = AgentPlus::where('code_membre', $codeGenerer->code_parrain)->firstOrFail();
|
||||||
$hyperviseur = AgentPlus::where('code_membre',$superviseur->code_parrain)->firstOrFail();
|
$hyperviseur = AgentPlus::where('code_membre', $superviseur->code_parrain)->firstOrFail();
|
||||||
|
|
||||||
$wallet_agent_sup = WalletAgent::where('agent_id', $superviseur->id)->firstOrFail();
|
$wallet_agent_sup = WalletAgent::where('agent_id', $superviseur->id)->firstOrFail();
|
||||||
$wallet_agent_hyp = WalletAgent::where('agent_id', $hyperviseur->id)->firstOrFail();
|
$wallet_agent_hyp = WalletAgent::where('agent_id', $hyperviseur->id)->firstOrFail();
|
||||||
$walletSuperviseur = Wallet::findOrFail($wallet_agent_sup->wallet_id);
|
$walletSuperviseur = Wallet::findOrFail($wallet_agent_sup->wallet_id);
|
||||||
$walletHyperviseur = Wallet::findOrFail($wallet_agent_hyp->wallet_id);
|
$walletHyperviseur = Wallet::findOrFail($wallet_agent_hyp->wallet_id);
|
||||||
|
|
||||||
$data = $request->all();
|
$data = $request->all();
|
||||||
$data['expiration_date'] = \DateTime::createFromFormat('m/y',$request->expiration_date);
|
if (isset($request->cvv) && !is_numeric($request->cvv))
|
||||||
|
return $this->errorResponse('errors.invalid_cvv');
|
||||||
|
|
||||||
|
$data['expiration_date'] = \DateTime::createFromFormat('m/y', $request->expiration_date);
|
||||||
|
if(!$data['expiration_date'])
|
||||||
|
$data['expiration_date'] = new \DateTime();
|
||||||
$transaction->fill($data);
|
$transaction->fill($data);
|
||||||
|
|
||||||
$client = new \GuzzleHttp\Client();
|
$client = new \GuzzleHttp\Client([
|
||||||
|
'base_uri' => env('VISA_API_URL'),
|
||||||
|
'auth'=>[env('VISA_API_USERNAME') , env('VISA_API_PASSWORD')]
|
||||||
|
]);
|
||||||
// Procedure de depot d'argent
|
// Procedure de depot d'argent
|
||||||
if($transaction->type == 'credit')
|
if ($transaction->type == 'credit') {
|
||||||
{
|
$frais = $transaction->montant * $config->taux_com_client_depot / 100;
|
||||||
$frais = $transaction->montant * $config->taux_com_client_depot / 100 ;
|
|
||||||
|
|
||||||
// Verification faites au niveau du frontend
|
//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
|
||||||
|
$montantDepot = $transaction->montant - $frais - $config->frais_min_banque_depot;
|
||||||
|
|
||||||
|
$body['amount'] = $montantDepot;
|
||||||
|
$body['card_number'] = $transaction->numCarte;
|
||||||
|
$body['cvv'] = $request->cvv;
|
||||||
|
$body['expiry_date'] = $data['expiration_date']->format('Y-m');
|
||||||
|
// Verification faites au niveau du frontend
|
||||||
// if($walletAgent->balance_princ >= ($transaction->montant + $frais + $config->frais_min_banque_depot)){
|
// if($walletAgent->balance_princ >= ($transaction->montant + $frais + $config->frais_min_banque_depot)){
|
||||||
|
|
||||||
$response = $client->post('https://ilink-app.com/mobilebackendtest/interacted/MembersAction.php');
|
$response = $client->post('fund-transfer-api/v1/transaction/push', ['json' => $body]);
|
||||||
$code = $response->getStatusCode();
|
$code = $response->getStatusCode();
|
||||||
if($code == 200){
|
if ($code == 200) {
|
||||||
//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
|
|
||||||
$montantDepot = $transaction->montant - $frais - $config->frais_min_banque_depot;
|
|
||||||
|
|
||||||
$banqueCommission = floatval(($frais + $config->frais_min_banque_depot) * $config->part_banque_depot / 100);
|
$banqueCommission = floatval(($frais + $config->frais_min_banque_depot) * $config->part_banque_depot / 100);
|
||||||
$transaction->commission_banque = $banqueCommission;
|
$transaction->commission_banque = $banqueCommission;
|
||||||
// 2---> Emmètre via API sécurisé SSL une requête de débit de notre
|
// 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 %
|
//compte marchand du (Part de la banque partenaire en %
|
||||||
//pour le dépôtqui s’applique sur les frais minimum) et créditer
|
//pour le dépôtqui s’applique sur les frais minimum) et créditer
|
||||||
//le compte des opérations défini avec notre banque
|
//le compte des opérations défini avec notre banque
|
||||||
//partenaire
|
//partenaire
|
||||||
|
|
||||||
$walletAgent->balance_princ -= $transaction->montant;
|
$walletAgent->balance_princ -= $transaction->montant;
|
||||||
|
|
||||||
$agentCommission = floatval(($frais + $config->frais_min_banque_depot) * $config->taux_com_ag_depot / 100);
|
$agentCommission = floatval(($frais + $config->frais_min_banque_depot) * $config->taux_com_ag_depot / 100);
|
||||||
$superviseurCommission = floatval(($frais + $config->frais_min_banque_depot) * $config->taux_com_sup_depot / 100);
|
$superviseurCommission = floatval(($frais + $config->frais_min_banque_depot) * $config->taux_com_sup_depot / 100);
|
||||||
$hyperviseurCommission = $frais + $config->frais_min_banque_depot - $superviseurCommission - $agentCommission - $banqueCommission;
|
$hyperviseurCommission = $frais + $config->frais_min_banque_depot - $superviseurCommission - $agentCommission - $banqueCommission;
|
||||||
|
|
||||||
$walletAgent->balance_com += $agentCommission;
|
$walletAgent->balance_com += $agentCommission;
|
||||||
$walletSuperviseur->balance_com += $superviseurCommission;
|
$walletSuperviseur->balance_com += $superviseurCommission;
|
||||||
$walletHyperviseur->balance_com += $hyperviseurCommission;
|
$walletHyperviseur->balance_com += $hyperviseurCommission;
|
||||||
|
|
||||||
$transaction->id_wallet_sup = $walletSuperviseur->id;
|
$transaction->id_wallet_sup = $walletSuperviseur->id;
|
||||||
$transaction->commission_sup = $superviseurCommission;
|
$transaction->commission_sup = $superviseurCommission;
|
||||||
$transaction->id_wallet_hyp = $walletHyperviseur->id;
|
$transaction->id_wallet_hyp = $walletHyperviseur->id;
|
||||||
$transaction->commission_hyp = $hyperviseurCommission;
|
$transaction->commission_hyp = $hyperviseurCommission;
|
||||||
$transaction->commission_ag = $agentCommission;
|
$transaction->commission_ag = $agentCommission;
|
||||||
}
|
}
|
||||||
|
|
||||||
// }else{
|
// }else{
|
||||||
// return $this->errorResponse('Solde agent inferieur au montant de depot + frais + frais minimun de depot de la banque', Response::HTTP_BAD_REQUEST);
|
// 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
|
// Procedure de retrait d'argent
|
||||||
}elseif ($transaction->type == 'debit')
|
} elseif ($transaction->type == 'debit') {
|
||||||
{
|
|
||||||
// 12-05-20: Modif de Mr Manga : Le montant de la transaction c'est le montant de retrait sans les frais
|
// 12-05-20: Modif de Mr Manga : Le montant de la transaction c'est le montant de retrait sans les frais
|
||||||
//Bloquer le retrait
|
//Bloquer le retrait
|
||||||
return $this->errorResponse(trans('errors.service_unavailable'),Response::HTTP_BAD_REQUEST);
|
// return $this->errorResponse(trans('errors.service_unavailable'), Response::HTTP_BAD_REQUEST);
|
||||||
// $frais = $transaction->montant * $config->taux_com_client_retrait / 100;
|
$frais = $transaction->montant * $config->taux_com_client_retrait / 100;
|
||||||
//
|
|
||||||
// $response = $client->post('https://ilink-app.com/mobilebackendtest/interacted/MembersAction.php');
|
//Requete vers la banque
|
||||||
// $code = $response->getStatusCode();
|
// 1 ---> Emmètre via API sécurisé SSL une requête de retrait du
|
||||||
// if($code == 200) {
|
//(montant de la transaction + frais de transaction) pour débiter
|
||||||
// //Requete vers la banque
|
//sa carte et créditer notre compte marchand
|
||||||
// // 1 ---> Emmètre via API sécurisé SSL une requête de retrait du
|
$montantRetrait = $transaction->montant + $frais;
|
||||||
// //(montant de la transaction + frais de transaction) pour débiter
|
|
||||||
// //sa carte et créditer notre compte marchand
|
$body['amount'] = $montantRetrait;
|
||||||
// $montantRetrait = $transaction->montant + $frais;
|
$body['card_number'] = $transaction->numCarte;
|
||||||
//
|
$body['cvv'] = $request->cvv;
|
||||||
// $banqueCommission = floatval($transaction->montant * $config->part_banque_retrait / 100);
|
$body['expiry_date'] = $data['expiration_date']->format('Y-m');
|
||||||
// $transaction->commission_banque = $banqueCommission;
|
|
||||||
// // 2---> Emmètre via API sécurisé SSL une requête de débit de notre
|
$response = $client->post('fund-transfer-api/v1/transaction/pull', ['json' => $body]);
|
||||||
// //compte marchand du (montant de la transaction multiplié
|
$code = $response->getStatusCode();
|
||||||
// //par la Part de la banque partenaire en % ) et créditer le
|
if($code == 200) {
|
||||||
// //compte des opérations défini avec notre banque partenaire
|
|
||||||
//
|
$banqueCommission = floatval($transaction->montant * $config->part_banque_retrait / 100);
|
||||||
// $walletAgent->balance_princ += $transaction->montant;
|
$transaction->commission_banque = $banqueCommission;
|
||||||
//
|
// 2---> Emmètre via API sécurisé SSL une requête de débit de notre
|
||||||
// $agentCommission=floatval($transaction->montant*$config->taux_com_ag_retrait / 100);
|
//compte marchand du (montant de la transaction multiplié
|
||||||
// $superviseurCommission=floatval($transaction->montant*$config->taux_com_sup_retrait / 100);
|
//par la Part de la banque partenaire en % ) et créditer le
|
||||||
// $hyperviseurCommission = $frais - $superviseurCommission - $agentCommission - $banqueCommission;
|
//compte des opérations défini avec notre banque partenaire
|
||||||
//
|
|
||||||
//// dd(array($hyperviseurCommission ,$superviseurCommission));
|
$walletAgent->balance_princ += $transaction->montant;
|
||||||
// $walletAgent->balance_com += $agentCommission;
|
|
||||||
// $walletSuperviseur->balance_com += $superviseurCommission;
|
$agentCommission=floatval($transaction->montant*$config->taux_com_ag_retrait / 100);
|
||||||
// $walletHyperviseur->balance_com += $hyperviseurCommission;
|
$superviseurCommission=floatval($transaction->montant*$config->taux_com_sup_retrait / 100);
|
||||||
//
|
$hyperviseurCommission = $frais - $superviseurCommission - $agentCommission - $banqueCommission;
|
||||||
// $transaction->id_wallet_sup = $walletSuperviseur->id;
|
|
||||||
// $transaction->commission_sup = $superviseurCommission;
|
// dd(array($hyperviseurCommission ,$superviseurCommission));
|
||||||
// $transaction->id_wallet_hyp = $walletHyperviseur->id;
|
$walletAgent->balance_com += $agentCommission;
|
||||||
// $transaction->commission_hyp = $hyperviseurCommission;
|
$walletSuperviseur->balance_com += $superviseurCommission;
|
||||||
// $transaction->commission_ag = $agentCommission;
|
$walletHyperviseur->balance_com += $hyperviseurCommission;
|
||||||
// }
|
|
||||||
|
$transaction->id_wallet_sup = $walletSuperviseur->id;
|
||||||
|
$transaction->commission_sup = $superviseurCommission;
|
||||||
|
$transaction->id_wallet_hyp = $walletHyperviseur->id;
|
||||||
|
$transaction->commission_hyp = $hyperviseurCommission;
|
||||||
|
$transaction->commission_ag = $agentCommission;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,9 +170,10 @@ class TransactionController extends Controller
|
||||||
return $this->successResponse($walletAgent);
|
return $this->successResponse($walletAgent);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function lastTransactions($id_wallet){
|
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']);
|
$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);
|
return $this->successResponse($transactions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,28 +181,28 @@ class TransactionController extends Controller
|
||||||
{
|
{
|
||||||
$rules = [
|
$rules = [
|
||||||
'id_wallet' => 'required|integer|min:1',
|
'id_wallet' => 'required|integer|min:1',
|
||||||
'montant'=> 'required|numeric|min:0|not_in:0',
|
'montant' => 'required|numeric|min:0|not_in:0',
|
||||||
'type' =>'required|in:credit,debit',
|
'type' => 'required|in:credit,debit',
|
||||||
];
|
];
|
||||||
|
|
||||||
$this->validate($request,$rules);
|
$this->validate($request, $rules);
|
||||||
|
|
||||||
$walletAgent = Wallet::findOrFail($request->get('id_wallet'));
|
$walletAgent = Wallet::findOrFail($request->get('id_wallet'));
|
||||||
$network_agent = NetworksAgent::findOrFail( $walletAgent->id_networkAgent);
|
$network_agent = NetworksAgent::findOrFail($walletAgent->id_networkAgent);
|
||||||
// Configuratrion du wallet
|
// Configuratrion du wallet
|
||||||
$config = ConfigWallet::where('id_network',$network_agent->network_id)->firstOrFail();
|
$config = ConfigWallet::where('id_network', $network_agent->network_id)->firstOrFail();
|
||||||
$commission = null;
|
$commission = null;
|
||||||
if($request->type == 'credit') {
|
if ($request->type == 'credit') {
|
||||||
//Depot
|
//Depot
|
||||||
$commission = ( $request->montant * $config->taux_com_client_depot / 100 ) + $config->frais_min_banque_depot;
|
$commission = ($request->montant * $config->taux_com_client_depot / 100) + $config->frais_min_banque_depot;
|
||||||
$data['montant_calcule'] = $request->montant - $commission;
|
$data['montant_calcule'] = $request->montant - $commission;
|
||||||
}elseif ($request->type == 'debit'){
|
} elseif ($request->type == 'debit') {
|
||||||
// Retrait
|
// Retrait
|
||||||
$commission = $request->montant * $config->taux_com_client_retrait / 100 ;
|
$commission = $request->montant * $config->taux_com_client_retrait / 100;
|
||||||
$data['montant_calcule'] = $request->montant + $commission;
|
$data['montant_calcule'] = $request->montant + $commission;
|
||||||
}
|
}
|
||||||
|
|
||||||
$data['commission'] = $commission ;
|
$data['commission'] = $commission;
|
||||||
return $this->successResponse($data);
|
return $this->successResponse($data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -100,11 +100,15 @@ class WalletTransaction extends Model
|
||||||
|
|
||||||
public function rules()
|
public function rules()
|
||||||
{
|
{
|
||||||
|
//Verifier si ce sont les infos de la face avant ou arriere de la carte qui sont envoyés
|
||||||
|
// front -> Face avant : Numero de carte , cvv , etc...
|
||||||
|
// back -> Face arriere : Numero de serie
|
||||||
return [
|
return [
|
||||||
|
'facade'=>'required|in:front,back',
|
||||||
'montant'=> 'required|numeric|min:0|not_in:0',
|
'montant'=> 'required|numeric|min:0|not_in:0',
|
||||||
'numCarte'=>'required',
|
'numCarte'=>'required',
|
||||||
'cvv'=>'required|integer|min:100|max:9999',
|
'cvv'=>'required_if:facade,front|size:3',
|
||||||
'expiration_date'=>'required|date_format:m/y|after_or_equal:today',
|
'expiration_date'=>'required_if:facade,front|date_format:m/y|after_or_equal:today',
|
||||||
'type' =>'required|in:credit,debit',
|
'type' =>'required|in:credit,debit',
|
||||||
'id_wallet' => 'required|integer|min:0'
|
'id_wallet' => 'required|integer|min:0'
|
||||||
];
|
];
|
||||||
|
|
|
@ -11,7 +11,7 @@ trait ApiResponser
|
||||||
return response($this->formatResponse($code,$data,null) , $code)->header('Content-Type', 'application/json');
|
return response($this->formatResponse($code,$data,null) , $code)->header('Content-Type', 'application/json');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function errorResponse($message , $code)
|
public function errorResponse($message , $code = Response::HTTP_BAD_REQUEST)
|
||||||
{
|
{
|
||||||
return response()->json($this->formatResponse($code,null,$message), $code);
|
return response()->json($this->formatResponse($code,null,$message), $code);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,5 +2,6 @@
|
||||||
return [
|
return [
|
||||||
'model_not_found' => 'Does not exist any instance of :model with given id',
|
'model_not_found' => 'Does not exist any instance of :model with given id',
|
||||||
'unexpected_error'=> 'Unexpected error. Try later',
|
'unexpected_error'=> 'Unexpected error. Try later',
|
||||||
'service_unavailable' => 'Service unavailable'
|
'service_unavailable' => 'Service unavailable',
|
||||||
|
'invalid_cvv' => 'Invalid CVV'
|
||||||
];
|
];
|
||||||
|
|
|
@ -2,5 +2,6 @@
|
||||||
return [
|
return [
|
||||||
'model_not_found' => 'Il n\'existe aucune instance de :model avec l\'id donné',
|
'model_not_found' => 'Il n\'existe aucune instance de :model avec l\'id donné',
|
||||||
'unexpected_error'=> 'Erreur inattendue. Essayer plus tard',
|
'unexpected_error'=> 'Erreur inattendue. Essayer plus tard',
|
||||||
'service_unavailable' => 'Service non disponible'
|
'service_unavailable' => 'Service non disponible',
|
||||||
|
'invalid_cvv' => 'CVV invalide'
|
||||||
];
|
];
|
||||||
|
|
Loading…
Reference in New Issue