43 lines
1.4 KiB
PHP
43 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Services\RobokassaService;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Validation\Rule;
|
|
use Illuminate\View\View;
|
|
|
|
class PaymentController extends Controller
|
|
{
|
|
public function create(Request $request, RobokassaService $robokassa): View
|
|
{
|
|
$validated = $request->validate([
|
|
'amount' => [
|
|
'required',
|
|
'numeric',
|
|
'decimal:0,2',
|
|
Rule::numeric()->min((float) config('services.robokassa.minimum_amount'))->max((float) config('services.robokassa.maximum_amount')),
|
|
],
|
|
]);
|
|
|
|
$user = $request->user();
|
|
$invoice = $robokassa->createInvoice($user->id, (string) $validated['amount']);
|
|
|
|
return view('payments.redirect', [
|
|
'paymentUrl' => config('services.robokassa.payment_url'),
|
|
'parameters' => $robokassa->paymentParameters($invoice, $user->email),
|
|
]);
|
|
}
|
|
|
|
public function success(): RedirectResponse
|
|
{
|
|
return redirect()->route('cabinet.index')->with('status', 'Пополнение принято. Слёзы Элуны скоро появятся на счёте.');
|
|
}
|
|
|
|
public function fail(): RedirectResponse
|
|
{
|
|
return redirect()->route('cabinet.index')->with('error', 'Оплата отменена или не была завершена.');
|
|
}
|
|
}
|