2022-08-11 09:46:51 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
|
|
|
|
use App\Models\PaymentAggregator;
|
2022-10-09 00:00:12 +00:00
|
|
|
use GuzzleHttp\Client;
|
2022-08-11 09:46:51 +00:00
|
|
|
use Illuminate\Http\Request;
|
2022-11-21 23:24:10 +00:00
|
|
|
use Illuminate\Support\Facades\Lang;
|
2022-10-08 21:12:51 +00:00
|
|
|
use Illuminate\Support\Facades\Log;
|
2022-08-11 09:46:51 +00:00
|
|
|
|
|
|
|
class PaymentController extends Controller
|
|
|
|
{
|
2022-10-08 21:12:51 +00:00
|
|
|
public function getMethods(Request $request)
|
|
|
|
{
|
2022-10-09 00:00:12 +00:00
|
|
|
$aggregator = PaymentAggregator::where('status', 1)->first();
|
|
|
|
if (!$aggregator) {
|
|
|
|
return $this->errorResponse(trans('errors.model_not_found', ['model' => 'methods']));
|
|
|
|
}
|
2022-10-08 21:12:51 +00:00
|
|
|
|
2022-10-09 00:00:12 +00:00
|
|
|
Log::info($aggregator->name);
|
2022-10-08 21:12:51 +00:00
|
|
|
|
2022-10-09 00:00:12 +00:00
|
|
|
switch (strtolower($aggregator->name)) {
|
2022-10-08 21:12:51 +00:00
|
|
|
case 'yoomee':
|
|
|
|
case 'yoomeev2':
|
2022-11-21 23:24:10 +00:00
|
|
|
// $client = new Client([
|
|
|
|
// 'base_uri' => config('variables.yoomee_api_url'),
|
|
|
|
// 'timeout' => 60,
|
|
|
|
// ]);
|
|
|
|
// $response = $client->get('operators');
|
|
|
|
// return $this->successResponse(json_decode($response->getBody()->getContents()));
|
|
|
|
//
|
|
|
|
// $client = new Client([
|
|
|
|
// 'base_uri' => config('variables.yoomee_api_v2_url'),
|
|
|
|
// 'timeout' => 60,
|
|
|
|
// ]);
|
|
|
|
// $response = $client->get('providers/v1');
|
|
|
|
// return $this->successResponse(json_decode($response->getBody()->getContents()));
|
|
|
|
$providers = ["Yoomee","MTN","Orange","EU"];
|
|
|
|
$methods = [];
|
|
|
|
foreach ($providers as $provider){
|
|
|
|
$key = 'providers.'.$provider;
|
|
|
|
$methods[$provider] = Lang::has($key) ? __($key) : $provider;
|
|
|
|
}
|
|
|
|
return $this->successResponse([
|
|
|
|
'hasWebview' => false,
|
|
|
|
'methods' => $methods
|
|
|
|
]
|
|
|
|
);
|
2022-10-08 21:12:51 +00:00
|
|
|
case 'cinetpay':
|
2022-11-21 23:24:10 +00:00
|
|
|
$providers = [
|
|
|
|
// 'ALL',
|
|
|
|
'MOBILE_MONEY',
|
|
|
|
'CREDIT_CARD',
|
|
|
|
];
|
|
|
|
$methods = [];
|
|
|
|
foreach ($providers as $provider) {
|
|
|
|
$key = 'providers.' . $provider;
|
|
|
|
$methods[$provider] = Lang::has($key) ? __($key) : $provider;
|
|
|
|
}
|
|
|
|
return $this->successResponse([
|
|
|
|
'hasWebview' => true,
|
|
|
|
'methods' => $methods,
|
|
|
|
]);
|
2022-10-08 21:12:51 +00:00
|
|
|
default:
|
|
|
|
return $this->errorResponse(__('errors.unexpected_error'));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-08-11 09:46:51 +00:00
|
|
|
public function pay(Request $request)
|
|
|
|
{
|
|
|
|
$this->validate($request, [
|
|
|
|
'aggregator_id' => 'required|integer|exists:payment_aggregators,id',
|
|
|
|
]);
|
|
|
|
|
|
|
|
$aggregator = PaymentAggregator::findOrFail($request->input('aggregator_id'));
|
|
|
|
|
2022-10-09 00:00:12 +00:00
|
|
|
switch (strtolower($aggregator->name)) {
|
2022-08-11 09:46:51 +00:00
|
|
|
case 'yoomee':
|
|
|
|
return redirect()->route('yoomee.pay', $request->all());
|
2022-10-08 21:12:51 +00:00
|
|
|
case 'yoomeev2':
|
|
|
|
return redirect()->route('yoomee.v2.pay', $request->all());
|
2022-08-11 09:46:51 +00:00
|
|
|
case 'cinetpay':
|
|
|
|
return redirect()->route('cinetpay.pay', $request->all());
|
|
|
|
default:
|
|
|
|
return $this->errorResponse(__('errors.unexpected_error'));
|
|
|
|
}
|
|
|
|
}
|
2022-11-12 14:01:21 +00:00
|
|
|
|
|
|
|
public function paymentResult(Request $request)
|
|
|
|
{
|
|
|
|
if($request->has('token')){
|
|
|
|
return $this->successResponse($request->all());
|
|
|
|
}else{
|
|
|
|
return $this->errorResponse($request->all());
|
|
|
|
}
|
|
|
|
}
|
2022-08-11 09:46:51 +00:00
|
|
|
}
|