fix: missing recipient while doing ilink world transaction
This commit is contained in:
parent
6257a00b76
commit
2463b3037a
|
@ -307,8 +307,10 @@ class iLinkTransactionController extends Controller
|
|||
$transaction->nom_destinataire = $request->nom_destinataire;
|
||||
$transaction->prenom_destinataire = $request->prenom_destinataire;
|
||||
if ($configPayeur->type == 'ilink') {
|
||||
$destinataire = User::where($transaction->type_id_destinataire, $request->id_destinataire)->first();
|
||||
if ($destinataire) { // Si c'est un wallet ilink
|
||||
$destinataire = $this->verifyiLinkRecipient($request->id_destinataire, $request->final_country, $transaction->type_id_destinataire);
|
||||
if(!($destinataire instanceof User)){
|
||||
return $destinataire;
|
||||
}else{
|
||||
$transaction->nom_destinataire = $destinataire->lastname;
|
||||
$transaction->prenom_destinataire = $destinataire->firstname;
|
||||
if ($destinataire->network->country->id == $request->final_country) {
|
||||
|
@ -319,8 +321,6 @@ class iLinkTransactionController extends Controller
|
|||
$country = Country::findOrFail($request->final_country);
|
||||
throw new Exception(trans('errors.wallet_country_not_match', ['country' => $country->name]), 500);
|
||||
}
|
||||
} else {
|
||||
throw new Exception(trans('errors.wallet_not_defined'), 500);
|
||||
}
|
||||
|
||||
//Mise a jour des comissions et compensation
|
||||
|
@ -1876,6 +1876,11 @@ class iLinkTransactionController extends Controller
|
|||
'payment_type' => PaymentType::CASH_IN,
|
||||
'payment_method' => PaymentMethod::WALLET
|
||||
]);
|
||||
}else{
|
||||
$destinataire = $this->verifyiLinkRecipient($request->id_destinataire, $request->final_country);
|
||||
if(!($destinataire instanceof User)){
|
||||
return $destinataire;
|
||||
}
|
||||
}
|
||||
|
||||
$frais += $fees;
|
||||
|
@ -1914,8 +1919,8 @@ class iLinkTransactionController extends Controller
|
|||
'payment_method' => 'CARD',
|
||||
'customer_id' => $user->id,
|
||||
'customer_email' => $user->email,
|
||||
'customer_name' => $withLinkedCard ? $identification->firstname : $request->input('customer_name'),
|
||||
'customer_surname' => $withLinkedCard ? $identification->lastname : $request->input('customer_surname'),
|
||||
'customer_name' => $withLinkedCard ? $identification->firstname : $request->input('customer_name', $destinataire?->firstname ?? ''),
|
||||
'customer_surname' => $withLinkedCard ? $identification->lastname : $request->input('customer_surname', $destinataire?->lastname ?? ''),
|
||||
'customer_address' => $withLinkedCard ? $identification->town : $request->input('customer_address'),
|
||||
'customer_city' => $withLinkedCard ? $identification->town : $request->input('customer_city'),
|
||||
'customer_country' => $country->code_country,
|
||||
|
@ -2290,8 +2295,11 @@ class iLinkTransactionController extends Controller
|
|||
]);
|
||||
$frais += $fees;
|
||||
} else {
|
||||
$destinataire = User::where('user_code', $request->id_destinataire)->orWhere('phone', $request->id_destinataire)->first();
|
||||
$data['destinataire'] = $destinataire ? $destinataire->lastname . ' ' . $destinataire->firstname : $request->id_destinataire;
|
||||
$destinataire = $this->verifyiLinkRecipient($request->id_destinataire, $request->final_country);
|
||||
if(!($destinataire instanceof User)){
|
||||
return $destinataire;
|
||||
}
|
||||
$data['destinataire'] = $destinataire->lastname . ' ' . $destinataire->firstname;
|
||||
}
|
||||
$taxe = ($init_country != $request->final_country) ? $this->calculateTax($taxesInternationales, $frais) : $this->calculateTax($taxesNationales, $frais);
|
||||
$data['frais'] = round($frais + $taxe, 2);
|
||||
|
@ -2500,8 +2508,11 @@ class iLinkTransactionController extends Controller
|
|||
'payment_method' => PaymentMethod::WALLET
|
||||
]);
|
||||
} else {
|
||||
$destinataire = User::where('user_code', $request->id_destinataire)->orWhere('phone', $request->id_destinataire)->first();
|
||||
$data['destinataire'] = $destinataire ? $destinataire->lastname . ' ' . $destinataire->firstname : $request->id_destinataire;
|
||||
$destinataire = $this->verifyiLinkRecipient($request->id_destinataire, $request->final_country);
|
||||
if(!($destinataire instanceof User)){
|
||||
return $destinataire;
|
||||
}
|
||||
$data['destinataire'] = $destinataire->lastname . ' ' . $destinataire->firstname;
|
||||
}
|
||||
|
||||
$frais += $fees;
|
||||
|
@ -2521,6 +2532,29 @@ class iLinkTransactionController extends Controller
|
|||
return $this->successResponse($data);
|
||||
}
|
||||
|
||||
//Verifier l'existance du destinataire ilink
|
||||
private function verifyiLinkRecipient($recipientId, $countryId, $recipientIdType = null)
|
||||
{
|
||||
$recipientId = remove_spaces($recipientId);
|
||||
$phone = $recipientId;
|
||||
if(!str_contains($phone,'+')){
|
||||
$countryDialCode = Country::find($countryId)?->code_dial ?? '' ;
|
||||
$phone = $countryDialCode.$recipientId;
|
||||
}
|
||||
|
||||
if(empty($recipientIdType)){
|
||||
$destinataire = User::where('user_code', $recipientId)->orWhere('phone', $phone)->first();
|
||||
}else{
|
||||
$destinataire = User::where(strtolower($recipientIdType), $recipientId)->first();
|
||||
}
|
||||
|
||||
if(empty($destinataire)){
|
||||
return $this->errorResponse(__('errors.recipient_not_found'));
|
||||
}
|
||||
|
||||
return $destinataire;
|
||||
}
|
||||
|
||||
public function getTransactionRetrait(Request $request)
|
||||
{
|
||||
$this->validate($request, [
|
||||
|
|
|
@ -265,3 +265,13 @@ if (!function_exists('cookie')) {
|
|||
return $cookie->make($name, $value, $minutes, $path, $domain, $secure, $httpOnly);
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('remove_spaces')) {
|
||||
function remove_spaces($string): string
|
||||
{
|
||||
$pattern = '/\s+/';
|
||||
return preg_replace($pattern, '', $string);
|
||||
}
|
||||
}
|
||||
|
||||
;
|
||||
|
|
|
@ -91,4 +91,6 @@ Paying network : :network :country',
|
|||
'transaction_not_supported' => "This transaction is not supported",
|
||||
'payment_invalid' => "Invalid payment",
|
||||
'service_unavailable_in_country' => 'Service not available in this country',
|
||||
'recipient_not_found' => "This recipient does not exist"
|
||||
|
||||
];
|
||||
|
|
|
@ -91,4 +91,5 @@ Réseau payeur : :network :country',
|
|||
'transaction_not_supported' => "Cette transaction n'est pas supportée",
|
||||
'payment_invalid' => "Paiement invalide",
|
||||
'service_unavailable_in_country' => 'Service non disponible dans ce pays',
|
||||
'recipient_not_found' => "Ce destinataire n'existe pas"
|
||||
];
|
||||
|
|
Loading…
Reference in New Issue