function commerce_avatax_get in Drupal Commerce Connector for AvaTax 7.4
Sends HTTP GET request to endpoint.
Return value
array Returns an associative array containing 'meta' and 'body' elements.
1 call to commerce_avatax_get()
- commerce_avatax_validate_address in ./
commerce_avatax.module - Validate the shipping address entered on checkout form.
File
- ./
commerce_avatax.module, line 600 - Calculate Sales Tax using AvaTax service from Avalara, Inc.
Code
function commerce_avatax_get($endpoint, $parameters, $base_url = '', $account = '', $license = '') {
$querystring = '';
if (is_array($parameters)) {
$querystring = http_build_query($parameters);
$querystring = str_replace("amp;", "", $querystring);
}
$curl_opts = array(
// Return result instead of echoing.
CURLOPT_RETURNTRANSFER => TRUE,
// Follow redirects, Location: headers.
CURLOPT_FOLLOWLOCATION => FALSE,
// But dont redirect more than 10 times.
CURLOPT_MAXREDIRS => 10,
// Abort if network connection takes more than 5 seconds.
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_SSL_VERIFYPEER => TRUE,
);
list($use_mode, $product_version, $account, $license, $base_url) = commerce_avatax_get_config($account, $license, $base_url);
$curl_opts[CURLOPT_HTTPHEADER] = array(
'Content-Type: text/json',
'Authorization: Basic ' . base64_encode("{$account}:{$license}"),
'Date: ' . date(DATE_RFC1123, REQUEST_TIME),
);
$url = rtrim($base_url, '/') . '/' . ltrim($endpoint, '/');
if ($querystring) {
$url .= '?' . $querystring;
}
$curl = curl_init($url);
foreach ($curl_opts as $opt => $val) {
curl_setopt($curl, $opt, $val);
}
$body = curl_exec($curl);
$meta = curl_getinfo($curl);
curl_close($curl);
if ($body === FALSE) {
watchdog('commerce_avatax', 'AvaTax request failed. message: %msg', array(
'%msg' => curl_error($curl),
), WATCHDOG_ERROR);
return array(
'body' => '',
'meta' => $meta,
);
}
if ($use_mode == COMMERCE_AVATAX_DEVELOPMENT_MODE) {
watchdog('commerce_avatax', 'Request info: !url !headers !response !meta', array(
'!url' => "<pre>URL : {$url}</pre>",
'!headers' => "<pre>Request Headers:\n" . var_export($curl_opts[CURLOPT_HTTPHEADER], TRUE) . '</pre>',
'!response' => "<pre>Response:\n" . check_plain(var_export($body, TRUE)) . '</pre>',
'!meta' => "<pre>Response Meta:\n" . var_export($meta, TRUE) . '</pre>',
), WATCHDOG_DEBUG);
}
if ($body) {
$body_parsed = json_decode($body, TRUE);
return array(
'body' => $body_parsed,
'meta' => $meta,
);
}
else {
return array(
'body' => '',
'meta' => $meta,
);
}
}