add end point GBS

This commit is contained in:
root 2026-01-30 15:59:41 +01:00
parent bb4c9aa804
commit 2d40e2fd39
14 changed files with 384 additions and 223 deletions

View File

@ -80,7 +80,7 @@ class UserController extends Controller
if ($identification->status == 1) {
return $this->errorResponse(trans('messages.identification_already_validated'));
}
// dd($request->all());
//dd($request->all());
$this->validate($request, [
'document_image_front' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:6144',
'document_image_back' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:6144',

View File

@ -17,7 +17,9 @@ use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use App\Notifications\BankAccountCreated;
use App\Mail\BankAccountCreatedMail;
use App\Models\CustomerAccountType;
use Illuminate\Support\Facades\Mail;
use GuzzleHttp\Client;
class WalletController extends Controller
{
@ -648,6 +650,7 @@ INNER JOIN countries c ON oc.id_country = c.id INNER JOIN type_operators top ON
'id_user' => 'required|integer|exists:users,id',
'id_operator' => 'required|integer|exists:operators_countries,id',
'id_wallet_network' => 'required|integer|exists:networks,id',
'account_type' => 'required',
'lastname' => 'required|string',
'firstname' => 'required|string',
'nationality' => 'required|string',
@ -655,14 +658,13 @@ INNER JOIN countries c ON oc.id_country = c.id INNER JOIN type_operators top ON
'birth_country' => 'required|string|max:3',
'birth_city' => 'required|string',
'identification_number' => 'required|string',
'spouse_name' => 'required|string',
'phone_number' => 'required|string|max:15|min:9',
'marital_name' => 'nullable|string',
'spouse_name' => 'nullable|string',
'phone_number' => 'required|string',
'marital_status' => 'nullable|string',
'profession' => 'required|string',
'niu' => 'nullable|string',
'employer_city' => 'nullable|string',
'position' => 'nullable|string',
'profession' => 'nullable|string',
'employer_name' => 'nullable|string',
'employer_address' => 'nullable|string',
]);
@ -706,21 +708,22 @@ INNER JOIN countries c ON oc.id_country = c.id INNER JOIN type_operators top ON
}
}
$bank_name = $network_bank->operators_country->operator->nom;
$account_type = CustomerAccountType::where('product', $request->account_type)->first();
if (!$account_type) {
return $this->errorResponse(trans('errors.invalid_account_type'));
}
$bankAccount = new UserBankAccount();
$bankAccount->id_user = $user->id;
$bankAccount->id_operator_country = $request->id_operator;
$bankAccount->lastname = $request->lastname;
$bankAccount->customer_account_type_id = $account_type->id;
$bankAccount->firstname = $request->firstname;
$bankAccount->marital_name = $request->marital_name ?? 'null';
$bankAccount->nationality = $request->nationality;
$bankAccount->birth_date = $request->birth_date;
$bankAccount->birth_country = $request->birth_country;
$bankAccount->birth_city = $request->birth_city;
$bankAccount->father_firstname = $request->father_firstname;
$bankAccount->father_lastname = $request->father_lastname;
$bankAccount->mother_firstname = $request->mother_firstname;
$bankAccount->mother_lastname = $request->mother_lastname;
$bankAccount->marital_status = $request->marital_status ?? 'celibataire';
$bankAccount->profession = $request->profession;
$bankAccount->identification_number = $request->identification_number;
@ -728,7 +731,7 @@ INNER JOIN countries c ON oc.id_country = c.id INNER JOIN type_operators top ON
$bankAccount->spouse_name = $request->spouse_name;
$bankAccount->niu = $request->niu ?? 'null';
$bankAccount->employer_city = $request->employer_city ?? 'null';
$bankAccount->position = $request->position;
$bankAccount->profession = $request->profession;
$bankAccount->employer_name = $request->employer_name ?? 'null';
$bankAccount->employer_address = $request->employer_address ?? 'null';
$bankAccount->balance = 0;
@ -760,4 +763,94 @@ INNER JOIN countries c ON oc.id_country = c.id INNER JOIN type_operators top ON
]);
}
public function activateUserBankAccount(Request $request)
{
$this->validate($request, [
'id' => 'required|integer|exists:user_bank_accounts,id',
'doc_front' => 'required|url',
'doc_back' => 'required|url',
]);
$bank_account = UserBankAccount::where('id', $request->id)->with('user')->first();
if (!$bank_account) {
return $this->errorResponse(trans('errors.account_type_not_found'));
}
$user = $bank_account->user;
$account_type = CustomerAccountType::where('id', $bank_account->customer_account_type_id)->first();
$apiUrl = "http://192.168.1.173:8084/api/v1/clients/create-with-account";
$payload = [
'phoneNumber' => $bank_account->phone_number ?? ($user->phone ?? ''),
'email' => $user->email ?? '',
'fullname' => $bank_account->firstname . ' ' . $bank_account->lastname,
'branchCode' => '99001',
'dateOfBirth' => $bank_account->birth_date,
'isMarried' => ($bank_account->marital_status === 'marie') ? 'Yes' : 'No',
'nameOfSpouse' => $bank_account->spouse_name ?? '',
'city' => $bank_account->birth_city ?? '',
'accountType' => $account_type->name,
'originalNationality' => $bank_account->nationality,
'countryOfResidence' => $bank_account->birth_country,
'employersName' => $bank_account->employer_name ?? '',
'employersAddress' => $bank_account->employer_address ?? '',
'employersCity' => $bank_account->employer_city ?? '',
'product' => $account_type->product ?? '',
'identificationNumber' => $bank_account->identification_number,
'paySlip' => $request->doc_front,
'signatureCard' => $request->doc_back,
];
try {
$client = new Client();
$response = $client->post($apiUrl, [
'auth' => ['sa', 'Sa123456'], // Authentification demandée
'json' => $payload, // Envoi en tant que application/json
'headers' => [
'Accept' => 'application/json',
],
'connect_timeout' => 30,
]);
$result = json_decode($response->getBody(), true);
if ($response->getStatusCode() == 200 || $response->getStatusCode() == 201) {
$bank_account->update([
'status' => 'validated',
'reason' => 'Compte créé avec succès via liens documents'
]);
return response()->json([
'status' => 'success',
'message' => 'Données et liens envoyés avec succès',
'api_response' => $result
]);
}
} catch (RequestException $e) {
$errorBody = $e->hasResponse() ? (string) $e->getResponse()->getBody() : $e->getMessage();
$bank_account->update([
'status' => 'rejected',
'reason' => 'Erreur API externe : ' . $errorBody
]);
return response()->json([
'status' => 'error',
'message' => 'LAPI distante a refusé la requête',
'details' => json_decode($errorBody) ?? $errorBody
], 500);
} catch (\Exception $e) {
return response()->json([
'status' => 'error',
'message' => 'Erreur lors de lappel API',
'error' => $e->getMessage()
], 500);
}
}
}

View File

@ -0,0 +1,59 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Models\Network;
use App\Models\UserBankAccount;
class CustomerAccountType extends Model
{
/**
*
* @var string
*/
protected $table = 'customer_account_types';
/**
* Les attributs qui peuvent être assignés massivement.
*
* @var array
*/
protected $fillable = [
'network_id',
'name',
'product',
'description',
'opening_amount',
'opening_amount_payment_period_days',
'parent_id',
'active',
];
/**
* Les attributs qui doivent être convertis vers des types natifs.
*
* @var array
*/
protected $casts = [
'active' => 'boolean',
'opening_amount' => 'decimal:2',
'network_id' => 'integer',
'parent_id' => 'integer',
'opening_amount_payment_period_days' => 'integer',
];
/**
* Relation avec le Network (si applicable)
*/
public function network()
{
return $this->belongsTo(Network::class, 'network_id');
}
public function userBankAccount()
{
return $this->hasMany(UserBankAccount::class, 'customer_account_type_id');
}
}

View File

@ -8,6 +8,7 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
use App\Models\CustomerAccountType;
/**
* Class Network
@ -61,4 +62,9 @@ class Network extends Model
{
return $this->belongsTo(Country::class, 'country_id');
}
public function customerAccountTypes()
{
return $this->hasMany(CustomerAccountType::class, 'network_id');
}
}

View File

@ -5,6 +5,7 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Models\User;
use App\Models\Operator;
use App\Models\CustomerAccountType;
class UserBankAccount extends Model
{
@ -17,7 +18,8 @@ class UserBankAccount extends Model
'account_number',
'iban',
'identification_number',
'account_type',
'customer_account_type_id',
'customer_number',
'balance',
'status',
'reason',
@ -52,4 +54,9 @@ class UserBankAccount extends Model
return $this->belongsTo(Operator::class);
}
public function customerAccountType()
{
return $this->belongsTo(CustomerAccountType::class, 'id');
}
}

0
bootstrap/cache/compiled.php vendored Normal file → Executable file
View File

362
composer.lock generated
View File

@ -879,16 +879,16 @@
},
{
"name": "doctrine/dbal",
"version": "3.10.3",
"version": "3.10.4",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
"reference": "65edaca19a752730f290ec2fb89d593cb40afb43"
"reference": "63a46cb5aa6f60991186cc98c1d1b50c09311868"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/dbal/zipball/65edaca19a752730f290ec2fb89d593cb40afb43",
"reference": "65edaca19a752730f290ec2fb89d593cb40afb43",
"url": "https://api.github.com/repos/doctrine/dbal/zipball/63a46cb5aa6f60991186cc98c1d1b50c09311868",
"reference": "63a46cb5aa6f60991186cc98c1d1b50c09311868",
"shasum": ""
},
"require": {
@ -912,8 +912,8 @@
"phpunit/phpunit": "9.6.29",
"slevomat/coding-standard": "8.24.0",
"squizlabs/php_codesniffer": "4.0.0",
"symfony/cache": "^5.4|^6.0|^7.0",
"symfony/console": "^4.4|^5.4|^6.0|^7.0"
"symfony/cache": "^5.4|^6.0|^7.0|^8.0",
"symfony/console": "^4.4|^5.4|^6.0|^7.0|^8.0"
},
"suggest": {
"symfony/console": "For helpful console commands such as SQL execution and import of files."
@ -973,7 +973,7 @@
],
"support": {
"issues": "https://github.com/doctrine/dbal/issues",
"source": "https://github.com/doctrine/dbal/tree/3.10.3"
"source": "https://github.com/doctrine/dbal/tree/3.10.4"
},
"funding": [
{
@ -989,7 +989,7 @@
"type": "tidelift"
}
],
"time": "2025-10-09T09:05:12+00:00"
"time": "2025-11-29T10:46:08+00:00"
},
{
"name": "doctrine/deprecations",
@ -1368,29 +1368,28 @@
},
{
"name": "dragonmantank/cron-expression",
"version": "v3.4.0",
"version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/dragonmantank/cron-expression.git",
"reference": "8c784d071debd117328803d86b2097615b457500"
"reference": "1b2de7f4a468165dca07b142240733a1973e766d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/8c784d071debd117328803d86b2097615b457500",
"reference": "8c784d071debd117328803d86b2097615b457500",
"url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/1b2de7f4a468165dca07b142240733a1973e766d",
"reference": "1b2de7f4a468165dca07b142240733a1973e766d",
"shasum": ""
},
"require": {
"php": "^7.2|^8.0",
"webmozart/assert": "^1.0"
"php": "^7.2|^8.0"
},
"replace": {
"mtdowling/cron-expression": "^1.0"
},
"require-dev": {
"phpstan/extension-installer": "^1.0",
"phpstan/phpstan": "^1.0",
"phpunit/phpunit": "^7.0|^8.0|^9.0"
"phpstan/extension-installer": "^1.4.3",
"phpstan/phpstan": "^1.12.32|^2.1.31",
"phpunit/phpunit": "^8.5.48|^9.0"
},
"type": "library",
"extra": {
@ -1421,7 +1420,7 @@
],
"support": {
"issues": "https://github.com/dragonmantank/cron-expression/issues",
"source": "https://github.com/dragonmantank/cron-expression/tree/v3.4.0"
"source": "https://github.com/dragonmantank/cron-expression/tree/v3.5.0"
},
"funding": [
{
@ -1429,7 +1428,7 @@
"type": "github"
}
],
"time": "2024-10-09T13:47:03+00:00"
"time": "2025-10-31T18:36:32+00:00"
},
{
"name": "egulias/email-validator",
@ -1610,24 +1609,24 @@
},
{
"name": "graham-campbell/result-type",
"version": "v1.1.3",
"version": "v1.1.4",
"source": {
"type": "git",
"url": "https://github.com/GrahamCampbell/Result-Type.git",
"reference": "3ba905c11371512af9d9bdd27d99b782216b6945"
"reference": "e01f4a821471308ba86aa202fed6698b6b695e3b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/3ba905c11371512af9d9bdd27d99b782216b6945",
"reference": "3ba905c11371512af9d9bdd27d99b782216b6945",
"url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/e01f4a821471308ba86aa202fed6698b6b695e3b",
"reference": "e01f4a821471308ba86aa202fed6698b6b695e3b",
"shasum": ""
},
"require": {
"php": "^7.2.5 || ^8.0",
"phpoption/phpoption": "^1.9.3"
"phpoption/phpoption": "^1.9.5"
},
"require-dev": {
"phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28"
"phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7"
},
"type": "library",
"autoload": {
@ -1656,7 +1655,7 @@
],
"support": {
"issues": "https://github.com/GrahamCampbell/Result-Type/issues",
"source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.3"
"source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.4"
},
"funding": [
{
@ -1668,7 +1667,7 @@
"type": "tidelift"
}
],
"time": "2024-07-20T21:45:45+00:00"
"time": "2025-12-27T19:43:20+00:00"
},
{
"name": "guzzlehttp/guzzle",
@ -1997,16 +1996,16 @@
},
{
"name": "http-interop/http-factory-guzzle",
"version": "1.2.0",
"version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/http-interop/http-factory-guzzle.git",
"reference": "8f06e92b95405216b237521cc64c804dd44c4a81"
"reference": "c2c859ceb05c3f42e710b60555f4c35b6a4a3995"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/http-interop/http-factory-guzzle/zipball/8f06e92b95405216b237521cc64c804dd44c4a81",
"reference": "8f06e92b95405216b237521cc64c804dd44c4a81",
"url": "https://api.github.com/repos/http-interop/http-factory-guzzle/zipball/c2c859ceb05c3f42e710b60555f4c35b6a4a3995",
"reference": "c2c859ceb05c3f42e710b60555f4c35b6a4a3995",
"shasum": ""
},
"require": {
@ -2049,9 +2048,9 @@
],
"support": {
"issues": "https://github.com/http-interop/http-factory-guzzle/issues",
"source": "https://github.com/http-interop/http-factory-guzzle/tree/1.2.0"
"source": "https://github.com/http-interop/http-factory-guzzle/tree/1.2.1"
},
"time": "2021-07-21T13:50:14+00:00"
"time": "2025-12-15T11:28:16+00:00"
},
{
"name": "illuminate/auth",
@ -3827,16 +3826,16 @@
},
{
"name": "league/commonmark",
"version": "2.7.1",
"version": "2.8.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/commonmark.git",
"reference": "10732241927d3971d28e7ea7b5712721fa2296ca"
"reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/commonmark/zipball/10732241927d3971d28e7ea7b5712721fa2296ca",
"reference": "10732241927d3971d28e7ea7b5712721fa2296ca",
"url": "https://api.github.com/repos/thephpleague/commonmark/zipball/4efa10c1e56488e658d10adf7b7b7dcd19940bfb",
"reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb",
"shasum": ""
},
"require": {
@ -3873,7 +3872,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "2.8-dev"
"dev-main": "2.9-dev"
}
},
"autoload": {
@ -3930,7 +3929,7 @@
"type": "tidelift"
}
],
"time": "2025-07-20T12:47:49+00:00"
"time": "2025-11-26T21:48:24+00:00"
},
{
"name": "league/config",
@ -4282,16 +4281,16 @@
},
{
"name": "monolog/monolog",
"version": "2.10.0",
"version": "2.11.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "5cf826f2991858b54d5c3809bee745560a1042a7"
"reference": "37308608e599f34a1a4845b16440047ec98a172a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/5cf826f2991858b54d5c3809bee745560a1042a7",
"reference": "5cf826f2991858b54d5c3809bee745560a1042a7",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/37308608e599f34a1a4845b16440047ec98a172a",
"reference": "37308608e599f34a1a4845b16440047ec98a172a",
"shasum": ""
},
"require": {
@ -4309,7 +4308,7 @@
"graylog2/gelf-php": "^1.4.2 || ^2@dev",
"guzzlehttp/guzzle": "^7.4",
"guzzlehttp/psr7": "^2.2",
"mongodb/mongodb": "^1.8",
"mongodb/mongodb": "^1.8 || ^2.0",
"php-amqplib/php-amqplib": "~2.4 || ^3",
"phpspec/prophecy": "^1.15",
"phpstan/phpstan": "^1.10",
@ -4368,7 +4367,7 @@
],
"support": {
"issues": "https://github.com/Seldaek/monolog/issues",
"source": "https://github.com/Seldaek/monolog/tree/2.10.0"
"source": "https://github.com/Seldaek/monolog/tree/2.11.0"
},
"funding": [
{
@ -4380,7 +4379,7 @@
"type": "tidelift"
}
],
"time": "2024-11-12T12:43:37+00:00"
"time": "2026-01-01T13:05:00+00:00"
},
{
"name": "myclabs/php-enum",
@ -4616,16 +4615,16 @@
},
{
"name": "nette/utils",
"version": "v4.0.8",
"version": "v4.0.10",
"source": {
"type": "git",
"url": "https://github.com/nette/utils.git",
"reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede"
"reference": "2778deb6aab136c8db4ed1f4d6e9f465ca2dbee3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nette/utils/zipball/c930ca4e3cf4f17dcfb03037703679d2396d2ede",
"reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede",
"url": "https://api.github.com/repos/nette/utils/zipball/2778deb6aab136c8db4ed1f4d6e9f465ca2dbee3",
"reference": "2778deb6aab136c8db4ed1f4d6e9f465ca2dbee3",
"shasum": ""
},
"require": {
@ -4699,9 +4698,9 @@
],
"support": {
"issues": "https://github.com/nette/utils/issues",
"source": "https://github.com/nette/utils/tree/v4.0.8"
"source": "https://github.com/nette/utils/tree/v4.0.10"
},
"time": "2025-08-06T21:43:34+00:00"
"time": "2025-12-01T17:30:42+00:00"
},
{
"name": "nikic/fast-route",
@ -4755,16 +4754,16 @@
},
{
"name": "nikic/php-parser",
"version": "v4.19.4",
"version": "v4.19.5",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2"
"reference": "51bd93cc741b7fc3d63d20b6bdcd99fdaa359837"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/715f4d25e225bc47b293a8b997fe6ce99bf987d2",
"reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/51bd93cc741b7fc3d63d20b6bdcd99fdaa359837",
"reference": "51bd93cc741b7fc3d63d20b6bdcd99fdaa359837",
"shasum": ""
},
"require": {
@ -4779,11 +4778,6 @@
"bin/php-parse"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.9-dev"
}
},
"autoload": {
"psr-4": {
"PhpParser\\": "lib/PhpParser"
@ -4805,9 +4799,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
"source": "https://github.com/nikic/PHP-Parser/tree/v4.19.4"
"source": "https://github.com/nikic/PHP-Parser/tree/v4.19.5"
},
"time": "2024-09-29T15:01:53+00:00"
"time": "2025-12-06T11:45:25+00:00"
},
{
"name": "nyholm/psr7",
@ -5044,16 +5038,16 @@
},
{
"name": "php-http/client-common",
"version": "2.7.2",
"version": "2.7.3",
"source": {
"type": "git",
"url": "https://github.com/php-http/client-common.git",
"reference": "0cfe9858ab9d3b213041b947c881d5b19ceeca46"
"reference": "dcc6de29c90dd74faab55f71b79d89409c4bf0c1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-http/client-common/zipball/0cfe9858ab9d3b213041b947c881d5b19ceeca46",
"reference": "0cfe9858ab9d3b213041b947c881d5b19ceeca46",
"url": "https://api.github.com/repos/php-http/client-common/zipball/dcc6de29c90dd74faab55f71b79d89409c4bf0c1",
"reference": "dcc6de29c90dd74faab55f71b79d89409c4bf0c1",
"shasum": ""
},
"require": {
@ -5063,15 +5057,13 @@
"psr/http-client": "^1.0",
"psr/http-factory": "^1.0",
"psr/http-message": "^1.0 || ^2.0",
"symfony/options-resolver": "~4.0.15 || ~4.1.9 || ^4.2.1 || ^5.0 || ^6.0 || ^7.0",
"symfony/options-resolver": "~4.0.15 || ~4.1.9 || ^4.2.1 || ^5.0 || ^6.0 || ^7.0 || ^8.0",
"symfony/polyfill-php80": "^1.17"
},
"require-dev": {
"doctrine/instantiator": "^1.1",
"guzzlehttp/psr7": "^1.4",
"nyholm/psr7": "^1.2",
"phpspec/phpspec": "^5.1 || ^6.3 || ^7.1",
"phpspec/prophecy": "^1.10.2",
"phpunit/phpunit": "^7.5.20 || ^8.5.33 || ^9.6.7"
},
"suggest": {
@ -5107,9 +5099,9 @@
],
"support": {
"issues": "https://github.com/php-http/client-common/issues",
"source": "https://github.com/php-http/client-common/tree/2.7.2"
"source": "https://github.com/php-http/client-common/tree/2.7.3"
},
"time": "2024-09-24T06:21:48+00:00"
"time": "2025-11-29T19:12:34+00:00"
},
{
"name": "php-http/discovery",
@ -5425,16 +5417,16 @@
},
{
"name": "phpoffice/phpspreadsheet",
"version": "1.30.0",
"version": "1.30.2",
"source": {
"type": "git",
"url": "https://github.com/PHPOffice/PhpSpreadsheet.git",
"reference": "2f39286e0136673778b7a142b3f0d141e43d1714"
"reference": "09cdde5e2f078b9a3358dd217e2c8cb4dac84be2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/2f39286e0136673778b7a142b3f0d141e43d1714",
"reference": "2f39286e0136673778b7a142b3f0d141e43d1714",
"url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/09cdde5e2f078b9a3358dd217e2c8cb4dac84be2",
"reference": "09cdde5e2f078b9a3358dd217e2c8cb4dac84be2",
"shasum": ""
},
"require": {
@ -5456,13 +5448,12 @@
"maennchen/zipstream-php": "^2.1 || ^3.0",
"markbaker/complex": "^3.0",
"markbaker/matrix": "^3.0",
"php": "^7.4 || ^8.0",
"psr/http-client": "^1.0",
"psr/http-factory": "^1.0",
"php": ">=7.4.0 <8.5.0",
"psr/simple-cache": "^1.0 || ^2.0 || ^3.0"
},
"require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "dev-main",
"doctrine/instantiator": "^1.5",
"dompdf/dompdf": "^1.0 || ^2.0 || ^3.0",
"friendsofphp/php-cs-fixer": "^3.2",
"mitoteam/jpgraph": "^10.3",
@ -5509,6 +5500,9 @@
},
{
"name": "Adrien Crivelli"
},
{
"name": "Owen Leibman"
}
],
"description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine",
@ -5525,22 +5519,22 @@
],
"support": {
"issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues",
"source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.30.0"
"source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.30.2"
},
"time": "2025-08-10T06:28:02+00:00"
"time": "2026-01-11T05:58:24+00:00"
},
{
"name": "phpoption/phpoption",
"version": "1.9.4",
"version": "1.9.5",
"source": {
"type": "git",
"url": "https://github.com/schmittjoh/php-option.git",
"reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d"
"reference": "75365b91986c2405cf5e1e012c5595cd487a98be"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/schmittjoh/php-option/zipball/638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d",
"reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d",
"url": "https://api.github.com/repos/schmittjoh/php-option/zipball/75365b91986c2405cf5e1e012c5595cd487a98be",
"reference": "75365b91986c2405cf5e1e012c5595cd487a98be",
"shasum": ""
},
"require": {
@ -5590,7 +5584,7 @@
],
"support": {
"issues": "https://github.com/schmittjoh/php-option/issues",
"source": "https://github.com/schmittjoh/php-option/tree/1.9.4"
"source": "https://github.com/schmittjoh/php-option/tree/1.9.5"
},
"funding": [
{
@ -5602,7 +5596,7 @@
"type": "tidelift"
}
],
"time": "2025-08-21T11:53:16+00:00"
"time": "2025-12-27T19:41:33+00:00"
},
{
"name": "psr/cache",
@ -6271,20 +6265,20 @@
},
{
"name": "ramsey/uuid",
"version": "4.9.1",
"version": "4.9.2",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
"reference": "81f941f6f729b1e3ceea61d9d014f8b6c6800440"
"reference": "8429c78ca35a09f27565311b98101e2826affde0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ramsey/uuid/zipball/81f941f6f729b1e3ceea61d9d014f8b6c6800440",
"reference": "81f941f6f729b1e3ceea61d9d014f8b6c6800440",
"url": "https://api.github.com/repos/ramsey/uuid/zipball/8429c78ca35a09f27565311b98101e2826affde0",
"reference": "8429c78ca35a09f27565311b98101e2826affde0",
"shasum": ""
},
"require": {
"brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14",
"brick/math": "^0.8.16 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14",
"php": "^8.0",
"ramsey/collection": "^1.2 || ^2.0"
},
@ -6343,9 +6337,9 @@
],
"support": {
"issues": "https://github.com/ramsey/uuid/issues",
"source": "https://github.com/ramsey/uuid/tree/4.9.1"
"source": "https://github.com/ramsey/uuid/tree/4.9.2"
},
"time": "2025-09-04T20:59:21+00:00"
"time": "2025-12-14T04:43:48+00:00"
},
{
"name": "sabberworm/php-css-parser",
@ -7557,16 +7551,16 @@
},
{
"name": "symfony/http-foundation",
"version": "v5.4.48",
"version": "v5.4.50",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
"reference": "3f38b8af283b830e1363acd79e5bc3412d055341"
"reference": "1a0706e8b8041046052ea2695eb8aeee04f97609"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/3f38b8af283b830e1363acd79e5bc3412d055341",
"reference": "3f38b8af283b830e1363acd79e5bc3412d055341",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/1a0706e8b8041046052ea2695eb8aeee04f97609",
"reference": "1a0706e8b8041046052ea2695eb8aeee04f97609",
"shasum": ""
},
"require": {
@ -7613,7 +7607,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/http-foundation/tree/v5.4.48"
"source": "https://github.com/symfony/http-foundation/tree/v5.4.50"
},
"funding": [
{
@ -7624,25 +7618,29 @@
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-11-13T18:58:02+00:00"
"time": "2025-11-03T12:58:48+00:00"
},
{
"name": "symfony/http-kernel",
"version": "v5.4.48",
"version": "v5.4.51",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
"reference": "c2dbfc92b851404567160d1ecf3fb7d9b7bde9b0"
"reference": "85432f7548b2757b8387f7e1a468abd62fc4c9bc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/c2dbfc92b851404567160d1ecf3fb7d9b7bde9b0",
"reference": "c2dbfc92b851404567160d1ecf3fb7d9b7bde9b0",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/85432f7548b2757b8387f7e1a468abd62fc4c9bc",
"reference": "85432f7548b2757b8387f7e1a468abd62fc4c9bc",
"shasum": ""
},
"require": {
@ -7726,7 +7724,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/http-kernel/tree/v5.4.48"
"source": "https://github.com/symfony/http-kernel/tree/v5.4.51"
},
"funding": [
{
@ -7737,12 +7735,16 @@
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-11-27T12:43:17+00:00"
"time": "2026-01-28T07:10:35+00:00"
},
{
"name": "symfony/mime",
@ -8648,16 +8650,16 @@
},
{
"name": "symfony/process",
"version": "v5.4.47",
"version": "v5.4.51",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "5d1662fb32ebc94f17ddb8d635454a776066733d"
"reference": "467bfc56f18f5ef6d5ccb09324d7e988c1c0a98f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/5d1662fb32ebc94f17ddb8d635454a776066733d",
"reference": "5d1662fb32ebc94f17ddb8d635454a776066733d",
"url": "https://api.github.com/repos/symfony/process/zipball/467bfc56f18f5ef6d5ccb09324d7e988c1c0a98f",
"reference": "467bfc56f18f5ef6d5ccb09324d7e988c1c0a98f",
"shasum": ""
},
"require": {
@ -8690,7 +8692,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/process/tree/v5.4.47"
"source": "https://github.com/symfony/process/tree/v5.4.51"
},
"funding": [
{
@ -8701,12 +8703,16 @@
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-11-06T11:36:42+00:00"
"time": "2026-01-26T15:53:37+00:00"
},
{
"name": "symfony/psr-http-message-bridge",
@ -9303,23 +9309,23 @@
},
{
"name": "tijsverkoyen/css-to-inline-styles",
"version": "v2.3.0",
"version": "v2.4.0",
"source": {
"type": "git",
"url": "https://github.com/tijsverkoyen/CssToInlineStyles.git",
"reference": "0d72ac1c00084279c1816675284073c5a337c20d"
"reference": "f0292ccf0ec75843d65027214426b6b163b48b41"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0d72ac1c00084279c1816675284073c5a337c20d",
"reference": "0d72ac1c00084279c1816675284073c5a337c20d",
"url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/f0292ccf0ec75843d65027214426b6b163b48b41",
"reference": "f0292ccf0ec75843d65027214426b6b163b48b41",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-libxml": "*",
"php": "^7.4 || ^8.0",
"symfony/css-selector": "^5.4 || ^6.0 || ^7.0"
"symfony/css-selector": "^5.4 || ^6.0 || ^7.0 || ^8.0"
},
"require-dev": {
"phpstan/phpstan": "^2.0",
@ -9352,9 +9358,9 @@
"homepage": "https://github.com/tijsverkoyen/CssToInlineStyles",
"support": {
"issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues",
"source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.3.0"
"source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.4.0"
},
"time": "2024-12-21T16:25:41+00:00"
"time": "2025-12-02T11:56:42+00:00"
},
{
"name": "twilio/sdk",
@ -9411,26 +9417,26 @@
},
{
"name": "vlucas/phpdotenv",
"version": "v5.6.2",
"version": "v5.6.3",
"source": {
"type": "git",
"url": "https://github.com/vlucas/phpdotenv.git",
"reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af"
"reference": "955e7815d677a3eaa7075231212f2110983adecc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/24ac4c74f91ee2c193fa1aaa5c249cb0822809af",
"reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af",
"url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/955e7815d677a3eaa7075231212f2110983adecc",
"reference": "955e7815d677a3eaa7075231212f2110983adecc",
"shasum": ""
},
"require": {
"ext-pcre": "*",
"graham-campbell/result-type": "^1.1.3",
"graham-campbell/result-type": "^1.1.4",
"php": "^7.2.5 || ^8.0",
"phpoption/phpoption": "^1.9.3",
"symfony/polyfill-ctype": "^1.24",
"symfony/polyfill-mbstring": "^1.24",
"symfony/polyfill-php80": "^1.24"
"phpoption/phpoption": "^1.9.5",
"symfony/polyfill-ctype": "^1.26",
"symfony/polyfill-mbstring": "^1.26",
"symfony/polyfill-php80": "^1.26"
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8.2",
@ -9479,7 +9485,7 @@
],
"support": {
"issues": "https://github.com/vlucas/phpdotenv/issues",
"source": "https://github.com/vlucas/phpdotenv/tree/v5.6.2"
"source": "https://github.com/vlucas/phpdotenv/tree/v5.6.3"
},
"funding": [
{
@ -9491,7 +9497,7 @@
"type": "tidelift"
}
],
"time": "2025-04-30T23:37:27+00:00"
"time": "2025-12-27T19:49:13+00:00"
},
{
"name": "voku/portable-ascii",
@ -9567,64 +9573,6 @@
],
"time": "2022-01-24T18:55:24+00:00"
},
{
"name": "webmozart/assert",
"version": "1.11.0",
"source": {
"type": "git",
"url": "https://github.com/webmozarts/assert.git",
"reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
"reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
"shasum": ""
},
"require": {
"ext-ctype": "*",
"php": "^7.2 || ^8.0"
},
"conflict": {
"phpstan/phpstan": "<0.12.20",
"vimeo/psalm": "<4.6.1 || 4.6.2"
},
"require-dev": {
"phpunit/phpunit": "^8.5.13"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.10-dev"
}
},
"autoload": {
"psr-4": {
"Webmozart\\Assert\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Bernhard Schussek",
"email": "bschussek@gmail.com"
}
],
"description": "Assertions to validate method input/output with nice error messages.",
"keywords": [
"assert",
"check",
"validate"
],
"support": {
"issues": "https://github.com/webmozarts/assert/issues",
"source": "https://github.com/webmozarts/assert/tree/1.11.0"
},
"time": "2022-06-03T18:03:27+00:00"
},
{
"name": "zircote/swagger-php",
"version": "3.3.7",
@ -10459,16 +10407,16 @@
},
{
"name": "phpunit/phpunit",
"version": "9.6.29",
"version": "9.6.34",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "9ecfec57835a5581bc888ea7e13b51eb55ab9dd3"
"reference": "b36f02317466907a230d3aa1d34467041271ef4a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9ecfec57835a5581bc888ea7e13b51eb55ab9dd3",
"reference": "9ecfec57835a5581bc888ea7e13b51eb55ab9dd3",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b36f02317466907a230d3aa1d34467041271ef4a",
"reference": "b36f02317466907a230d3aa1d34467041271ef4a",
"shasum": ""
},
"require": {
@ -10490,7 +10438,7 @@
"phpunit/php-timer": "^5.0.3",
"sebastian/cli-parser": "^1.0.2",
"sebastian/code-unit": "^1.0.8",
"sebastian/comparator": "^4.0.9",
"sebastian/comparator": "^4.0.10",
"sebastian/diff": "^4.0.6",
"sebastian/environment": "^5.1.5",
"sebastian/exporter": "^4.0.8",
@ -10542,7 +10490,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.29"
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.34"
},
"funding": [
{
@ -10566,7 +10514,7 @@
"type": "tidelift"
}
],
"time": "2025-09-24T06:29:11+00:00"
"time": "2026-01-27T05:45:00+00:00"
},
{
"name": "sebastian/cli-parser",
@ -10737,16 +10685,16 @@
},
{
"name": "sebastian/comparator",
"version": "4.0.9",
"version": "4.0.10",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
"reference": "67a2df3a62639eab2cc5906065e9805d4fd5dfc5"
"reference": "e4df00b9b3571187db2831ae9aada2c6efbd715d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/67a2df3a62639eab2cc5906065e9805d4fd5dfc5",
"reference": "67a2df3a62639eab2cc5906065e9805d4fd5dfc5",
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/e4df00b9b3571187db2831ae9aada2c6efbd715d",
"reference": "e4df00b9b3571187db2831ae9aada2c6efbd715d",
"shasum": ""
},
"require": {
@ -10799,7 +10747,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/comparator/issues",
"source": "https://github.com/sebastianbergmann/comparator/tree/4.0.9"
"source": "https://github.com/sebastianbergmann/comparator/tree/4.0.10"
},
"funding": [
{
@ -10819,7 +10767,7 @@
"type": "tidelift"
}
],
"time": "2025-08-10T06:51:50+00:00"
"time": "2026-01-24T09:22:56+00:00"
},
{
"name": "sebastian/complexity",
@ -11581,16 +11529,16 @@
},
{
"name": "theseer/tokenizer",
"version": "1.2.3",
"version": "1.3.1",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
"reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2"
"reference": "b7489ce515e168639d17feec34b8847c326b0b3c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
"reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
"url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c",
"reference": "b7489ce515e168639d17feec34b8847c326b0b3c",
"shasum": ""
},
"require": {
@ -11619,7 +11567,7 @@
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
"support": {
"issues": "https://github.com/theseer/tokenizer/issues",
"source": "https://github.com/theseer/tokenizer/tree/1.2.3"
"source": "https://github.com/theseer/tokenizer/tree/1.3.1"
},
"funding": [
{
@ -11627,7 +11575,7 @@
"type": "github"
}
],
"time": "2024-03-03T12:36:25+00:00"
"time": "2025-11-17T20:03:58+00:00"
}
],
"aliases": [],

View File

@ -6,6 +6,9 @@ return [
'base_uri' => env('NOTIFICATION_SERVICE_URL'),
'key' => env('NOTIFICATION_SERVICE_KEY')
],
'create_account_gbs' => [
'base_uri' => env('CREATE_ACCOUNT_GBS_URL'),
],
'payment_service' => [
'base_uri' => env('PAYMENT_SERVICE_URL'),
'key' => env('PAYMENT_SERVICE_KEY')

View File

@ -22,13 +22,14 @@ class CreateUserBankAccountsTable extends Migration
// Référence utilisateur (BigInteger pour correspondre au type id() par défaut)
$table->unsignedInteger('id_user');
$table->unsignedInteger('id_operator_country');
$table->unsignedInteger('customer_account_type_id')->nullable()->comment('Type de compte : courant, épargne, etc.');
// Informations bancaires principales
$table->string('account_number')->unique()
->nullable()
->comment('Numéro de compte bancaire attribué par la banque');
$table->string('customer_number')->nullable()->comment('Code client');
$table->string('iban')->nullable()->comment('Numéro IBAN du compte si disponible');
$table->string('account_type')->nullable()->comment('Type de compte : courant, épargne, etc.');
$table->decimal('balance', 20, 2)->default(0);
$table->string('status')->default('pending')->comment('Statut du compte : pending, validated, active, rejected, closed');
$table->string('reason')->nullable()->comment('Raison ou message en cas de rejet ou erreur API');
@ -48,7 +49,6 @@ class CreateUserBankAccountsTable extends Migration
$table->string('identification_number')->nullable()->comment('Piece d\'identité nationale ou passeport');
// Correction ici : la taille est le 2ème argument de string()
$table->string('niu', 14)->nullable()->comment('Numéro didentification unique');
$table->string('phone_number', 15)->nullable()->comment('numero de téléphone');
@ -59,9 +59,9 @@ class CreateUserBankAccountsTable extends Migration
$table->timestamps();
// Ajout des clés étrangères directement dans le create (plus propre)
$table->foreign('id_user')->references('id')->on('users')->onDelete('cascade');
$table->foreign('id_operator_country')->references('id')->on('operators_countries')->onDelete('cascade');
$table->foreign('customer_account_type_id')->references('id')->on('customer_account_types')->onDelete('set null');
});
}

View File

@ -0,0 +1,41 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddNetworkIdToCustomerAccountTypesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('customer_account_types', function (Blueprint $table) {
$table->string('product')->nullable()->after('name');
$table->unsignedInteger('network_id')->after('id')->nullable();
$table->foreign('network_id', 'customer_account_types_network_id_foreign')
->references('id')
->on('networks')
->onDelete('restrict');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('customer_account_types', function (Blueprint $table) {
$table->dropForeign('customer_account_types_network_id_foreign');
$table->dropColumns('network_id','product');
});
}
}

View File

@ -95,4 +95,6 @@ Paying network : :network :country',
'bank_api_exception' => 'An error occurred while creating the bank account',
'request_create_account_already_sended' => "A request to create a bank account has already been sent for this bank",
'user_not_found' => "User not found",
'account_type_not_found' => "Account type not found",
];

View File

@ -95,4 +95,5 @@ Réseau payeur : :network :country',
'bank_api_exception' => 'Une erreur est survenue lors de la création du compte bancaire',
'request_create_account_already_sended' => "Une demande de création de compte bancaire a déjà été envoyée pour cette banque",
'user_not_found' => "Utilisateur non trouvé",
'account_type_not_found' => "Type de compte non trouvé",
];

View File

@ -6,6 +6,6 @@
<p><strong>Banque :</strong> {{ $bank_name }}</p>
<p><strong>Statut :</strong> {{ ucfirst($bankAccount->status) }}</p>
<p>Nous vous informerons dès que le compte sera validé.</p>
<p>Merci,<br>Léquipe iLink World</p>
<p>Merci,<br>Léquipe SunEx by iLink World</p>
</body>
</html>

View File

@ -74,6 +74,7 @@ $router->group(['prefix' => '', 'middleware' => 'auth'], function () use ($route
$router->post('link_bank_account', 'WalletController@linkBankAccount');
//Creation d'un compte bancaire (Agency Banking)
$router->post('create_user_bank_account', 'WalletController@createUserBankAccount');
$router->post('activate_user_bank_account', 'WalletController@activateUserBankAccount');
});
});