orkhanahmadov/laravel-goldenpay

View on GitHub
src/Http/Controllers/GoldenpayController.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace Orkhanahmadov\LaravelGoldenpay\Http\Controllers;

use Illuminate\Http\Request;
use Orkhanahmadov\LaravelGoldenpay\Goldenpay;
use Orkhanahmadov\LaravelGoldenpay\Models\Payment;

abstract class GoldenpayController
{
    /**
     * @var Request
     */
    protected $request;
    /**
     * @var Goldenpay
     */
    protected $goldenpay;
    /**
     * @var Payment
     */
    protected $payment;

    /**
     * Controller constructor.
     *
     * @param Request $request
     * @param Goldenpay $goldenpay
     */
    public function __construct(
        Request $request,
        Goldenpay $goldenpay
    ) {
        $this->request = $request;
        $this->goldenpay = $goldenpay;

        $this->paymentResult();
    }

    /**
     * Checks payment result with "payment_key" query parameter.
     */
    final protected function paymentResult(): void
    {
        $this->payment = $this->goldenpay->result($this->validate());
    }

    /**
     * Validates request for existence of "payment_key".
     *
     * @return string
     */
    private function validate(): string
    {
        $validated = $this->request->validate([
            'payment_key' => 'required|string',
        ]);

        return $validated['payment_key'];
    }
}