/home/kueuepay/www/resources/installer/src/Helpers/RequirementHelper.php
<?php 

namespace Project\Installer\Helpers;

use Exception;

class RequirementHelper {

    public $error_helper;
    public $config;
    public $requirements;
    public $requirements_status;

    public function __construct(ErrorHelper $error_helper, ConfigHelper $config)
    {
        $this->error_helper = $error_helper;
        // $this->config = $this->getConfig();
        $this->config = $config->get();
        $this->requirements = $this->config['requirements'] ?? [];
    }

    public function getRequirementStatus() {
        $php_requirements       = $this->handlePHPRequirements();
        $server_requirements    = $this->handleServerRequirements();

        $requirements_status = [
            'php'   => $php_requirements,
            'server'    => $server_requirements,
        ];

        $this->requirements_status = $requirements_status;

        // Set Step Session
        $this->setStepSession();

        return $requirements_status;
    }

    public function setStepSession() {

        $requirements_status = $this->requirements_status;

        $version_status = [data_get($requirements_status,'php.version.status')];
        $extensions_status = data_get($requirements_status,'php.extensions.*.status');
        $server_modules_status = data_get($requirements_status,'server.*.status');

        $all_status = array_merge($version_status,$extensions_status,$server_modules_status);

        if(in_array(false,$all_status)) { // If one false value is available
            session()->put('requirement',false);
        }else {
            session()->put('requirement',"PASSED");
        }
    }

    public static function step() {
        return session('requirement');
    }

    public function handleServerRequirements() {

        $server_software_info_array = explode(" ",$_SERVER['SERVER_SOFTWARE']);
        $software_info = array_shift($server_software_info_array);

        $software_info_array = explode("/",$software_info);

        $software_name = array_shift($software_info_array);
        $software_version = array_pop($software_info_array);

        $server_requirement_status = [];
        if(strtolower($software_name) == 'apache') {
            // Need to check apache server requirements
            $server_requirement_status = $this->checkApacheRequirements();
        }

        return $server_requirement_status;
    }


    public function checkApacheRequirements() {
        $apache_requirements = $this->requirements['apache'] ?? [];

        $apache_requirement_status = [];
        if(function_exists("apache_get_modules")) {
            foreach($apache_requirements as $key => $item) {
                $apache_requirement_status[$key] = [
                    'name'      => $item,
                    'status'    => false,
                    'message'   => "",
                ];
    
                if(in_array($item,apache_get_modules())) {
                    $apache_requirement_status[$key]['status'] = true;
                }else {
                    $apache_requirement_status[$key]['message'] = "Module " . $item . " is required!";
                }
            }
        }

        return $apache_requirement_status;
    }

    public function handlePHPRequirements() {
        $php_requirements = $this->requirements['php'] ?? [];
        if(count($php_requirements) == 0 || !isset($php_requirements['min_version']) || !isset($php_requirements['extensions'])) {
            throw new Exception('Invalid Server Requirement Configuration File');
        }

        $php_version_status = $this->checkPHPVersion($php_requirements['min_version']);
        $php_extension_status = $this->checkPHPExtensions($php_requirements['extensions']);

        return [
            'version'       => $php_version_status,
            'extensions'    => $php_extension_status,
        ];
    }

    public function checkPHPVersion(string $require_version) {

        $data = [
            'status'        => false,
            'server_v'      => phpversion(),
            'requirement_v' => $require_version,
            'message'       => "",
        ];

        if($data['server_v'] >= $data['requirement_v']) {
            $data['status']  = true;
        }else {
            $data['message'] = "Server PHP version must not be less then ". $require_version;
        }

        return $data;
    }

    public function checkPHPExtensions(array $require_extensions) {

        $extensions_status = [];
        foreach($require_extensions as $key => $item) {

            $extensions_status[$key] = [
                'name'      => $item,
                'status'    => false,
                'message'   => "",
            ];

            if(extension_loaded($item)) {
                $extensions_status[$key]['status'] = true;
            }else {
                $extensions_status[$key]['message'] = "Extension " . $item . " is required!";
            }

        }
        return $extensions_status;
    }

    public function requirementConfigIsInvalid() {
        $requirements = $this->requirements['requirements'] ?? null;
        if(!is_array($requirements)) return false;
        return true;
    }
}
Access Token

Get Access Token

Get access token to initiates payment transaction.

Endpoint: POST generate-token
Parameter Type Comments
client_id string Enter merchant API client/primary key
secret_id string Enter merchant API secret key
env string Enter merchant API environment
merchant_id string Enter merchant API merchant id
Just request to that endpoint with all parameter listed below:
                    
                        Request Example (guzzle)
                        

<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', $base_url. 'v1/generate-token', [
'headers' => [
  'accept' => 'application/json',
  'content-type' => 'application/json',
 ],
'form_params' => [
  'client_id' => '$client_id',
  'secret_id' => 'secret_id',
  'env' => 'env',
  'merchant_id' => 'merchant_id',
 ],
]);
echo $response->getBody();
                    
                        
**Response: SUCCESS (200 OK)**
{
 "message": {
 "success": [
  "Successfully token is generated"
 ]
},
"data": {
 "token":"eyJpdiI6InpkczhjTjhQdVhUL2lKQ0pSUUx6aUE9P
SIsInZhbHVlIjoiVGVBTVBDTXltbjNZcEIvdEJveGpTSno3TU5NRUtn
VkhCZ1pHTFNCUnZGQ2UxMnYxN202cEE1YVRDTEFsc0ZERExoTjdtL0dTL2x
oU3QzeUJJOExiMUx5T0w1L0llUXhTUkU1cWVLWEdEbEplb0dKNXcwbTNRM0
VxdkUwYzZuNFdtNkhMQ0pRZysyNWkvdzBxSlBoSVBSOGFTekNnR2RXNHVtc
G9lMGZOTmNCcm1hR3c5Sk9KTnB4Y3ltZDl6cm90MThrR21Ca3B1azc3bXRi
Q0J6SW96UVo1elNkU1ZqeE05bTcwWGp1MEUxWlJFdnNWTmpSbnVpeW92b2U
4dXZkUGgyb1VmK0luaGdyaFlsVTZlcVpVRnZlTG1DeFF6Ykk2T2h6Z3Jzbn
IyNHpNdHowSE5JdDR0Y0pZT20zUm1XYW8iLCJtYWMiOiJlY2M4NGE1OGUzYz
kzYzk0YzljNmVmNjE0YWI0ZDIwOGI3NDQ2YWEyY2ZhNzc0NzE4ZmY1ZmYyMz
IyZmQzNDY1IiwidGFnIjoiIn0=",
},
"type": "success"
}
                    
                        
**Response: ERROR (400 FAILED)**
{
 "message": {
 "error": [
  "Invalid credentials."
 ]
},
"data": null,
"type": "error"
}