This TelecomsXChange API allows you to get an updated complete list of all country codes + country names and network operator name via a single API call.
The best way to demonstrate how this works is via an open source example that you can use as a base to build on top of it.
The demo app (Live demo here) we are publishing will have a search input and once you start typing the country code it will show a complete list of all prefixes for this country along with network operator names. then when you search it will utilize the rate lookup api to get high/low rates from the market for this specific code.
There will be two files in this example: index.php and get_zoom_list.php
First file (index.php):
<?php
// Buyer login in TelecomsXChange
$api_login ="ENTER YOUR BUYER USERNAME HERE";
//Your API key (Get one on www.telecomsxchange.com/ )
$api_key = "ENTER YOUR API KEY";
// initialising CURL
$ch = curl_init();
//controller is a script name, so in case lookup.php controller is lookup
$controller = "lookup";
//unix timestamp to ensure that signature will be valid temporary
$ts = time();
//compose signature concatenating controller api_key api_login and unix timestamp
$signature = hash( 'sha256', $controller . $api_key . $api_login . $ts);
$search = $_REQUEST['search'];
$searchform = (int) $_REQUEST['searchform'];
$type = $_REQUEST['type'];
$params = array(
'ts' => $ts, //Provide TS
'signature' => $signature,
'webapi' => '1', //required field by tcxc api
'api_login' => $api_login,
'searchform' => '1' //required field
);
if($searchform) {
$params['type'] = $type;
if(preg_match("/^(\d+)/", $search, $matches)) {
$params['prefix'] = $matches[1];
} else {
$params['country'] = $search;
}
//query against api. URL
curl_setopt($ch, CURLOPT_URL,"https://members.telecomsxchange.com/$controller.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
http_build_query($params));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
$result = json_decode($server_output, true);
$rates = $result['rates'];
curl_close ($ch);
}
?>
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
$().ready(function() {
$( "#search" ).autocomplete({
source: "get_zoom_list.php"
});
});
</script>
</head>
<body>
<div class="jumbotron">
<form action="index.php">
<input type=hidden name=searchform value=1>
<div class="input-group">
<input type="text" id=search name=search class="form-control" placeholder="Enter country code or country name" aria-describedby="basic-addon1" value="<?php echo "$search";?>" >
<select name='type' class="form-control">
<option value='ANY' <?php if($type == 'ANY') echo "SELECTED";?> >ANY</option>
<option value='NA' <?php if($type == 'NA') echo "SELECTED";?> >NA</option>
<option value='CLI' <?php if($type == 'CLI') echo "SELECTED";?> >CLI</option>
<option value='TDM' <?php if($type == 'TDM') echo "SELECTED";?> >TDM</option>
<option value='NoCLI' <?php if($type == 'NoCLI') echo "SELECTED";?> >NoCLI</option>
</select>
<input type="submit" class="form-control" value="search">
</div>
</form>
</div>
<?php
if($searchform)
if(count($rates)) {
$min_price_n = 100000.0 ;
$min_interval_1 = 1;
$min_interval_n = 1;
$max_price_n = 0.0;
$max_interval_1 = 1;
$max_interval_n = 1;
foreach($rates as $rate) {
if($min_price_n > $rate['price_n']) {
$min_price_n = $rate['price_n'];
$min_interval_1 = $rate['interval_1'];
$min_interval_n = $rate['interval_n'];
}
if($max_price_n < $rate['price_n']) {
$max_price_n = $rate['price_n'];
$max_interval_1 = $rate['interval_1'];
$max_interval_n = $rate['interval_n'];
}
}
echo "<div class='alert alert-success' role='alert'>Highest Price: $max_price_n [$max_interval_1.$max_interval_n] | Lowest Price: $min_price_n [$min_interval_1.$min_interval_n]</div>";
} else {
echo "<div class='alert alert-danger' role='alert'>No results found</div>";
}
?>
</body>
</html>Second file (get_zoom_list.php):
<?php
$q = $_REQUEST['term'];
// TelecomsXChange Buyer Username, get one at www.telecomsxchange.com/buyerjoin
$api_login ="ENTER YOUR BUYER USERNAME HERE";
//API key
$api_key = "ENTER YOUR API KEY";
// initialising CURL
$ch = curl_init();
//controller is a script name, so in case lookup.php controller is lookup
$controller = "get_zoom_list";
//unix timestamp to ensure that signature will be valid temporary
$ts = time();
//compose signature concatenating controller api_key api_login and unix timestamp
$signature = hash( 'sha256', $controller . $api_key . $api_login . $ts);
$params = array(
'ts' => $ts, //provide TS
'q' => $q,
'api_login' => $api_login,
'signature' => $signature,
'webapi' => 1,
//...
);
//query against api. URL
//debug CURL?
//curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_URL,"https://members.telecomsxchange.com/scripts/autocomplete/$controller.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
http_build_query($params));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
curl_close ($ch);
//analyze JSON output
//echo "server_output:$server_output";
$response = json_decode($server_output, JSON_OBJECT_AS_ARRAY);
//print_r($response);
if($response['status'] == 'success' ) {
header('Content-Type: application/json');
echo json_encode($response['entries']);
}
?>What you need to have to use this source code:
1- TelecomsXChange Buyer Account ( Sign up for one here: www.telecomsxchange.com/voice_api /
2- API Key (Generated from inside the portal after you signup)
