+ EmitTransaction route for Transmitting Networks

This commit is contained in:
Djery-Tom 2020-11-28 09:19:44 +01:00
parent 3267ce5a0d
commit ee958746eb
22 changed files with 2861 additions and 40 deletions

View File

@ -17,21 +17,6 @@ use Laravel\Lumen\Routing\Controller as BaseController;
*
*/
/**
* @OA\Get(
* path="/",
* summary="Afficher la version de lumen",
* tags={"Lumen"},
* security={{"api_key":{}}},
* @OA\Response(
* response=200,
* description="OK",
* @OA\JsonContent(
* example = "Lumen xx.xx.xx"
* )
* )
* )
*/
class Controller extends BaseController
{
//

View File

@ -0,0 +1,442 @@
<?php
namespace App\Http\Controllers;
use App\Models\ConfigWallet;
use App\Models\Network;
use App\Models\TransmittingNetwork;
use App\Models\User;
use App\Models\Wallet;
use App\Models\WalletAgent;
use App\Models\WalletIlinkTransaction;
use App\Models\WalletsUser;
use App\Traits\ApiResponser;
use App\Traits\Helper;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class TransmittingNetworksController extends Controller
{
use ApiResponser;
use Helper;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
//
}
public function index(Request $request)
{
$users = User::paginate($request->get("limit", 10));
return ["data" => $users];
}
/**
* @OA\Post(
* path="/emitTransaction",
* summary="Emettre une transaction vers le backend de iLink APP",
* tags={"Transaction vers le backend de iLink APP"},
* security={{"api_key":{}}},
* @OA\RequestBody(
* description="Corps de la requete",
* required=true,
* @OA\MediaType(
* mediaType="application/json",
* @OA\Schema(
* oneOf={
* @OA\Schema(ref="#/components/schemas/destination_channel_is_wallet"),
* @OA\Schema(ref="#/components/schemas/destination_channel_is_cash"),
* }
* ),
* examples = {
* "destination_channel_is_wallet" : {
* "summary" : "Transaction ayant pour canal de destination le wallet d'un utilisateur simple",
* "value" : {"type":1,"id_transaction_network_emetteur":"T123456789","network_emetteur":61,"network_destinataire":101,"nom_emetteur":"Djery","prenom_emetteur":"Tom","email_emetteur":"ddietchi@ilink-app.com","type_document_emetteur":"passport","id_document_emetteur":"12345","id_emetteur":"KKKKKKK","id_destinataire":"s6LD9PmCJC","montant_commission":5000,"montant":50000,"frais":100,"taxe":50,"part_reseau_emetteur":2000,"part_reseau_payeur":1500}
* },
* "destination_channel_is_cash" : {
* "summary" : "Transaction ayant pour canal de destination l'argent en cash",
* "value": {"type":17,"id_transaction_network_emetteur":"T123456789","network_emetteur":61,"network_destinataire":101,"nom_emetteur":"Djery","prenom_emetteur":"Tom","email_emetteur":"ddietchi@ilink-app.com","type_document_emetteur":"passport","id_document_emetteur":"12345","id_emetteur":"sBhk1kl25","nom_destinataire":"Manga NSONGO","prenom_destinataire":"Jacques","type_document_destinataire":"cni","id_document_destinataire":"12345697","email_destinataire":"Jmangansongo.cfao@yahoo.fr","montant_commission":5000,"montant":50000,"code_retrait":"A123B123C123D123","frais":100,"taxe":50,"part_reseau_emetteur":2000,"part_reseau_payeur":1500}
* },
* }
* )
* ),
* @OA\Response(
* response=200,
* description="OK",
* @OA\JsonContent(
* ref="#/components/schemas/ApiResponse",
* examples = {
* "destination_channel_is_wallet" : {
* "summary" : "Transaction ayant pour canal de destination le wallet d'un utilisateur simple",
* "value" : {
* "status" : 200,
* "response" : "Demande traitée avec succès",
* "error":null
* }
* },
* "destination_channel_is_cash" : {
* "summary" : "Transaction ayant pour canal de destination l'argent en cash",
* "value" : {
* "status" : 200,
* "response" : "Demande traitée avec succès",
* "error":null
* }
* },
* }
* )
* )
* )
*/
// Perment aux reseaux emetteurs d'emettre des transactions vers le walletService interne
public function emitPayment(Request $request)
{
$this->validate($request, [
'type' => 'required|integer|in:1,17', // Les types de transactions possibles à recevoir [1,3,17]
'montant' => 'required|numeric|min:0|not_in:0',
'frais' => 'required|numeric|min:0|not_in:0',
'taxe' => 'required|numeric|min:0|not_in:0',
'part_reseau_emetteur' => 'required|numeric|min:0|not_in:0',
'part_reseau_payeur' => 'required|numeric|min:0|not_in:0',
'montant_commission' => 'required|numeric|min:0|not_in:0',
'network_emetteur' => 'required|numeric|min:0|not_in:0',
'network_destinataire' => 'required|numeric|min:0|not_in:0',
'id_transaction_network_emetteur' => 'required',
]);
$configRecipient = ConfigWallet::where('id_network', $request->network_destinataire)->first();
$configTransmitter = ConfigWallet::where('id_network', $request->network_emetteur)->first();
if (!$configRecipient)
return $this->errorResponse(trans('errors.recipient_network_not_configured'));
if ($configRecipient->type != 'ilink')
return $this->errorResponse(trans('errors.recipient_network_not_authorized'));
if (!$configTransmitter)
return $this->errorResponse(trans('errors.transmitter_network_not_configured'));
if ($configTransmitter->type != 'autre')
return $this->errorResponse(trans('errors.transmitter_network_not_authorized'));
$transmittingNetwork = TransmittingNetwork::where('id_network', $request->network_emetteur)->where('id_configWallet', $configRecipient->id)->first();
if (!$transmittingNetwork)
return $this->errorResponse(trans('errors.transmitter_network_not_recognized'));
$transaction = new WalletIlinkTransaction();
$transaction->fill($request->all());
$transaction->id_transaction = $this->getTransactionID();
$transaction->from_network_emetteur = true;
//Hyperviseur destinataire
$hyperviseurDestinataire = WalletAgent::where('category', 'hyper')->where('network_id', $request->network_destinataire)->firstOrFail();
$walletHyper = Wallet::findOrFail($hyperviseurDestinataire->wallet_id);
$transaction->id_wallet_hyp = $walletHyper->id;
$finalNetwork = Network::findOrFail($request->network_destinataire);
$transaction->final_country = $finalNetwork->country->id;
$initNetwork = Network::findOrFail($request->network_emetteur);
$transaction->init_country = $initNetwork->country->id;
$transaction->montant_net = $transaction->montant_net_final_country = $request->montant;
$transaction->part_reseau_payeur_final_country = $transaction->part_reseau_payeur;
$transaction->status_reseau_payeur = 'EN_COURS';
switch ($request->type) {
/**
* @OA\Schema(
* schema="destination_channel_is_wallet",
* title="Transaction ayant pour canal de destination le wallet d'un utilisateur simple",
* @OA\Property(property="type",
* type="integer",
* enum = {1},
* default = 1,
* description="Type de la transaction : Cette valeur est statique"
* ),
* @OA\Property(property="id_transaction_network_emetteur",
* type="string",
* example="T123456789",
* description="ID de la transaction chez le réseau émetteur"
* ),
* @OA\Property(property="network_emetteur",
* type="integer",
* example=61,
* description="ID du reseau émetteur enregistré dans la base de données de iLink World"
* ),
* @OA\Property(property="network_destinataire",
* type="integer",
* example=101,
* description="ID du reseau destinataire enregistré dans la base de données"
* ),
* @OA\Property(property="id_emetteur",
* type="string",
* description="ID de l'émetteur dans la base de données du réseau émetteur de iLink World"
* ),
* @OA\Property(property="nom_emetteur",
* type="string",
* description="Noms de l'émetteur"
* ),
* @OA\Property(property="prenom_emetteur",
* type="string",
* description="Prenoms de l'émetteur"
* ),
* @OA\Property(property="email_emetteur",
* type="string",
* description="Email de l'émetteur"
* ),
* @OA\Property(property="type_document_emetteur",
* type="string",
* description="Type de document que l'émetteur a fourni pour son identification"
* ),
* @OA\Property(property="id_document_emetteur",
* type="string",
* description="ID de l'émetteur sur le document qu'il a fourni pour son identification"
* ),
* @OA\Property(property="id_destinataire",
* type="string",
* description="ID du destinataire enregistré dans la base de données de iLink World"
* ),
* @OA\Property(property="montant",
* type="number",
* example = 10000,
* description="Montant de la transaction"
* ),
* @OA\Property(property="montant_commission",
* type="number",
* example = 500,
* description="Montant de la commission sur la transaction"
* ),
* @OA\Property(property="frais",
* type="number",
* example = 200,
* description="Montant des frais sur la transaction"
* ),
* @OA\Property(property="taxe",
* type="number",
* example = 100,
* description="Montant de la taxe sur la transaction"
* ),
* @OA\Property(property="part_reseau_emetteur",
* type="number",
* example = 700,
* description="Montant de la part du réseau émétteur sur la transaction"
* ),
* @OA\Property(property="part_reseau_payeur",
* type="number",
* example = 500,
* description="Montant de la part du réseau payeur sur la transaction"
* ),
* )
*/
case 1:
$this->validate($request, [
'id_destinataire' => 'required',
'nom_emetteur' => 'required',
'prenom_emetteur' => 'required',
'email_emetteur' => 'required',
'type_document_emetteur' => 'required',
'id_document_emetteur' => 'required',
'id_emetteur' => 'required',
]);
$destinataire = User::where('user_code', $request->id_destinataire)->first();
if ($destinataire) { // Si c'est un wallet ilink
if ($destinataire->network->country->id == $finalNetwork->country->id) {
$walletDestinataire = WalletsUser::where('idUser', $destinataire->id)->firstOrFail();
$walletDestinataire->balance += $request->montant;
$transaction->id_wallet_user = $walletDestinataire->id;
$walletDestinataire->save();
} else {
return $this->errorResponse(trans('errors.wallet_country_not_match', ['country' => $finalNetwork->country->name]));
}
} else {
return $this->errorResponse(trans('errors.wallet_not_defined'));
}
$walletHyper->balance_com += $request->montant_commission;
$walletHyper->save();
$transmittingNetwork->balance_compensation += $request->montant;
$transmittingNetwork->balance_com += $request->montant_commission;
$transmittingNetwork->save();
$transaction->commission_hyp = $transaction->commission_hyp_final_country = $request->montant_commission;
$transaction->status_reseau_payeur = 'TRAITEE';
$transaction->date = $this->getCurrentTimeByCountryCode($initNetwork->country->code_country);
$transaction->save();
$message = trans('messages.wallet_incoming_payment_message',
['id_transaction' => $transaction->id_transaction, 'amount' => $this->toMoneyWithNetwork($request->montant, $request->id),
'sender_name' => $request->nom_emetteur . ' ' . $request->prenom_emetteur, 'init_country' => $initNetwork->country->name, 'sender_code' => $request->id_emetteur,
'final_country' => $finalNetwork->country->name, 'network' => $initNetwork->name, 'receiver_code' => $request->id_destinataire]);
$this->sendMail($destinataire->email, trans('messages.wallet_incoming_payment'), $message);
return $this->successResponse(trans('messages.success_treated_demand'));
/**
* @OA\Schema(
* schema="destination_channel_is_cash",
* title="Transaction ayant pour canal de destination l'argent en cash",
* @OA\Property(property="type",
* type="integer",
* enum = {17},
* default = 17,
* description="Type de la transaction : Cette valeur est statique"
* ),
* @OA\Property(property="id_transaction_network_emetteur",
* type="string",
* example="T123456789",
* description="ID de la transaction chez le réseau émetteur"
* ),
* @OA\Property(property="network_emetteur",
* type="integer",
* example=61,
* description="ID du reseau émetteur enregistré dans la base de données de iLink World"
* ),
* @OA\Property(property="network_destinataire",
* type="integer",
* example=101,
* description="ID du reseau destinataire enregistré dans la base de données"
* ),
* @OA\Property(property="id_emetteur",
* type="string",
* description="ID de l'émetteur dans la base de données du réseau émetteur de iLink World"
* ),
* @OA\Property(property="nom_emetteur",
* type="string",
* description="Noms de l'émetteur"
* ),
* @OA\Property(property="prenom_emetteur",
* type="string",
* description="Prenoms de l'émetteur"
* ),
* @OA\Property(property="email_emetteur",
* type="string",
* description="Email de l'émetteur"
* ),
* @OA\Property(property="type_document_emetteur",
* type="string",
* description="Type de document que l'émetteur a fourni pour son identification"
* ),
* @OA\Property(property="id_document_emetteur",
* type="string",
* description="ID de l'émetteur sur le document qu'il a fourni pour son identification"
* ),
* @OA\Property(property="nom_destinataire",
* type="string",
* description="Noms du destinataire"
* ),
* @OA\Property(property="prenom_destinataire",
* type="string",
* description="Prenoms du destinataire"
* ),
* @OA\Property(property="email_destinataire",
* type="string",
* description="Email du destinataire"
* ),
* @OA\Property(property="type_document_destinataire",
* type="string",
* description="Type de document que le destinataire fournira pour son identification"
* ),
* @OA\Property(property="id_document_destinataire",
* type="string",
* description="ID du destinataire sur le document qu'il fournira pour son identification"
* ),
* @OA\Property(property="montant",
* type="number",
* example = 10000,
* description="Montant de la transaction"
* ),
* @OA\Property(property="montant_commission",
* type="number",
* example = 500,
* description="Montant de la commission sur la transaction"
* ),
* @OA\Property(property="code_retrait",
* type="string",
* example ="A123B123C123D123",
* description="Code retrait (de 16 caracteres) qui sera utilisé lors du retrait de l'argent en cash"
* ),
* @OA\Property(property="frais",
* type="number",
* example = 200,
* description="Montant des frais sur la transaction"
* ),
* @OA\Property(property="taxe",
* type="number",
* example = 100,
* description="Montant de la taxe sur la transaction"
* ),
* @OA\Property(property="part_reseau_emetteur",
* type="number",
* example = 700,
* description="Montant de la part du réseau émétteur sur la transaction"
* ),
* @OA\Property(property="part_reseau_payeur",
* type="number",
* example = 500,
* description="Montant de la part du réseau payeur sur la transaction"
* ),
* )
*/
case 17:
$this->validate($request, [
'id_emetteur' => 'required',
'nom_emetteur' => 'required',
'prenom_emetteur' => 'required',
'type_document_emetteur' => 'required',
'id_document_emetteur' => 'required',
'email_emetteur' => 'required',
'nom_destinataire' => 'required',
'prenom_destinataire' => 'required',
'type_document_destinataire' => 'required',
'id_document_destinataire' => 'required',
'email_destinataire' => 'required',
'code_retrait' => 'required|size:16'
]);
$hash = $this->hashSSHA($request->code_retrait);
$transaction->encrypted_code_retrait = $hash['encrypted'];
$transaction->code_retrait_salt = $hash['salt'];
$transaction->status_retrait = false;
$transaction->commission_ag = floatval($request->montant_commission * $configRecipient->taux_com_ag_envoi_cash / 100);
$transaction->commission_sup = floatval($request->montant_commission * $configRecipient->taux_com_sup_envoi_cash / 100);
$transaction->commission_hyp = $transaction->commission_hyp_final_country = floatval($request->montant_commission * $configRecipient->taux_com_hyp_envoi_cash / 100);
$transaction->date = $this->getCurrentTimeByCountryCode($initNetwork->country->code_country);
$transaction->save();
$message = trans('messages.cash_incoming_payment_message',
['amount' => $this->toMoneyWithNetwork($request->montant, $request->id), 'id_transaction' => $transaction->id_transaction,
'sender_name' => $request->nom_emetteur . ' ' . $request->prenom_emetteur, 'receiver_name' => $request->nom_destinataire . ' ' . $request->prenom_destinataire,
'code' => wordwrap($request->code_retrait, 4, ' ', true), 'init_country' => $initNetwork->country->name,
'final_country' => $finalNetwork->country->name, 'network' => $initNetwork->name]);
$this->sendMail($request->email_destinataire, trans('messages.cash_incoming_payment'), $message);
return $this->successResponse(trans('messages.success_treated_demand'));
break;
case 18:
return $this->successResponse(trans('messages.success_treated_demand'));
break;
}
}
private function getTransactionID()
{
do {
$code = $this->generateTransactionCode();
$result = collect(DB::select('SELECT * FROM wallet_ilink_transaction WHERE id_transaction = :code', ['code' => $code]));
$codeCorrect = sizeof($result) < 0;
} while ($codeCorrect);
return $code;
}
}

181
app/Models/ConfigWallet.php Executable file
View File

@ -0,0 +1,181 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
/**
* Class ConfigWallet
*
* @property int $id
* @property float $taux_com_client_retrait
* @property float $taux_com_client_depot
* @property float $taux_com_ag_retrait
* @property float $taux_com_ag_depot
* @property float $taux_com_sup_depot
* @property float $taux_com_sup_retrait
* @property float $part_banque_retrait
* @property float $part_banque_depot
* @property float $frais_min_banque_depot
* @property int $id_network
* @property float $taux_com_user_wallet_carte
* @property float $taux_com_user_carte_wallet
* @property float $taux_com_user_carte_cash
* @property float $taux_com_wallet_ag_envoi_cash_carte
* @property float $taux_com_wallet_ag_carte_cash
* @property float $taux_com_wallet_ag_depot_carte
* @property float $taux_com_ag_envoi_cash
* @property float $taux_com_sup_envoi_cash
* @property float $taux_com_hyp_envoi_cash
* @property float $taux_com_ag_retrait_cash
* @property float $taux_com_sup_retrait_cash
* @property float $taux_com_hyp_retrait_cash
* @property float $taux_com_ag_depot_cash_carte
* @property float $taux_com_sup_depot_cash_carte
* @property float $taux_com_hyp_depot_cash_carte
* @property float $taux_com_banque_depot_cash_carte
* @property float $taux_com_ag_retrait_carte_cash
* @property float $taux_com_sup_retrait_carte_cash
* @property float $taux_com_hyp_retrait_carte_cash
* @property float $taux_com_banque_retrait_carte_cash
* @property float $taux_com_hyp_retrait_carte_cash_ilink
* @property float $taux_com_banque_retrait_carte_cash_ilink
* @property float $taux_com_hyp_envoi_wallet_carte_ilink
* @property float $taux_com_banque_envoi_wallet_carte_ilink
* @property string $type
* @property int $has_nano_credit
* @property float $limite_credit_min
* @property float $limite_credit_max
* @property float $taux_com_ag_nano_credit
* @property float $taux_com_sup_nano_credit
* @property float $taux_com_hyp_nano_credit
*
* @property Network $network
* @property Collection|PaliersConfigWallet[] $paliers_config_wallets
* @property Collection|PayingNetwork[] $paying_networks
* @property Collection|Tax[] $taxes
*
* @package App\Models
*/
class ConfigWallet extends Model
{
protected $table = 'configWallet';
public $timestamps = false;
protected $casts = [
'taux_com_client_retrait' => 'float',
'taux_com_client_depot' => 'float',
'taux_com_ag_retrait' => 'float',
'taux_com_ag_depot' => 'float',
'taux_com_sup_depot' => 'float',
'taux_com_sup_retrait' => 'float',
'part_banque_retrait' => 'float',
'part_banque_depot' => 'float',
'frais_min_banque_depot' => 'float',
'id_network' => 'int',
'taux_com_user_wallet_carte' => 'float',
'taux_com_user_carte_wallet' => 'float',
'taux_com_user_carte_cash' => 'float',
'taux_com_wallet_ag_envoi_cash_carte' => 'float',
'taux_com_wallet_ag_carte_cash' => 'float',
'taux_com_wallet_ag_depot_carte' => 'float',
'taux_com_ag_envoi_cash' => 'float',
'taux_com_sup_envoi_cash' => 'float',
'taux_com_hyp_envoi_cash' => 'float',
'taux_com_ag_retrait_cash' => 'float',
'taux_com_sup_retrait_cash' => 'float',
'taux_com_hyp_retrait_cash' => 'float',
'taux_com_ag_depot_cash_carte' => 'float',
'taux_com_sup_depot_cash_carte' => 'float',
'taux_com_hyp_depot_cash_carte' => 'float',
'taux_com_banque_depot_cash_carte' => 'float',
'taux_com_ag_retrait_carte_cash' => 'float',
'taux_com_sup_retrait_carte_cash' => 'float',
'taux_com_hyp_retrait_carte_cash' => 'float',
'taux_com_banque_retrait_carte_cash' => 'float',
'taux_com_hyp_retrait_carte_cash_ilink' => 'float',
'taux_com_banque_retrait_carte_cash_ilink' => 'float',
'taux_com_hyp_envoi_wallet_carte_ilink' => 'float',
'taux_com_banque_envoi_wallet_carte_ilink' => 'float',
'has_nano_credit' => 'int',
'limite_credit_min' => 'float',
'limite_credit_max' => 'float',
'taux_com_ag_nano_credit'=> 'float',
'taux_com_sup_nano_credit'=> 'float',
'taux_com_hyp_nano_credit'=> 'float',
];
protected $fillable = [
'taux_com_client_retrait',
'taux_com_client_depot',
'taux_com_ag_retrait',
'taux_com_ag_depot',
'taux_com_sup_depot',
'taux_com_sup_retrait',
'part_banque_retrait',
'part_banque_depot',
'frais_min_banque_depot',
'id_network',
'taux_com_user_wallet_carte',
'taux_com_user_carte_wallet',
'taux_com_user_carte_cash',
'taux_com_wallet_ag_envoi_cash_carte',
'taux_com_wallet_ag_carte_cash',
'taux_com_wallet_ag_depot_carte',
'taux_com_ag_envoi_cash',
'taux_com_sup_envoi_cash',
'taux_com_hyp_envoi_cash',
'taux_com_ag_retrait_cash',
'taux_com_sup_retrait_cash',
'taux_com_hyp_retrait_cash',
'taux_com_ag_depot_cash_carte',
'taux_com_sup_depot_cash_carte',
'taux_com_hyp_depot_cash_carte',
'taux_com_banque_depot_cash_carte',
'taux_com_ag_retrait_carte_cash',
'taux_com_sup_retrait_carte_cash',
'taux_com_hyp_retrait_carte_cash',
'taux_com_banque_retrait_carte_cash',
'taux_com_hyp_retrait_carte_cash_ilink',
'taux_com_banque_retrait_carte_cash_ilink',
'taux_com_hyp_envoi_wallet_carte_ilink',
'taux_com_banque_envoi_wallet_carte_ilink',
'type',
'has_nano_credit',
'limite_credit_min',
'limite_credit_max',
'taux_com_ag_nano_credit',
'taux_com_sup_nano_credit',
'taux_com_hyp_nano_credit'
];
public function network()
{
return $this->belongsTo(Network::class, 'id_network');
}
public function paliers_config_wallets()
{
return $this->hasMany(PaliersConfigWallet::class, 'idConfig');
}
public function paliers_config_nano_credits()
{
return $this->hasMany(PaliersConfigNanoCredit::class, 'idConfig');
}
public function paying_networks()
{
return $this->hasMany(PayingNetwork::class, 'id_configWallet');
}
public function taxes()
{
return $this->hasMany(Tax::class, 'idConfig');
}
}

80
app/Models/Country.php Executable file
View File

@ -0,0 +1,80 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
/**
* Class Country
*
* @property int $id
* @property string $code_dial
* @property string $name
* @property string $code_country
* @property float $longitude
* @property float $latitude
* @property int $idCurrency
*
* @property Currency $currency
* @property Collection|Admin[] $admins
* @property Collection|ConfigGame[] $config_games
* @property Collection|Identification[] $identifications
* @property Collection|WalletIlinkTransaction[] $wallet_ilink_transactions
*
* @package App\Models
*/
class Country extends Model
{
protected $table = 'countries';
public $timestamps = false;
protected $casts = [
'longitude' => 'float',
'latitude' => 'float',
'idCurrency' => 'int'
];
protected $fillable = [
'code_dial',
'name',
'code_country',
'longitude',
'latitude',
'idCurrency'
];
public function currency()
{
return $this->belongsTo(Currency::class, 'idCurrency');
}
public function admins()
{
return $this->hasMany(Admin::class, 'country');
}
public function config_games()
{
return $this->hasMany(ConfigGame::class, 'id_pays');
}
public function identifications()
{
return $this->hasMany(Identification::class);
}
public function wallet_ilink_transactions()
{
return $this->hasMany(WalletIlinkTransaction::class, 'final_country');
}
public function regulation()
{
return $this->belongsTo(Regulation::class, 'id_country');
}
}

64
app/Models/Network.php Executable file
View File

@ -0,0 +1,64 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
/**
* Class Network
*
* @property int $id
* @property int $country_id
* @property string $name
* @property int $id_networkAgent
* @property int $status
*
* @property Collection|ConfigWallet[] $config_wallets
* @property Collection|Identification[] $identifications
* @property WalletsPassword $wallets_password
*
* @package App\Models
*/
class Network extends Model
{
protected $table = 'networks';
public $timestamps = false;
protected $casts = [
'country_id' => 'int',
'id_networkAgent' => 'int',
'status' => 'int'
];
protected $fillable = [
'country_id',
'name',
'id_networkAgent',
'status'
];
public function config_wallets()
{
return $this->hasMany(ConfigWallet::class, 'id_network');
}
public function identifications()
{
return $this->hasMany(Identification::class, 'idNetwork');
}
public function wallets_password()
{
return $this->hasOne(WalletsPassword::class);
}
public function country()
{
return $this->belongsTo(Country::class, 'country_id');
}
}

62
app/Models/NetworksAgent.php Executable file
View File

@ -0,0 +1,62 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
/**
* Class NetworksAgent
*
* @property int $id
* @property int $network_id
* @property int $agent_id
* @property float $solde
* @property int $etat
* @property int $codeGenerer_id
* @property string $phone
* @property string $transactionNumber
* @property string $validation_code
*
* @property Collection|Wallet[] $wallets
*
* @package App\Models
*/
class NetworksAgent extends Model
{
protected $table = 'networks_agents';
public $timestamps = false;
protected $casts = [
'network_id' => 'int',
'agent_id' => 'int',
'solde' => 'float',
'etat' => 'int',
'codeGenerer_id' => 'int'
];
protected $fillable = [
'network_id',
'agent_id',
'solde',
'etat',
'codeGenerer_id',
'phone',
'transactionNumber',
'validation_code'
];
public function wallets()
{
return $this->hasMany(Wallet::class, 'id_networkAgent');
}
public function network()
{
return $this->belongsTo(Network::class, 'network_id');
}
}

View File

@ -0,0 +1,71 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
/**
* Class TransmittedIlinkTransaction
*
* @property int $id
* @property string $id_transaction
* @property string $id_transaction_network_emetteur
* @property int $network_destinataire
* @property int $network_emetteur
* @property float $montant
* @property float $montant_commission
* @property string $id_destinataire
* @property string|null $nom_destinataire
* @property string|null $prenom_destinataire
* @property string|null $type_document_destinataire
* @property string|null $id_document_destinataire
* @property string|null $email_destinataire
* @property string|null $id_emetteur
* @property string|null $nom_emetteur
* @property string|null $prenom_emetteur
* @property string|null $type_document_emetteur
* @property string|null $id_document_emetteur
* @property string|null $email_emetteur
* @property int $type
*
* @package App\Models
*/
class TransmittedIlinkTransaction extends Model
{
protected $table = 'transmitted_ilink_transaction';
public $timestamps = false;
protected $casts = [
'network_destinataire' => 'int',
'network_emetteur' => 'int',
'montant' => 'float',
'montant_commission' => 'float',
'type' => 'int'
];
protected $fillable = [
'id_transaction',
'id_transaction_network_emetteur',
'network_destinataire',
'network_emetteur',
'montant',
'montant_commission',
'id_destinataire',
'nom_destinataire',
'prenom_destinataire',
'type_document_destinataire',
'id_document_destinataire',
'email_destinataire',
'id_emetteur',
'nom_emetteur',
'prenom_emetteur',
'type_document_emetteur',
'id_document_emetteur',
'email_emetteur',
'type'
];
}

View File

@ -0,0 +1,53 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
/**
* Class TransmittingNetwork
*
* @property int $id
* @property int|null $id_network
* @property float $balance_compensation
* @property float|null $balance_com
* @property int|null $id_configWallet
*
* @property Network $network
* @property ConfigWallet $config_wallet
*
* @package App\Models
*/
class TransmittingNetwork extends Model
{
protected $table = 'transmitting_networks';
public $timestamps = false;
protected $casts = [
'id_network' => 'int',
'balance_compensation' => 'float',
'balance_com' => 'float',
'id_configWallet' => 'int'
];
protected $fillable = [
'id_network',
'balance_compensation',
'balance_com',
'id_configWallet'
];
public function network()
{
return $this->belongsTo(Network::class, 'id_network');
}
public function config_wallet()
{
return $this->belongsTo(ConfigWallet::class, 'id_configWallet');
}
}

123
app/Models/User.php Normal file → Executable file
View File

@ -1,33 +1,116 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Illuminate\Auth\Authenticatable;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
use Laravel\Lumen\Auth\Authorizable;
class User extends Model implements AuthenticatableContract, AuthorizableContract
/**
* Class User
*
* @property int $id
* @property string $uid
* @property string $firstname
* @property string $lastname
* @property string $phone
* @property string $email
* @property string $user_code
* @property string $numero_carte
* @property Carbon $expiration_date
* @property string $adresse
* @property float $solde
* @property string $encrypted_password
* @property string $salt
* @property string $validation_code
* @property int $active
* @property Carbon $date_modified
* @property Carbon $date_created
* @property int $network_id
* @property int $group_id
* @property float $balance_credit
* @property float $balance_epargne
* @property Carbon|null $date_adhesion
* @property int|null $id_bank_country
* @property string|null $iban
*
* @property Collection|Identification[] $identifications
* @property Collection|WalletsUser[] $wallets_users
*
* @package App\Models
*/
class User extends Model
{
use Authenticatable, Authorizable, HasFactory;
protected $table = 'users';
public $timestamps = false;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email',
protected $casts = [
'solde' => 'float',
'active' => 'int',
'network_id' => 'int',
'group_id' => 'int',
'balance_credit' => 'float',
'balance_epargne' => 'float',
'id_bank_country' => 'int'
];
protected $dates = [
'expiration_date',
'date_modified',
'date_created',
'date_adhesion'
];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = [
'password',
'encrypted_password'
];
protected $fillable = [
'uid',
'firstname',
'lastname',
'phone',
'email',
'user_code',
'numero_carte',
'expiration_date',
'adresse',
'solde',
'encrypted_password',
'salt',
'validation_code',
'active',
'date_modified',
'date_created',
'group_id',
'balance_credit',
'balance_epargne',
'date_adhesion',
'id_bank_country',
'iban'
];
public function identifications()
{
return $this->hasMany(Identification::class, 'id_user');
}
public function wallets_users()
{
return $this->hasMany(WalletsUser::class, 'idUser');
}
public function network()
{
return $this->belongsTo(Network::class, 'network_id');
}
public function bank()
{
return $this->belongsTo(NetworksOperator::class, 'id_bank_country', 'id_operator_country');
}
}

60
app/Models/Wallet.php Executable file
View File

@ -0,0 +1,60 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
/**
* Class Wallet
*
* @property int $id
* @property float $balance_princ
* @property float $balance_com
* @property int $id_networkAgent
* @property Carbon $created_date
*
* @property NetworksAgent $networks_agent
* @property Collection|WalletTransaction[] $wallet_transactions
*
* @package App\Models
*/
class Wallet extends Model
{
protected $table = 'wallets';
public $timestamps = false;
protected $casts = [
'balance_princ' => 'float',
'balance_com' => 'float',
'id_networkAgent' => 'int'
];
protected $dates = [
'created_date'
];
protected $fillable = [
'balance_princ',
'balance_com',
'id_networkAgent',
'created_date'
];
public function networks_agent()
{
return $this->belongsTo(NetworksAgent::class, 'id_networkAgent');
}
public function wallet_transactions()
{
return $this->hasMany(WalletTransaction::class, 'id_wallet');
}
}

View File

@ -0,0 +1,67 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
/**
* Class WalletAgent
*
* @property int $wallet_id
* @property float $balance_princ
* @property float $balance_com
* @property Carbon $created_date
* @property int $networks_agent_id
* @property int $agent_id
* @property string|null $lastname
* @property string|null $codeMembre
* @property string|null $codeParrain
* @property string|null $category
* @property int $network_id
* @property string $network
* @property string|null $currency_code
* @property string|null $transactionNumber
*
* @package App\Models
*/
class WalletAgent extends Model
{
protected $table = 'wallet_agent';
public $incrementing = false;
public $timestamps = false;
protected $casts = [
'wallet_id' => 'int',
'balance_princ' => 'float',
'balance_com' => 'float',
'networks_agent_id' => 'int',
'agent_id' => 'int',
'network_id' => 'int'
];
protected $dates = [
'created_date'
];
protected $fillable = [
'wallet_id',
'balance_princ',
'balance_com',
'created_date',
'networks_agent_id',
'agent_id',
'lastname',
'codeMembre',
'codeParrain',
'category',
'network_id',
'network',
'currency_code',
'transactionNumber'
];
}

View File

@ -0,0 +1,262 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
/**
* Class WalletIlinkTransaction
*
* @property int $id
* @property string $id_transaction
* @property float $montant
* @property float $montant_net_final_country
* @property float $montant_net
* @property string $encrypted_code_retrait
* @property string $code_retrait_salt
* @property int $status_retrait
* @property Carbon $date_retrait
* @property string $id_destinataire
* @property string $type_id_destinataire
* @property int $network_destinataire
* @property string $type_document_destinataire
* @property string $id_document_destinataire
* @property string $nom_destinataire
* @property string $prenom_destinataire
* @property string $nom_emetteur
* @property string $prenom_emetteur
* @property string $email_emetteur
* @property int $network_emetteur
* @property string $type_document_emetteur
* @property string $id_document_emetteur
* @property float $frais
* @property float $taxe
* @property float $part_reseau_emetteur
* @property float $part_reseau_payeur
* @property float $part_reseau_payeur_final_country
* @property string status_reseau_payeur
* @property string $numero_carte
* @property Carbon $expiration_date
* @property int $init_country
* @property int $final_country
* @property float $commission_banque
* @property float $commission_ag
* @property float $commission_sup
* @property float $commission_hyp
* @property float commission_hyp_final_country
* @property int $id_wallet_user
* @property int $id_wallet_ag
* @property int $id_wallet_sup
* @property int $id_wallet_hyp
* @property int $id_wallet_hyp_payeur
* @property int $canceled
* @property int $type
* @property Carbon $date
* @property string pspReference
* @property bool $from_network_emetteur
* @property string|null $id_transaction_network_emetteur
* @property float $montant_commission
*
* @property Country $country
* @property Wallet $wallet
* @property WalletsUser $wallets_user
* @property TypeIlinkTransaction $type_ilink_transaction
* @property Network $network
*
* @package App\Models
*/
class WalletIlinkTransaction extends Model
{
protected $table = 'wallet_ilink_transaction';
public $timestamps = false;
protected $casts = [
'montant' => 'float',
'montant_net_final_country' => 'float',
'montant_net' => 'float',
'status_retrait' => 'int',
'network_destinataire' => 'int',
'network_emetteur' => 'int',
'frais' => 'float',
'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',
'commission_ag' => 'float',
'commission_sup' => 'float',
'commission_hyp' => 'float',
'commission_hyp_final_country' => 'float',
'id_wallet_user' => 'int',
'id_wallet_ag' => 'int',
'id_wallet_sup' => 'int',
'id_wallet_hyp' => 'int',
'id_wallet_hyp_payeur' => 'int',
'canceled' => 'int',
'type' => 'int',
'from_network_emetteur' => 'bool',
'montant_commission' => 'float'
];
protected $dates = [
'date_retrait',
'expiration_date',
'date'
];
protected $fillable = [
'id_transaction',
'montant',
'montant_net_final_country',
'montant_net',
'encrypted_code_retrait',
'code_retrait_salt',
'status_retrait',
'date_retrait',
'id_destinataire',
'type_id_destinataire',
'network_destinataire',
'type_document_destinataire',
'id_document_destinataire',
'nom_destinataire',
'prenom_destinataire',
'nom_emetteur',
'prenom_emetteur',
'email_emetteur',
'network_emetteur',
'type_document_emetteur',
'id_document_emetteur',
'frais',
'taxe',
'part_reseau_emetteur',
'part_reseau_payeur',
'part_reseau_payeur_final_country',
'status_reseau_payeur',
'numero_carte',
'expiration_date',
'init_country',
'final_country',
'commission_banque',
'commission_ag',
'commission_sup',
'commission_hyp',
'commission_hyp_final_country',
'id_wallet_user',
'id_wallet_ag',
'id_wallet_sup',
'id_wallet_hyp',
'id_wallet_hyp_payeur',
'canceled',
'type',
'date',
'pspReference',
'from_network_emetteur',
'id_transaction_network_emetteur',
'montant_commission'
];
public function country()
{
return $this->belongsTo(Country::class, 'final_country');
}
public function wallet()
{
return $this->belongsTo(Wallet::class, 'id_wallet_hyp_payeur');
}
public function wallet_user()
{
return $this->belongsTo(WalletsUser::class, 'id_wallet_user');
}
public function type_ilink_transaction()
{
return $this->belongsTo(TypeIlinkTransaction::class, 'type');
}
public function network()
{
return $this->belongsTo(Network::class, 'network_emetteur');
}
// Regles de validation
//Envoi de cash vers wallet iLink
public function cash_wallet_rules()
{
return [
'user_code'=>'required',
// 'init_country' =>'required|integer|min:0|not_in:0',
// 'final_country' =>'required|integer|min:0|not_in:0',
];
}
public function card_rules()
{
return [
'numero_carte'=>'required',
'cvv'=>'required|size:3',
'expiration_date'=>'required|date_format:m/y|after_or_equal:today',
];
}
public function user_card_rules()
{
return [
'cvv'=>'required|size:3',
];
}
public function cash_cash_rules()
{
return [
'final_country' =>'required|integer|min:0|not_in:0',
'network_destinataire' => 'required|integer|min:0|not_in:0',
'nom_emetteur'=>'required',
'prenom_emetteur'=>'required',
'type_document_emetteur'=>'required',
'id_document_emetteur'=>'required',
'email_emetteur' => 'required',
'nom_destinataire'=>'required',
'prenom_destinataire'=>'required',
'type_document_destinataire'=>'required',
// 'id_document_destinataire'=>'required'
];
}
public function remove_cash_rules(){
return [
'id_transaction' =>'required',
'code_retrait' =>'required|size:16',
];
}
/// User Operation rules
public function send_wallet_wallet_rules(){
return [
'final_country' =>'required|integer|min:0|not_in:0',
'type_document_destinataire'=>'required',
// 'id_document_destinataire'=>'required',
'id_destinataire' =>'required_without:phone_destinataire',
'network_destinataire'=>'required|integer|min:0|not_in:0',
];
}
public function send_wallet_cash_rules(){
return [
'final_country' =>'required|integer|min:0|not_in:0',
'nom_destinataire'=>'required',
'prenom_destinataire'=>'required',
'type_document_destinataire'=>'required',
// 'id_document_destinataire'=>'required',
'id_destinataire' =>'required_without:phone_destinataire',
'network_destinataire'=>'required|integer|min:0|not_in:0',
];
}
}

118
app/Models/WalletTransaction.php Executable file
View File

@ -0,0 +1,118 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
use phpDocumentor\Reflection\Types\Integer;
/**
* Class WalletTransaction
*
* @property int $id
* @property float $montant
* @property string $numCarte
* @property Carbon $expiration_date
* @property float $commission_banque
* @property float $commission_ag
* @property float $commission_sup
* @property float $commission_hyp
* @property string $type
* @property Carbon $date
* @property string $statut
* @property string $result
* @property int $id_wallet
* @property int $id_wallet_sup
* @property int $id_wallet_hyp
* @property string $canceled
*
* @property Wallet $wallet
* @property Wallet $wallet_sup
* @property Wallet $wallet_hyp
*
* @package App\Models
*/
class WalletTransaction extends Model
{
protected $table = 'wallet_transaction';
public $timestamps = false;
protected $casts = [
'montant' => 'float',
'commission_banque' => 'float',
'commission_ag' => 'float',
'commission_sup' => 'float',
'commission_hyp' => 'float',
'id_wallet' => 'int',
'id_wallet_sup' => 'int',
'id_wallet_hyp' => 'int'
];
protected $dates = [
'date',
'expiration_date'
];
protected $fillable = [
'montant',
'numCarte',
'expiration_date',
'commission_banque',
'commission_ag',
'commission_sup',
'commission_hyp',
'type',
'date',
'statut',
'result',
'id_wallet',
'id_wallet_sup',
'id_wallet_hyp',
'canceled'
];
public function wallet()
{
return $this->belongsTo(Wallet::class, 'id_wallet');
}
public function wallet_sup()
{
return $this->belongsTo(Wallet::class, 'id_wallet_sup');
}
public function wallet_hyp()
{
return $this->belongsTo(Wallet::class, 'id_wallet_hyp');
}
// public function getTaxeAttribute($value)
// {
// return ucfirst($value);
// }
//
// public function setTaxeAttribute($value)
// {
// $this->attributes['taxe'] = (int) $value;
// }
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 [
'facade'=>'required|in:front,back',
'montant'=> 'required|numeric|min:0|not_in:0',
'numCarte'=>'required',
'cvv'=>'required_if:facade,front|size:3',
'expiration_date'=>'required_if:facade,front|date_format:m/y|after_or_equal:today',
'type' =>'required|in:credit,debit',
'id_wallet' => 'required|integer|min:0|not_in:0'
];
}
}

View File

@ -0,0 +1,55 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
/**
* Class WalletsUser
*
* @property int $id
* @property float $balance
* @property Carbon $createdAt
* @property int $idUser
*
* @property User $user
* @property Collection|WalletIlinkTransaction[] $wallet_ilink_transactions
*
* @package App\Models
*/
class WalletsUser extends Model
{
protected $table = 'wallets_users';
public $timestamps = false;
protected $casts = [
'balance' => 'float',
'idUser' => 'int'
];
protected $dates = [
'createdAt'
];
protected $fillable = [
'balance',
'createdAt',
'idUser'
];
public function user()
{
return $this->belongsTo(User::class, 'idUser');
}
public function wallet_ilink_transactions()
{
return $this->hasMany(WalletIlinkTransaction::class, 'id_wallet_user');
}
}

View File

@ -103,6 +103,7 @@ $app->register(\SwaggerLume\ServiceProvider::class);
// $app->register(App\Providers\AppServiceProvider::class);
// $app->register(App\Providers\AuthServiceProvider::class);
// $app->register(App\Providers\EventServiceProvider::class);
$app->register(Illuminate\Mail\MailServiceProvider::class);
/*
|--------------------------------------------------------------------------

View File

@ -6,8 +6,10 @@
"type": "project",
"require": {
"php": "^7.3|^8.0",
"brick/money": "^0.5.0",
"darkaonline/swagger-lume": "^8.0",
"guzzlehttp/guzzle": "^7.0",
"illuminate/mail": "^8.16",
"laravel/lumen-framework": "^8.0"
},
"require-dev": {

456
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "2bf434fab805ca0f44c1fb23c59a2a0d",
"content-hash": "9599e5f2b66f8e3833e37809500a54a7",
"packages": [
{
"name": "brick/math",
@ -58,6 +58,58 @@
],
"time": "2020-08-18T23:57:15+00:00"
},
{
"name": "brick/money",
"version": "0.5.0",
"source": {
"type": "git",
"url": "https://github.com/brick/money.git",
"reference": "f922b357dc56f78c398c6cd055fbaa75eaffdbeb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/brick/money/zipball/f922b357dc56f78c398c6cd055fbaa75eaffdbeb",
"reference": "f922b357dc56f78c398c6cd055fbaa75eaffdbeb",
"shasum": ""
},
"require": {
"brick/math": "~0.7.3 || ~0.8.0 || ~0.9.0",
"php": "^7.1|^8.0"
},
"require-dev": {
"brick/varexporter": "~0.2.1",
"ext-dom": "*",
"ext-pdo": "*",
"php-coveralls/php-coveralls": "^2.2",
"phpunit/phpunit": "^7.5.15"
},
"suggest": {
"ext-intl": "Required to format Money objects"
},
"type": "library",
"autoload": {
"psr-4": {
"Brick\\Money\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Money and currency library",
"keywords": [
"brick",
"currency",
"money"
],
"funding": [
{
"url": "https://tidelift.com/funding/github/packagist/brick/money",
"type": "tidelift"
}
],
"time": "2020-08-19T22:52:38+00:00"
},
{
"name": "darkaonline/swagger-lume",
"version": "8.0",
@ -1612,6 +1664,63 @@
"homepage": "https://laravel.com",
"time": "2020-10-27T15:20:30+00:00"
},
{
"name": "illuminate/mail",
"version": "v8.16.1",
"source": {
"type": "git",
"url": "https://github.com/illuminate/mail.git",
"reference": "19f31086c33c355036cb6f0cabff32701583a16f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/illuminate/mail/zipball/19f31086c33c355036cb6f0cabff32701583a16f",
"reference": "19f31086c33c355036cb6f0cabff32701583a16f",
"shasum": ""
},
"require": {
"ext-json": "*",
"illuminate/collections": "^8.0",
"illuminate/container": "^8.0",
"illuminate/contracts": "^8.0",
"illuminate/macroable": "^8.0",
"illuminate/support": "^8.0",
"league/commonmark": "^1.3",
"php": "^7.3|^8.0",
"psr/log": "^1.0",
"swiftmailer/swiftmailer": "^6.0",
"tijsverkoyen/css-to-inline-styles": "^2.2.2"
},
"suggest": {
"aws/aws-sdk-php": "Required to use the SES mail driver (^3.155).",
"guzzlehttp/guzzle": "Required to use the Mailgun mail driver (^6.5.5|^7.0.1).",
"wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)."
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "8.x-dev"
}
},
"autoload": {
"psr-4": {
"Illuminate\\Mail\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Taylor Otwell",
"email": "taylor@laravel.com"
}
],
"description": "The Illuminate Mail package.",
"homepage": "https://laravel.com",
"time": "2020-11-21T14:40:38+00:00"
},
{
"name": "illuminate/pagination",
"version": "v8.16.1",
@ -2177,6 +2286,101 @@
],
"time": "2020-11-17T16:42:41+00:00"
},
{
"name": "league/commonmark",
"version": "1.5.7",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/commonmark.git",
"reference": "11df9b36fd4f1d2b727a73bf14931d81373b9a54"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/commonmark/zipball/11df9b36fd4f1d2b727a73bf14931d81373b9a54",
"reference": "11df9b36fd4f1d2b727a73bf14931d81373b9a54",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"php": "^7.1 || ^8.0"
},
"conflict": {
"scrutinizer/ocular": "1.7.*"
},
"require-dev": {
"cebe/markdown": "~1.0",
"commonmark/commonmark.js": "0.29.2",
"erusev/parsedown": "~1.0",
"ext-json": "*",
"github/gfm": "0.29.0",
"michelf/php-markdown": "~1.4",
"mikehaertl/php-shellcommand": "^1.4",
"phpstan/phpstan": "^0.12",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.2",
"scrutinizer/ocular": "^1.5",
"symfony/finder": "^4.2"
},
"bin": [
"bin/commonmark"
],
"type": "library",
"autoload": {
"psr-4": {
"League\\CommonMark\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Colin O'Dell",
"email": "colinodell@gmail.com",
"homepage": "https://www.colinodell.com",
"role": "Lead Developer"
}
],
"description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and Github-Flavored Markdown (GFM)",
"homepage": "https://commonmark.thephpleague.com",
"keywords": [
"commonmark",
"flavored",
"gfm",
"github",
"github-flavored",
"markdown",
"md",
"parser"
],
"funding": [
{
"url": "https://enjoy.gitstore.app/repositories/thephpleague/commonmark",
"type": "custom"
},
{
"url": "https://www.colinodell.com/sponsor",
"type": "custom"
},
{
"url": "https://www.paypal.me/colinpodell/10.00",
"type": "custom"
},
{
"url": "https://github.com/colinodell",
"type": "github"
},
{
"url": "https://www.patreon.com/colinodell",
"type": "patreon"
},
{
"url": "https://tidelift.com/funding/github/packagist/league/commonmark",
"type": "tidelift"
}
],
"time": "2020-10-31T13:49:32+00:00"
},
{
"name": "monolog/monolog",
"version": "2.1.1",
@ -3071,6 +3275,68 @@
],
"time": "2020-11-26T21:19:40+00:00"
},
{
"name": "swiftmailer/swiftmailer",
"version": "v6.2.3",
"source": {
"type": "git",
"url": "https://github.com/swiftmailer/swiftmailer.git",
"reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/149cfdf118b169f7840bbe3ef0d4bc795d1780c9",
"reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9",
"shasum": ""
},
"require": {
"egulias/email-validator": "~2.0",
"php": ">=7.0.0",
"symfony/polyfill-iconv": "^1.0",
"symfony/polyfill-intl-idn": "^1.10",
"symfony/polyfill-mbstring": "^1.0"
},
"require-dev": {
"mockery/mockery": "~0.9.1",
"symfony/phpunit-bridge": "^3.4.19|^4.1.8"
},
"suggest": {
"ext-intl": "Needed to support internationalized email addresses",
"true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "6.2-dev"
}
},
"autoload": {
"files": [
"lib/swift_required.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Chris Corbyn"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Swiftmailer, free feature-rich PHP mailer",
"homepage": "https://swiftmailer.symfony.com",
"keywords": [
"email",
"mail",
"mailer"
],
"time": "2019-11-12T09:31:26+00:00"
},
{
"name": "symfony/console",
"version": "v5.1.8",
@ -3159,6 +3425,68 @@
],
"time": "2020-10-24T12:01:57+00:00"
},
{
"name": "symfony/css-selector",
"version": "v5.1.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
"reference": "6cbebda22ffc0d4bb8fea0c1311c2ca54c4c8fa0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/css-selector/zipball/6cbebda22ffc0d4bb8fea0c1311c2ca54c4c8fa0",
"reference": "6cbebda22ffc0d4bb8fea0c1311c2ca54c4c8fa0",
"shasum": ""
},
"require": {
"php": ">=7.2.5"
},
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\CssSelector\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Jean-François Simon",
"email": "jeanfrancois.simon@sensiolabs.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony CssSelector Component",
"homepage": "https://symfony.com",
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2020-10-24T12:01:57+00:00"
},
{
"name": "symfony/deprecation-contracts",
"version": "v2.2.0",
@ -3908,6 +4236,83 @@
],
"time": "2020-10-23T14:02:19+00:00"
},
{
"name": "symfony/polyfill-iconv",
"version": "v1.20.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-iconv.git",
"reference": "c536646fdb4f29104dd26effc2fdcb9a5b085024"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/c536646fdb4f29104dd26effc2fdcb9a5b085024",
"reference": "c536646fdb4f29104dd26effc2fdcb9a5b085024",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"suggest": {
"ext-iconv": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.20-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Iconv\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for the Iconv extension",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"iconv",
"polyfill",
"portable",
"shim"
],
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2020-10-23T14:02:19+00:00"
},
{
"name": "symfony/polyfill-intl-grapheme",
"version": "v1.20.0",
@ -4991,6 +5396,55 @@
],
"time": "2020-10-24T12:03:25+00:00"
},
{
"name": "tijsverkoyen/css-to-inline-styles",
"version": "2.2.3",
"source": {
"type": "git",
"url": "https://github.com/tijsverkoyen/CssToInlineStyles.git",
"reference": "b43b05cf43c1b6d849478965062b6ef73e223bb5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/b43b05cf43c1b6d849478965062b6ef73e223bb5",
"reference": "b43b05cf43c1b6d849478965062b6ef73e223bb5",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-libxml": "*",
"php": "^5.5 || ^7.0 || ^8.0",
"symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.2.x-dev"
}
},
"autoload": {
"psr-4": {
"TijsVerkoyen\\CssToInlineStyles\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Tijs Verkoyen",
"email": "css_to_inline_styles@verkoyen.eu",
"role": "Developer"
}
],
"description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.",
"homepage": "https://github.com/tijsverkoyen/CssToInlineStyles",
"time": "2020-07-13T06:12:54+00:00"
},
{
"name": "vlucas/phpdotenv",
"version": "v5.2.0",

View File

@ -4,4 +4,84 @@ return [
'unexpected_error' => 'Unexpected error. Try later',
'validation_error' => 'The field :field has :validation',
'service_unavailable' => 'Service unavailable',
'invalid_cvv' => 'Invalid CVV',
'compression_failed' => 'Image compression failed!',
'identification_carried_out' => 'Identification already carried out',
'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 recipient wallet code does not exist',
'insufficient_balance' => 'The balance is insufficient to complete this transaction',
'no_ilink_network' => 'Sorry, there is no iLink World network in your country',
'wallet_country_not_match' => 'This recipient wallet code is not registered in the country :country',
'no_bank_card_attached' => 'No bank card is attached to your account',
'transaction_not_exist' => 'This transaction does not exist',
'withdrawal_already_made' => 'Withdrawal already made',
'invalid_withdrawal_code' => 'Invalid withdrawal code',
'incorrect_withdrawal_amount' => 'Incorrect withdrawal amount',
'operation_cannot_performed_in_country' => 'This operation cannot be performed in this country',
'withdrawal_network_unauthorized' => 'This withdrawal cannot be made in this network.
Paying network : :network :country',
'user_identification_required' => 'User identification is required to continue the operation',
'validation_user_identification_required' => 'Validation of user identification is required to continue the operation',
'incorrect_net_amount' => 'Net amount is less than zero',
'agent_unauthorized' => 'This agent cannot make this withdrawal',
'sponsor_identification_required' => 'Sponsor :id identification is required to continue the operation',
'validation_sponsor_identification_required' => 'Validation of sponsor :id identification is required to continue the operation',
'not_group_sponsor' => 'You are not a sponsor of this group',
'group_already_active' => 'This group is already active',
'sponsor_belongs_to_group' => 'Sponsor :id already belongs to a group',
'treated_group_demand' => 'Group validation request already processed',
'group_credit_limit_must_be_between' => 'The credit limit must be between :min_limit and :max_limit',
'sponsor_not_registered_in_same_country' => 'Sponsor :id is not registered in your country',
'sponsor_not_found' => 'This sponsor :id code does not exist',
'nano_credit_not_available' => 'Nano credit is not available in your country',
'user_belongs_to_group' => 'You already belong to a group',
'group_not_active' => 'This group is not active. Talk to your sponsor',
'identification_required' => 'Your identification is required for this operation',
'validation_identification_required' => 'Your identification must be validated in one of our points of sale',
'belongs_to_group' => 'You already belong to a group',
'not_registered_in_same_country' => 'You are not registered in the same country',
'not_group_creator' => 'You are not the creator of this group',
'cannot_be_sponsor' => 'You cannot be a sponsor of your group',
'sponsors_must_be_unique' => "Each of the 3 sponsors must be unique",
'not_belongs_to_any_group' => 'You do not belong to any group',
'your_group_not_active' => "Your group is not active. Talk to your sponsor",
'your_group_not_valid' => "Your group is not valid. Talk to your sponsor",
'nano_credit_amount_must_be_between_the_group_limit' => "The amount of credit requested must be between :min_limit and :max_limit",
"nano_credit_not_found" => "This nano credit request does not exist",
"nano_credit_not_individual" => "This nano credit request is not individual",
"last_nano_credit_not_refunded" => "Your last nano credit request was not refunded",
"nano_credit_already_refunded" => "Repayment of credit already made",
"sponsor_code_not_match" => "This sponsor code does not match to this group",
"user_already_member_of_group" => "This user is already a member of a group",
"not_authorized_to_process_request" => "You are not authorized to process this request",
"savings_already_broken" => "Savings already broken",
"group_not_allow_to_borrow" => "The group is not allowed to borrow",
"borrowing_capacity_exceeded" => "The borrowing capacity is exceeded",
"savings_not_found" => "This savings does not exist",
"regulations_limits_amount_transaction" => "You can make a transaction of :amount .",
"national_daily_regulations_limits_reached" => "You have reached your national daily limit.",
"national_weekly_regulations_limits_reached" => "You have reached your national weekly limit.",
"national_monthly_regulations_limits_reached" => "You have reached your national monthly limit.",
"international_daily_regulations_limits_reached" => "You have reached your international daily limit.",
"international_weekly_regulations_limits_reached" => "You have reached your international weekly limit.",
"international_monthly_regulations_limits_reached" => "You have reached your international monthly limit.",
"forbidden" => 'Forbidden',
"request_already_processed" => "This request has already been processed",
"recipient_network_not_configured" => "This recipient network is not configured in our system",
"recipient_network_not_authorized" => "This recipient network is not authorized to receive transactions in our system",
"bank_not_associated_with_network" => "This bank is not associated with your network",
"transmitter_network_not_configured" => "This transmitter network is not configured in our system",
"transmitter_network_not_authorized" => "This sender network is not authorized to receive transactions in our system",
"transmitter_network_not_recognized" => 'This network is not recognized as being a sender network of the recipient network',
"invalid_iban" => "The IBAN code is invalid",
"country_not_match_iban" => "The IBAN code does not correspond to the country of this bank",
"bank_not_match_iban" => "The IBAN code does not correspond to this bank",
"not_banking_operator" => "This operator is not a banking operator",
"operator_not_associated_with_network" => "This operator is not associated with your network",
"not_matching_operator" => "This operator is not a :type_operator",
"wallet_not_linked_to_bank_account" => "Your wallet is not linked to a bank account",
"update_banking_information" => "Update your banking information",
"wallet_already_linked_to_bank_account" => "Your wallet is already linked to your bank account",
];

View File

@ -1,4 +1,314 @@
<?php
return [
'empty_com_balance' => 'Commission balance is empty',
'treated_demand' => 'Credit request already processed',
'canceled_demand' => 'Canceled credit request',
'princ_balance_inf_to_demand_amount' => 'Your main balance is less than the amount of the request, do you want to change the amount ?',
'new_wallet_added' => 'New wallet added',
'success_treated_demand' => 'Request successfully processed',
'canceled_credit_request' => 'Canceled credit request',
'canceled_transaction' => 'Canceled transaction',
'successful_transaction' => 'Successful transaction',
'incorrect_user_password' => 'Incorrect user password',
'successful_identification'=>'User :name has been successfully identified.',
'user_identificated' => 'User already identificated',
'user_not_identificated' => 'User is not identificated',
'validated_identification'=>'Validated identification',
'identification_already_validated'=>'Identification already validated',
'successful_card_attachment' => 'Attachment of your card made',
'successful_identification_message' => 'Hi :name,
Your identification has been taken into account. Contact an iLink World agent with your ID to validate your identity.
Regards,
iLinkWorld team.',
'validated_identification_message' => 'Your identification is confirmed!
You can now use all iLink World services.
Welcome to the iLink World family !!!
Regards,
ILinkWorld team.',
'successful_agent_deposit_wallet_ilink' => 'Depositing money to an iLink World account
Transaction information :
- Transaction ID : :id_transaction
- Amount : :amount
- Fees and Taxes : :fees
- Country of departure : :init_country
- Net amount : :net_init
- Country of destination : :final_country
- Net amount : :net_final
- Recipient account : :user_code',
'successful_agent_deposit_other_wallet' => 'Depositing money to a different network account
Transaction information :
- Transaction ID : :id_transaction
- Amount : :amount
- Fees and Taxes : :fees
- Country of departure : :init_country
- Issuer names : :sender_name
- Net amount : :net_init
- Country of destination : :final_country
- Paying network : :network :final_country
- Recipient names : :receiver_name
- Net amount : :net_final
- Recipient account : :receiver_code',
'successful_agent_send_cash'=>'Money sent
Transaction information:
- Transaction ID : :id_transaction
- Amount : :amount
- Fees and Taxes : :fees
- Country of departure : :init_country
- Issuer names : :sender_name
- Net amount : :net_init
- Country of destination : :final_country
- Paying network : :network :final_country
- Recipient names : :receiver_name
- Net amount : :net_final
- Withdrawal code : :code',
'successful_user_send_to_wallet' => 'Sending money account to account.
Transaction information :
- ID : :id_transaction
- Amount of the transaction : :amount
- Fees + Taxes : :fees
- Country of departure : :init_country
- Issuer account : :sender_code
- Net amount : :net_init
- Country of destination : :final_country
- Paying network : :network :final_country
- Recipient account : :receiver_code
- Net amount : :net_final',
'sent_by_mail' => '
This message was sent to the sender\'s email',
'successful_user_send_to_cart' => 'Sending money to a visa card made.
Transaction information :
- ID : :id_transaction
- Amount of the transaction : :amount
- Fees : :fees
- Net shipping amount : :net
- Issuer account :sender_code
- Card number: :cart_number',
'successful_user_send_to_cash' => 'Sending money from account to cash
Transaction information :
- Number: :id_transaction
- Amount of the transaction: :amount
- Fees and Taxes: :fees
- Country of departure: :init_country
- Issuer account: :sender_code
- Issuer names : :sender_name
- Net amount: :net_init
- Country of destination: :final_country
- Paying network : :network :final_country
- Recipient names: :receiver_name
- Net amount: :net_final
- Withdrawal code: :code ',
'successful_user_remove_from_wallet_to_cash'=>'Personal money withdrawal
Transaction information:
- Number : :id_transaction
- Amount of the transaction : :amount
- Fees and Taxes: :fees
- Country of departure: :init_country
- Net withdrawal amount : :net
- Country of destination: :init_country
- Issuer account : :sender_code
- Withdrawal code : :code',
'successful_user_remove_from_cart_to_wallet'=>'Withdrawing money from your card to your account
Transaction information:
- Number : :id_transaction
- Amount of the transaction : :amount
- Fees : :fees
- Total withdrawal amount : :total
- Recipient account : :sender_code
- Card number : :cart_number',
'successful_user_remove_from_cart_to_cash' => 'Withdrawing money from your card to cash
Transaction information :
- Number: :id_transaction
- Amount of the transaction: :amount
- Fees: :fees
- Country of departure: :init_country
- Total withdrawal amount: :total
- Country of destination: :init_country
- User code : :sender_code
- Card number : :cart_number
- Withdrawal code : :code',
'successful_agent_remove_cash' => 'Withdrawal of money from a geolocated agent
Transaction information :
- Number : :id_transaction
- Country of departure : :init_country
- Issuer names : :sender_name
- Country of destination : :final_country
- Recipient names: :receiver_name
- Withdrawal amount : :amount
- Withdrawal transaction number : :id_transaction_retrait
- Withdrawal code : :code',
'successful_user_group_created' => 'The group was created successfully. Awaiting validation from the 3 sponsors to activate it',
'successful_group_validation' => 'Group validation successful. Only :count validation remaining|Group validation successful. Only :count validations remaining',
'successful_identification_modification' => 'Successful identification modification',
'successful_identification_modification_message' => 'Hi :name,
Your new identification has been taken into account. Contact an iLink World agent with your ID to validate your identity.
Regards,
iLinkWorld team.',
'successful_user_group_modificated' => 'The group has been modified successfully. Awaiting validation from new sponsors to activate it',
'successful_group_membership_request' => "Your membership request has been sent to the sponsor",
'successful_user_group_deleted' => 'The group will be deleted after validation of the 3 sponsors',
'successful_group_deleting' => 'Group deletion accepted. More than :count delete validation remaining | Group delete accepted. More than :count remaining delete validations',
'successful_refused_group_validation' => 'Group validation refused',
'successful_refused_group_deleting' => 'Group deletion refused',
'successful_user_group_nano_credit_demand' => "Nanocredit application
Request Information:
- Request number: :id_demand
- Type of deposit: Group
- Credit amount: :amount
- Interests : :fees
- Taxes : :tax
- Net amount received: :net
- Duration (in months) : :duration
- Redemption date: :date
NB: The reimbursement process is automatic on the due date if the reimbursement is not initiated",
'successful_nano_credit_demand' => 'Successful nano credit application',
'successful_user_individual_nano_credit_demand' => "Nanocredit application
Request Information:
- Request number: :id_demand
- Type of deposit: Individual
- Credit amount: :amount
- Interests : :fees
- Taxes : :tax
- Net amount to be collected: :net
- Duration (in months) : :duration
Go to a geolocated agent who agrees to back you up by validating your credit request",
'successful_guarantee_user_individual_nano_credit_demand' => "Guaranteed nanocredit request
Request Information:
- Request number: :id_demand
- Type of deposit: Individual
- Credit amount: :amount
- Interests : :fees
- Taxes : :tax
- Net amount received: :net
- Duration (in months) : :duration
- Redemption date: :date
- Agent names: :agent_name
- Agent code: :code_agent",
'successful_guarantee_agent_individual_nano_credit_demand' => "Guaranteed nanocredit request
Request Information:
- Request number: :id_demand
- Type of deposit: Individual
- Credit amount: :amount
- Interests : :fees
- Taxes : :tax
- Net amount received: :net
- Duration (in months) : :duration
- Redemption date: :date
- Client names: :user_name
- Client code: :code_user
NB: The reimbursement process is automatic on the due date if the reimbursement is not initiated",
'successful_guarantee_nano_credit_demand' => 'Guaranteed nanocredit request',
'successful_nano_credit_refunded' => 'Nano credit repayment made',
'successful_nano_credit_partially_refunded' => 'Partially completed nano credit repayment',
'failed_nano_credit_refunded' => 'Repayment of failed nano credit',
'successful_nano_credit_demand_refunded' => "Nano credit refunded
Request Information:
- Request number: :id_demand
- Amount of credit repaid : :amount
- Interests : :fees
- Taxes : :tax
- Capital : :net",
'successful_accepted_group_membership_request' => "Membership request accepted",
'successful_canceled_group_membership_request' => "Membership request refused",
'successful_nano_credit_sent_to_hypervisor' => "Your request has been sent to your network hypervisor. You will receive the credit only after validation",
'successful_accepted_nano_credit_request' => "Nano credit request accepted",
'successful_canceled_nano_credit_request' => "Nano credit request refused",
"successful_saving" => "Successful savings",
"successful_blocked_saving_details" => "
Savings Information :
- Savings number : :id_saving
- Type : :type
- Amount at cassation : :amount
- Interests : :fees
- Taxes : :tax
- Net amount saved : :net
- Duration (in months) : :duration
- End date : :date",
"successful_simple_saving_details" => "
Savings Information :
- Savings number : :id_saving
- Type : :type
- Amount at cassation : :amount
- Interests : :fees
- Taxes : :tax
- Net amount saved : :net",
"successful_broken_saving" => "Broken savings",
"reload_your_account" => "The repayment of nano credit failed for insufficient balance, please recharge your account",
"successful_password_update" => "Your password has been updated successfully.",
"your_new_password" => "Your new password is: password.",
"password_update" => "Update your password",
"wallet_incoming_payment" => "Payment entering your wallet",
"wallet_incoming_payment_message" => "
You have received a payment entering your wallet
Transaction Information:
- Number: :id_transaction
- Amount: :amount
- Country of departure: :init_country
- Transmitter network: :network: final_country
- Issuer account: :sender_code
- Name of the sender: :sender_name
- Country of destination: :final_country
- Recipient account: :receiver_code",
"cash_incoming_payment" => "Incoming payment in cash.",
"cash_incoming_payment_message" => "You have received a cash payment.
Transaction Information:
- Transaction ID: :id_transaction
- Amount: :amount
- Country of departure: :init_country
- Transmitter network: :network: final_country
- Name of the sender: :sender_name
- Country of destination: :final_country
- Recipient's names: :receiver_name
- Collection code: :code",
'successful_user_send_to_bank' => 'Sending money from your account to the bank
Transaction Information:
- Number: :id_transaction
- Amount of the transaction: :amount
- Fees: :fees
- Net shipping amount:: net
- Issuer account: :sender_code
- Bank : :bank :country
- IBAN: :iban',
'successful_user_payment_of_operator' => "Payment of an invoice to an operator
Transaction Information:
- Number : :id_transaction
- Amount of the transaction : :amount
- Fees : :fees
- Net amount paid : :net
- Issuer account : :sender_code
- Operator : :operator
- Type of operator : :type_operator
- Invoice number : :invoice_number",
'successful_bank_account_attachment' => 'Connection of your bank account completed',
'successful_user_remove_from_bank_to_wallet' => 'Withdrawal from the bank to the wallet
Transaction Information:
- Number: :id_transaction
- Amount of the transaction: :amount
- Fees: :fees
- Net shipping amount:: net
- Issuer account: :sender_code
- Bank : :bank :country
- IBAN: :iban',
'successful_agent_send_from_cash_to_bank' => "Send money in cash to the bank
Transaction Information:
- Number : :id_transaction
- Amount of the transaction : :amount
- Fees : :fees
- Net shipping amount : :net
- Agent account : :sender_code
- Name of the sender : :sender_name
- Recipient's names : :receiver_name
- IBAN of the recipient : :iban
- Bank : :bank :country",
'successful_bank_account_attachment_taken' => 'Your request to link your bank account has been taken into account, you will receive a confirmation email as soon as the bank has validated your IBAN code',
];

View File

@ -5,5 +5,83 @@ return [
'validation_error' => 'Le champ :field a :validation',
'service_unavailable' => 'Service non disponible',
'invalid_cvv' => 'CVV invalide',
'compression_failed' => 'Échec de la compression d\'image',
'identification_carried_out' => 'Identification déjà éffectuée',
'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 wallet destinataire n\'existe pas',
'insufficient_balance' => 'Le solde est insuffisant pour effectuer cette transaction',
'no_ilink_network' => 'Désolé , il n\'existe pas de reseau iLink World dans votre pays',
'wallet_country_not_match' => 'Ce code wallet destinataire n\'est pas enregistré dans le pays :country',
'no_bank_card_attached' => 'Aucune carte bancaire n\'est rattachée à votre compte',
'transaction_not_exist' => 'Cette transaction n\'existe pas',
'withdrawal_already_made' => 'Retrait déjà éffectué',
'invalid_withdrawal_code' => 'Code de retrait invalide',
'incorrect_withdrawal_amount' => 'Montant de retrait incorrect',
'operation_cannot_performed_in_country' => 'Cette operation ne peut pas etre effectuée dans ce pays',
'withdrawal_network_unauthorized' => 'Ce retrait ne peut etre effectué dans ce reseau.
Réseau payeur : :network :country',
'user_identification_required' => 'L\'identification de l\'utilisateur est requise pour continuer l\'operation',
'validation_user_identification_required' => 'La validation de l\'identification de l\'utilisateur est requise pour continuer l\'operation',
'incorrect_net_amount' => 'Le montant net est inférieur à zéro',
'agent_unauthorized' => 'Cet agent ne peut pas effectuer ce retrait',
'sponsor_identification_required' => 'L\'identification du sponsor :id est requise pour continuer l\'operation',
'validation_sponsor_identification_required' => 'La validation de l\'identification du sponsor :id est requise pour continuer l\'operation',
'not_group_sponsor' => 'Vous n\'êtes pas un sponsor de ce groupe',
'group_already_active' => 'Ce groupe est déjà actif',
'sponsor_belongs_to_group' => 'Sponsor :id appartient déjà à un groupe',
'treated_group_demand' => 'Demande de validation de groupe déjà traitée',
'group_credit_limit_must_be_between' => 'La limite de crédit doit être comprise entre :min_limit et :max_limit',
'sponsor_not_registered_in_same_country' => 'Sponsor :id n\'est pas enregistré dans votre pays',
'sponsor_not_found' => 'Ce code sponsor :id n\'existe pas',
'nano_credit_not_available' => 'Le nano credit n\'est pas disponible dans votre pays',
'user_belongs_to_group' => 'Vous appartenez déjà à un groupe',
'group_not_active' => 'Ce groupe est n\'est pas actif. Adressez-vous à votre sponsor',
'identification_required' => 'Votre identification est requise pour cette opération',
'validation_identification_required' => 'Votre identification doit être validée dans un de nos points de vente',
'belongs_to_group' => 'Vous appartenez déjà à un groupe',
'not_registered_in_same_country' => 'Vous n\'êtes pas enregistré dans le meme pays',
'not_group_creator' => 'Vous n\'êtes pas le createur de ce groupe',
'cannot_be_sponsor' => 'Vous ne pouvez pas être sponsor de votre groupe',
'sponsors_must_be_unique' => "Chacun des 3 sponsors doit etre unique",
'not_belongs_to_any_group' => "Vous n'appartennez à aucun groupe",
'your_group_not_active' => "Votre groupe n'est pas actif. Adressez-vous à votre sponsor",
'your_group_not_valid' => "Votre groupe n'est pas valide. Adressez-vous à votre sponsor",
'nano_credit_amount_must_be_between_the_group_limit' => "Le montant du crédit demandé doit être compris entre :min_limit et :max_limit",
"nano_credit_not_found" => "Cette demande de nano crédit n'existe pas",
"nano_credit_not_individual" => "Cette demande de nano crédit n'est pas individuelle",
"last_nano_credit_not_refunded" => "Votre derniere demande de nano crédit n'a pas été remboursée",
"nano_credit_already_refunded" => "Remboursement de crédit deja effectué",
"sponsor_code_not_match" => "Ce code sponsor ne correspond pas à ce groupe",
"user_already_member_of_group" => "Cet utilisateur est déjà membre d'un groupe",
"not_authorized_to_process_request" => "Vous n'êtes pas autorisé à traiter cette requête",
"savings_already_broken" => "Épargne déjà cassée",
"group_not_allow_to_borrow" => "Le groupe n'a pas le droit d'emprunter",
"borrowing_capacity_exceeded" => "La capacité d'emprunt est dépassée",
"savings_not_found" => "Cette épargne n'existe pas",
"regulations_limits_amount_transaction" => "Vous pouvez effectuer une transaction de :amount .",
"national_daily_regulations_limits_reached" => "Vous avez atteint votre limite journalière nationale.",
"national_weekly_regulations_limits_reached" => "Vous avez atteint votre limite hebdomadaire nationale.",
"national_monthly_regulations_limits_reached" => "Vous avez atteint votre limite mensuelle nationale.",
"international_daily_regulations_limits_reached" => "Vous avez atteint votre limite journalière internationale.",
"international_weekly_regulations_limits_reached" => "Vous avez atteint votre limite hebdomadaire internationale.",
"international_monthly_regulations_limits_reached" => "Vous avez atteint votre limite mensuelle internationale.",
"forbidden" => "Interdit d'access",
"request_already_processed" => "Cette requete a déja ete traitée",
"recipient_network_not_configured" => "Ce reseau destinataire n'est pas configuré dans notre systeme",
"recipient_network_not_authorized" => "Ce reseau destinataire n'est pas autorise à recevoir des transactions dans notre systeme",
"bank_not_associated_with_network" => "Cette banque n'est pas associée à votre réseau",
"transmitter_network_not_configured" => "Ce reseau emetteur n'est pas configuré dans notre systeme",
"transmitter_network_not_authorized" => "Ce reseau emetteur n'est pas autorisé à recevoir des transactions dans notre systeme",
"transmitter_network_not_recognized" => "Ce réseau n'est pas reconnu comme etant un réseau emetteur du reseau destinataire",
"invalid_iban" => "Le code IBAN est invalide",
"country_not_match_iban" => "Le code IBAN ne correspond pas au pays cette banque",
"bank_not_match_iban" => "Le code IBAN ne correspond à cette banque",
"not_banking_operator" => "Cet opérateur n'est pas un opérateur bancaire",
"operator_not_associated_with_network" => "Cette operateur n'est pas associé à votre réseau",
"not_matching_operator" => "Cet opérateur n'est pas un :type_operator",
"wallet_not_linked_to_bank_account" => "Votre wallet n'est pas rattaché à un compte bancaire",
"update_banking_information" => "Mettez à jour vos informations bancaires",
"wallet_already_linked_to_bank_account" => "Votre wallet est déjà rattaché à votre compte bancaire",
];

View File

@ -1,4 +1,315 @@
<?php
return [
'empty_com_balance' => 'Solde de commission est vide',
'treated_demand' => 'Demande de crédit deja traitée',
'canceled_demand' => 'Demande de credit annulée',
'princ_balance_inf_to_demand_amount' => 'Votre solde principal est inférieur au montant de la demande, voulez vous modifier le montant ?',
'new_wallet_added' => 'Nouveau wallet ajouté',
'success_treated_demand' => 'Demande traitée avec succès',
'canceled_credit_request' => 'Demande de crédit annulée',
'canceled_transaction' => 'Transaction annulée',
'successful_transaction' => 'Transaction réussie',
'incorrect_user_password' => 'Mot de passe utilisateur incorrect',
'successful_identification' => 'L\'utilisateur :name a été identifié avec succes',
'validated_identification' => 'Identification validée',
'user_identificated' => 'Utilisateur déjà identifié',
'user_not_identificated' => 'Utilisateur non identifié',
'identification_already_validated' => 'Identification deja validée',
'successful_card_attachment' => 'Rattachement de votre carte effectuée',
'successful_identification_message' => 'Salut :name,
Votre identification a été prise en compte . Rapprochez vous auprès d\'un agent iLink World muni de votre pièce d\'identité pour faire valider de votre identité.
Cordialement,
Equipe iLinkWorld.',
'validated_identification_message' => 'Votre identification est confirmée !
Vous pouvez desormais utiliser tous les services de iLink World.
Bienvenue dans la famille iLink World !!!
Cordialement,
Equipe iLinkWorld.',
'successful_agent_deposit_wallet_ilink' => 'Dépot d\'argent vers un compte iLink World
Informations de la transaction :
- Transaction ID : :id_transaction
- Montant : :amount
- Frais et Taxes : :fees
- Pays de départ : :init_country
- Montant net : :net_init
- Pays de destination : :final_country
- Montant net : :net_final
- Compte destinataire : :user_code',
'successful_agent_deposit_other_wallet' => 'Dépot d\'argent vers un compte autre réseau
Informations de la transaction :
- Transaction ID : :id_transaction
- Montant : :amount
- Frais et Taxes : :fees
- Pays de départ : :init_country
- Noms de l\'emetteur : :sender_name
- Montant net : :net_init
- Pays de destination : :final_country
- Réseau payeur : :network :final_country
- Noms du destinataire : :receiver_name
- Montant net : :net_final
- Compte destinataire : :receiver_code',
'successful_agent_send_cash' => 'Envoi d\'argent effectué
Informations de la transaction :
- Transaction ID : :id_transaction
- Montant : :amount
- Frais et Taxes : :fees
- Pays de départ : :init_country
- Noms de l\'emetteur : :sender_name
- Montant net : :net_init
- Pays de destination : :final_country
- Réseau payeur : :network :final_country
- Noms du destinataire : :receiver_name
- Montant net : :net_final
- Code de retrait : :code',
'successful_user_send_to_wallet' => 'Envoi d\'argent compte à compte
Informations de la transaction :
- Numéro : :id_transaction
- Montant : :amount
- Frais et Taxes : :fees
- Pays de départ : :init_country
- Compte émetteur : :sender_code
- Montant net : :net_init
- Pays de destination : :final_country
- Réseau payeur : :network :final_country
- Compte destinataire : :receiver_code
- Montant net : :net_final',
'sent_by_mail' => '
Ce message a été envoyé dans le mail de l\'émetteur',
'successful_user_send_to_cart' => 'Envoi d\'argent de votre compte vers votre carte visa
Informations de la transaction :
- Numéro : :id_transaction
- Montant de la transaction : :amount
- Frais : :fees
- Montant net d\'envoi: :net
- Compte émetteur : :sender_code
- N︒ carte destinataire : :cart_number',
'successful_user_send_to_cash' => 'Envoi d\'argent compte à cash
Informations de la transaction :
- Numéro : :id_transaction
- Montant de la transaction : :amount
- Frais et Taxes : :fees
- Pays de départ : :init_country
- Compte émetteur : :sender_code
- Noms de l\'emetteur : :sender_name
- Montant net : :net_init
- Pays de destination : :final_country
- Réseau payeur : :network :final_country
- Noms du destinataire : :receiver_name
- Montant net : :net_final
- Code de retrait : :code',
'successful_user_remove_from_wallet_to_cash'=>'Retrait d\'argent personnel
Informations de la transaction :
- Numéro : :id_transaction
- Montant de la transaction : :amount
- Frais et Taxes: :fees
- Pays de départ : :init_country
- Montant net de retrait: :net
- Pays de destination : :init_country
- Compte émetteur : :sender_code
- Code de retrait : :code',
'successful_user_remove_from_cart_to_wallet'=>'Retrait d\'argent de votre carte vers votre compte
Informations de la transaction :
- Numéro : :id_transaction
- Montant de la transaction : :amount
- Frais : :fees
- Montant total de retrait: :total
- Compte destinataire : :sender_code
- Numero de la carte : :cart_number',
'successful_user_remove_from_cart_to_cash' => 'Retrait d\'argent de votre carte vers cash
Informations de la transaction :
- Numéro : :id_transaction
- Montant de la transaction : :amount
- Frais : :fees
- Pays de départ : :init_country
- Montant total de retrait: :total
- Pays de destination : :final_country
- Code utilisateur : :sender_code
- Numero de la carte : :cart_number
- Code de retrait : :code',
'successful_agent_remove_cash' => 'Retrait d\'argent chez un agent géolocalisé
Informations de la transaction :
- Numéro : :id_transaction
- Pays de départ : :init_country
- Noms de l\'emetteur : :sender_name
- Pays de destination : :final_country
- Noms du destinataire : :receiver_name
- Montant de retrait : :amount
- Numero de transaction de retrait : :id_transaction_retrait
- Code de retrait : :code',
'successful_user_group_created' => 'Le groupe a été crée avec succes. En attente de validation des 3 sponsors pour l\'activer',
'successful_group_validation' => 'Validation du groupe réussie. Plus que :count validation restante|Validation du groupe réussie. Plus que :count validations restantes',
'successful_identification_modification' => 'Modification de l\'identification réussie',
'successful_identification_modification_message' => 'Salut :name,
Votre nouvelle identification a bien été bien prise en compte. Rapprochez vous auprès d\'un agent iLink World muni de votre pièce d\'identité pour faire valider de votre identité.
Cordialement,
Equipe iLinkWorld.',
'successful_user_group_modificated' => 'Le groupe a été modifié avec succes. En attente de validation des nouveaux sponsors pour l\'activer',
'successful_group_membership_request' => "Votre demande d'adhésion a été envoyé au sponsor",
'successful_user_group_deleted' => 'Le groupe sera supprimé après validation des 3 sponsors',
'successful_group_deleting' => 'Suppression du groupe acceptée. Plus que :count validation de suppression restante|Suppression du groupe acceptée. Plus que :count validations de suppression restantes',
'successful_refused_group_validation' => 'Validation du groupe refusée',
'successful_refused_group_deleting' => 'Suppression du groupe refusée',
'successful_user_group_nano_credit_demand' => "Demande de nano crédit
Informations de la demande :
- Numéro de la demande : :id_demand
- Type de caution : Groupe
- Montant du crédit : :amount
- Intérêts : :fees
- Taxes : :tax
- Montant net percu: :net
- Duréé (en mois) : :duration
- Date de remboursement : :date
NB: Le processus de remboursement est automatique à la date d'échéance si le remboursement n'est pas initié",
'successful_nano_credit_demand' => 'Demande de nano crédit réussie',
'successful_user_individual_nano_credit_demand' => "Demande de nano crédit
Informations de la demande :
- Numéro de la demande : :id_demand
- Type de caution : Individuel
- Montant du crédit : :amount
- Intérêts : :fees
- Taxes : :tax
- Montant net à percevoir : :net
- Duréé (en mois) : :duration
Rendez vous chez un agent geolocalisé qui accepte de vous cautionner en validant votre demande de crédit",
'successful_guarantee_user_individual_nano_credit_demand' => "Demande de nano crédit cautionnée
Informations de la demande :
- Numéro de la demande : :id_demand
- Type de caution : Individuel
- Montant du crédit : :amount
- Intérêts : :fees
- Taxes : :tax
- Montant net percu : :net
- Duréé (en mois) : :duration
- Date de remboursement : :date
- Noms de l'agent : :agent_name
- Code de l'agent : :code_agent",
'successful_guarantee_agent_individual_nano_credit_demand' => "Demande de nano crédit cautionnée
Informations de la demande :
- Numéro de la demande : :id_demand
- Type de caution : Individuel
- Montant du crédit : :amount
- Intérêts : :fees
- Taxes : :tax
- Montant net à percevoir : :net
- Duréé (en mois) : :duration
- Date de remboursement : :date
- Noms du client : :user_name
- Code du client : :code_user
NB: Le processus de remboursement est automatique à la date d'échéance si le remboursement n'est pas initié",
'successful_guarantee_nano_credit_demand' => 'Demande de nano crédit cautionnée',
'successful_nano_credit_refunded' => 'Remboursement de nano crédit effectué',
'successful_nano_credit_partially_refunded' => 'Remboursement de nano crédit partiellement effectué',
'failed_nano_credit_refunded' => 'Remboursement de nano crédit échoué',
'successful_nano_credit_demand_refunded' => "Nano crédit remboursé
Informations sur la demande :
- Numéro de la demande : :id_demand
- Montant du crédit remboursé : :amount
- Intérêts : :fees
- Taxes : :tax
- Capital : :net",
'successful_accepted_group_membership_request' => "Demande d'adhésion acceptée",
'successful_canceled_group_membership_request' => "Demande d'adhésion refusée",
'successful_nano_credit_sent_to_hypervisor' => "Votre demande a été envoyé à l'hyperviseur de votre reseau. Vous recevrez le credit seulement après validation",
'successful_accepted_nano_credit_request' => "Demande de nano credit acceptée",
'successful_canceled_nano_credit_request' => "Demande de nano credit refusée",
"successful_saving" => "Epargne réussie",
"successful_blocked_saving_details" => "
Informations sur l'epargne :
- Numéro de l'epargne : :id_saving
- Type : :type
- Montant lors de la cassation : :amount
- Intérêts : :fees
- Taxes : :tax
- Montant net epargné : :net
- Duréé (en mois) : :duration
- Date de fin : :date
",
"successful_simple_saving_details" => "
Informations sur l'epargne :
- Numéro de l'epargne : :id_saving
- Type : :type
- Montant lors de la cassation : :amount
- Intérêts : :fees
- Taxes : :tax
- Montant net epargné : :net
",
"successful_broken_saving" => "Epargne cassée",
"reload_your_account" => "Le remboursement de nano credit a echoué pour solde insuffisant, veuillez recharger votre compte.",
"successful_password_update" => "Votre mot de passe a été mis à jour avec succès.",
"your_new_password" => "Votre nouveau mot de passe est :password.",
"password_update" => "Mise à jour de votre mot de passe",
"wallet_incoming_payment" => "Paiement entrant dans votre portefeuille",
"wallet_incoming_payment_message" => "Vous avez recu un paiement entrant dans votre portefeuille
Informations de la transaction :
- Numéro : :id_transaction
- Montant : :amount
- Pays de départ : :init_country
- Réseau emetteur : :network :final_country
- Compte émetteur : :sender_code
- Noms de l'emetteur : :sender_name
- Pays de destination : :final_country
- Compte destinataire : :receiver_code",
"cash_incoming_payment" => "Paiement entrant en cash.",
"cash_incoming_payment_message" => "Vous avez recu un paiement en cash.
Informations de la transaction :
- Transaction ID : :id_transaction
- Montant : :amount
- Pays de départ : :init_country
- Réseau emetteur : :network :final_country
- Noms de l'emetteur : :sender_name
- Pays de destination : :final_country
- Noms du destinataire : :receiver_name
- Code de retrait : :code",
'successful_user_send_to_bank' => 'Envoi d\'argent de votre compte vers la banque
Informations de la transaction :
- Numéro : :id_transaction
- Montant de la transaction : :amount
- Frais : :fees
- Montant net d\'envoi: :net
- Compte émetteur : :sender_code
- Banque : :bank :country
- IBAN : :iban',
'successful_user_payment_of_operator' => "Paiement d'une facture chez un operateur
Informations de la transaction :
- Numéro : :id_transaction
- Montant de la transaction : :amount
- Frais : :fees
- Montant net payé: :net
- Compte émetteur : :sender_code
- Operateur : :operator
- Type d'operateur : :type_operator
- No facture : :no_facture",
'successful_bank_account_attachment' => 'Rattachement de votre compte bancaire effectué',
'successful_user_remove_from_bank_to_wallet' => "Retrait de la banque vers le wallet
Informations de la transaction :
- Numéro : :id_transaction
- Montant de la transaction : :amount
- Frais : :fees
- Montant net d\'envoi: :net
- Compte émetteur : :sender_code
- Banque : :bank :country
- IBAN : :iban",
'successful_agent_send_from_cash_to_bank' => "Envoi d'argent en cash vers la banque
Informations de la transaction :
- Numéro : :id_transaction
- Montant de la transaction : :amount
- Frais : :fees
- Montant net d'envoi: :net
- Compte de l'agent : :sender_code
- Noms de l'emetteur : :sender_name
- Noms du destinataire : :receiver_name
- IBAN du destinataire : :iban
- Banque : :bank :country",
'successful_bank_account_attachment_taken' => 'Votre requête de rattachement de votre compte bancaire a été prise en compte, vous recevrez un mail de confirmation dès lors que la banque aura validé votre code IBAN.',
];

View File

@ -14,8 +14,10 @@
*/
$router->group(['prefix' => '', 'middleware' => 'auth'], function () use ($router) {
$router->get('/', function () use ($router) {
return $router->app->version();
});
// $router->get('/', function () use ($router) {
// return $router->app->version();
// });
$router->post('emitTransaction', 'TransmittingNetworksController@emitPayment');
});