<?php
/**
* TME API - code snippet.
*
* More info at: https://developers.tme.eu
*/
if(!function_exists('hash_hmac')) {
function hash_hmac($algo, $data, $key, $raw_output = false)
{
$algo = strtolower($algo);
$pack = 'H'.strlen($algo('test'));
$size = 64;
$opad = str_repeat(chr(0x5C), $size);
$ipad = str_repeat(chr(0x36), $size);
if (strlen($key) > $size) {
$key = str_pad(pack($pack, $algo($key)), $size, chr(0x00));
} else {
$key = str_pad($key, $size, chr(0x00));
}
for ($i = 0; $i < strlen($key) - 1; $i++) {
$opad[$i] = $opad[$i] ^ $key[$i];
$ipad[$i] = $ipad[$i] ^ $key[$i];
}
$output = $algo($opad.pack($pack, $algo($ipad.$data)));
return ($raw_output) ? pack($pack, $output) : $output;
}
}
ini_set('display_errors', 1);
error_reporting(E_ALL);
$token = 'b050bd709a43eecc443820c022b6774ca703ddb216b6f6765f';//'<put_your_token_here>';
$app_secret = '5656847466f0e5d08577';//<put_your_app_secret_here>';
$params = array(
'SymbolList' => array('1N4007'),
'Country' => 'PL',
'Currency' => 'PLN',
'Language' => 'PL',
);
$response = api_call('Products/GetPrices', $params, $token, $app_secret, true);
$result = json_decode($response, true);
var_dump(PHP_VERSION);
echo '<pre>';
print_r($result);
echo '</pre>';
//---------------------------------------------------------
function api_call($action, $params, $token, $app_secret, $show_header=false)
{
$api_url = 'https://api.tme.eu/' . $action . '.json';
// calculate HMAC-SHA1 signature
$params['Token'] = $token;
ksort($params);
// In PHP 5.4 http_build_query() offers enc_type parameter (PHP_QUERY_RFC3986) which replaces bellow snippet.
$encoded_params = str_replace(
array('+', '%7E'),
array('%20', '~'),
http_build_query($params)
);
$signature_base = 'POST' . '&' . rawurlencode($api_url) . '&' . rawurlencode($encoded_params);
$api_signature = base64_encode(hash_hmac('sha1', $signature_base, $app_secret, true));
$params['ApiSignature'] = $api_signature;
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => http_build_query($params)
)
);
return file_get_contents($api_url, false, stream_context_create($opts));
}
preferences:
41.97 ms | 402 KiB | 5 Q