You are here

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,
    );
  }
}