paymentservice/app/Http/Controllers/PaymentController.php

102 lines
3.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\PaymentAggregator;
use GuzzleHttp\Client;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Lang;
use Illuminate\Support\Facades\Log;
class PaymentController extends Controller
{
public function getMethods(Request $request)
{
$aggregator = PaymentAggregator::where('status', 1)->first();
if (!$aggregator) {
return $this->errorResponse(trans('errors.model_not_found', ['model' => 'methods']));
}
Log::info($aggregator->name);
switch (strtolower($aggregator->name)) {
case 'yoomee':
case 'yoomeev2':
// $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;
$method['title'] = Lang::has($key) ? __($key) : $provider;
$method['value'] = $provider;
$methods[] = $method;
}
return $this->successResponse([
'hasWebview' => false,
'methods' => $methods
]
);
case 'cinetpay':
$providers = [
// 'ALL',
'MOBILE_MONEY',
'CREDIT_CARD',
];
$methods = [];
foreach ($providers as $provider) {
$key = 'providers.' . $provider;
$method['title'] = Lang::has($key) ? __($key) : $provider;
$method['value'] = $provider;
$methods[] = $method;
}
return $this->successResponse([
'hasWebview' => true,
'methods' => $methods,
]);
default:
return $this->errorResponse(__('errors.unexpected_error'));
}
}
public function pay(Request $request)
{
$this->validate($request, [
'aggregator_id' => 'required|integer|exists:payment_aggregators,id',
]);
$aggregator = PaymentAggregator::findOrFail($request->input('aggregator_id'));
switch (strtolower($aggregator->name)) {
case 'yoomee':
return redirect()->route('yoomee.pay', $request->all());
case 'yoomeev2':
return redirect()->route('yoomee.v2.pay', $request->all());
case 'cinetpay':
return redirect()->route('cinetpay.pay', $request->all());
default:
return $this->errorResponse(__('errors.unexpected_error'));
}
}
public function paymentResult(Request $request)
{
if($request->has('token')){
return $this->successResponse($request->all());
}else{
return $this->errorResponse($request->all());
}
}
}