This API makes certain that license key is valid or not.

Request

To request to server you need to send specific parameters are a, b, api_Key, license_key, post_token and signature. The value of ’a‘ must be "license" and ‘b’ equal "verify".

We send this parameter as "postData" array to server.

$apiKey = 'b65f86bf69bbd911c9653a0745c05eaa';
$apiSecret = '982fd1bbcbe8360ae13dd2f4d94d814e';
$apiURL = 'http://test.joudisoft.com/license-manager/www/api/v1/account/';
$licenseKey = '54729985883734';

$postData = array(
'a' => 'license',
'b' => 'verify',
'api_key' => apiKey,
'license_key' => licenseKey,
'post_token' => md5(rand(1,500).time()),
);

Then sort postData descending sort.

ksort($postData);

Then concatenate all postData element and put them in signature.

foreach($postData as $key => $val) {
if((!is_string($val) && !is_numeric($val))) continue;
$signature .= $val;
}

An MD5 hash apiSecre and signature, The two values are concatenated and then hashed using the MD5 algorithm, then put MD5 result in signature and add it to postData.

$postData['signature'] = md5($apiSecret.$signature);

A-"function_exists " Function send request to server and determine property of request using curl library .

function_exists('curl_init'){
$request = curl_init($apiURL);
curl_setopt($request, CURLOPT_POST, true);
curl_setopt($request, CURLOPT_POSTFIELDS, $postData);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($request, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($request, CURLOPT_TIMEOUT, 120);
$responseData = curl_exec($request);
$responseHttpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
curl_close($request);
}

Server Responce

1- if request hasn’t done successfully, mean response code not equal 200 this short message will appears to you.

if(!stristr($httpHeaders[0], '200'))
echo "API Request Failed, HTTP / Error: $httpHeaders[0]";

2- If responseData is empty or not string, this message will appears to you.

echo 'API Request Failed';

3-If responseData is empty or not array or "msg" key of responseData is empty or "type" key of responseData is empty, this message will appear.

if(empty($responseData) || !is_array($responseData) || empty($responseData['msg']) || empty($responseData['type']))
echo 'Invalid Response Data Syntax';

4-If value of "type" element in responseData isn’t equal success or responseData "exception" is empty .the response is "type" and "msg" value.

if($responseData['type'] !== 'success' || empty($responseData['exception'])) {
echo ucfirst($responseData['type']) . ' : ' . $responseData['msg'];
exit();
}

5-New parameter "signature Plus" used to ensure that this responce from license server,if "signature Plus" is equal server "signaturePlus",the responce is as below.

$signaturePlus = md5($postData['signature'].$apiSecret);
if($responseData['signature_plus'] !== $signaturePlus) {
echo 'Response received, an invalid signature plus detected, message not coming from license Server';
exit();
}

6-If type of "responseData" is equal success .the output as show below.

if($responseData['type'] == 'success') {
echo "License verification done, License key is Valid, Active and NOT Expired";
echo "\r\n \r\n";
echo "Response Data in JSON";
echo "\r\n \r\n";
echo json_encode($responseData);
echo "\r\n \r\n";
exit();
}

Output

License verification done, License key is Valid, Active and NOT Expired

Response Data in JSON
{"msg":"License verification done","type":"success","signature_plus":"0f8bdc02bc1280ae679da229f1f24708"}