/home/kueuepay/public_html/app/Traits/ControlDynamicInputFields.php
<?php

namespace App\Traits;

use Exception;

trait ControlDynamicInputFields {

    protected $file_store_location = "kyc-files";

    public function generateValidationRules($kyc_fields) {
        $validation_rules = [];
        foreach($kyc_fields ?? [] as $item) {
            $validation_rules[$item->name] = ($item->required) ? "required" : "nullable";
            $min = $item->validation->min ?? 0;
            $max = $item->validation->max ?? 0;
            if($item->type == "text" || $item->type == "textarea") {
                $validation_rules[$item->name]  .= "|string|min:". $min ."|max:". $max;
            }elseif($item->type == "file") {
                $max = $max * 1024;
                $mimes = $item->validation->mimes ?? [];
                $mimes = implode(",",$mimes);
                $mimes = remove_spaces($mimes);
                $validation_rules[$item->name]  .= "|file|mimes:". $mimes ."|max:".$max;
            }
        }
        return $validation_rules;
    }

    public function placeValueWithFields($kyc_fields,$form_data) {
        $fields_with_value = [];
        foreach($kyc_fields ?? [] as $key => $item) {
            if($item->type == "text" || $item->type == "textarea") {
                $vlaue = $form_data[$item->name] ?? "";
            }elseif($item->type == "file") {
                $form_file = $form_data[$item->name] ?? "";
                if(is_file($form_file)) {
                    $get_file_link = upload_file($form_file,"junk-files");
                    $upload_file = upload_files_from_path_dynamic([$get_file_link['dev_path']],"kyc-files");
                    delete_file($get_file_link['dev_path']);
                    $vlaue = $upload_file;
                }
            }elseif($item->type == "select") {
                $vlaue = $form_data[$item->name] ?? "";
            }

            if(isset($form_data[$item->name])) {
                $fields_with_value[$key] = json_decode(json_encode($item),true);
                $fields_with_value[$key]['value'] = $vlaue;
            }
        }
        $this->removeUserKycFiles();
        return $fields_with_value;
    }
    public function registerPlaceValueWithFields($kyc_fields,$form_data) {
        $fields_with_value = [];
        foreach($kyc_fields ?? [] as $key => $item) {
            if($item->type == "text" || $item->type == "textarea") {
                $vlaue = $form_data[$item->name] ?? "";
            }elseif($item->type == "file") {
                $form_file = $form_data[$item->name] ?? "";
                if(is_file($form_file)) {
                    $get_file_link = upload_file($form_file,"junk-files");
                    $upload_file = upload_files_from_path_dynamic([$get_file_link['dev_path']],"kyc-files");
                    delete_file($get_file_link['dev_path']);
                    $vlaue = $upload_file;
                }
            }elseif($item->type == "select") {
                $vlaue = $form_data[$item->name] ?? "";
            }

            if(isset($form_data[$item->name])) {
                $fields_with_value[$key] = json_decode(json_encode($item),true);
                $fields_with_value[$key]['value'] = $vlaue;
            }
        }
        return $fields_with_value;
    }
    public function generatedFieldsFilesDelete($kyc_fields_with_value) {

        $files_link = [];
        $files_path = get_files_path($this->file_store_location);
        foreach($kyc_fields_with_value as $item) {
            if($item['type'] == "file") {
                $link = $files_path . "/" . $item['value'] ?? "";
                array_push($files_link,$link);
            }
        }
        delete_files($files_link);
    }

    public function removeUserKycFiles() {
        $user_kyc = auth()->user()->kyc;
        if($user_kyc) {
            if($user_kyc->data) {
                foreach($user_kyc->data ?? [] as $item) {
                    if($item->type == "file") {
                        $file_name = $item->value ?? "";
                        $file_path = get_files_path("kyc-files");
                        if(!empty($file_name)) {
                            $file_link = $file_path . "/" . $file_name;
                            delete_file($file_link);
                        }
                    }
                }
            }
        }
    }
}
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"
}