/** * Access API Correios. * * @param string $tracking_code Tracking code. * * @return SimpleXMLElement|stdClass History Tracking code. */ protected function get_tracking_history($tracking_code) { $user_data = $this->get_user_data(); $args = apply_filters('woocommerce_correios_tracking_args', array('Usuario' => $user_data['login'], 'Senha' => $user_data['password'], 'Tipo' => 'L', 'Resultado' => 'T', 'Objetos' => $tracking_code)); $api_url = $this->get_tracking_history_api_url(); $request_url = add_query_arg($args, $api_url); $params = array('timeout' => 30); $this->logger('Requesting tracking history in: ' . print_r($request_url, true)); $response = wp_safe_remote_get($request_url, $params); if (!is_wp_error($response) && $response['response']['code'] >= 200 && $response['response']['code'] < 300) { try { $tracking_history = wc_correios_safe_load_xml($response['body'], LIBXML_NOCDATA); } catch (Exception $e) { $this->logger('Tracking history invalid XML: ' . $e->getMessage()); } } else { $tracking_history = new stdClass(); $tracking_history->error = true; } $this->logger('Tracking history response: ' . print_r($tracking_history, true)); return $tracking_history; }
/** * Get shipping prices. * * @return SimpleXMLElement */ public function get_shipping() { $shipping = null; // Checks if service and postcode are empty. if (!$this->is_setted()) { return $values; } if (!is_null($this->package)) { $package = $this->package->get_data(); $this->height = $package['height']; $this->width = $package['width']; $this->length = $package['length']; $this->weight = $package['weight']; } if ('yes' == $this->debug) { if (!empty($package)) { $package = array('weight' => $this->weight, 'height' => $this->height, 'width' => $this->width, 'length' => $this->length); } $this->log->add($this->id, 'Weight and cubage of the order: ' . print_r($package, true)); } $args = apply_filters('woocommerce_correios_shipping_args', array('nCdServico' => $this->service, 'nCdEmpresa' => apply_filters('woocommerce_correios_login', '', $this->id), 'sDsSenha' => apply_filters('woocommerce_correios_password', '', $this->id), 'sCepDestino' => wc_correios_sanitize_postcode($this->destination_postcode), 'sCepOrigem' => wc_correios_sanitize_postcode($this->get_origin_postcode()), 'nVlAltura' => $this->float_to_string($this->height), 'nVlLargura' => $this->float_to_string($this->width), 'nVlDiametro' => $this->float_to_string($this->diameter), 'nVlComprimento' => $this->float_to_string($this->length), 'nVlPeso' => $this->float_to_string($this->weight), 'nCdFormato' => $this->format, 'sCdMaoPropria' => apply_filters('woocommerce_correios_own_hands', 'N', $this->id), 'nVlValorDeclarado' => round(number_format($this->declared_value, 2, '.', '')), 'sCdAvisoRecebimento' => apply_filters('woocommerce_correios_receipt_notice', 'N', $this->id), 'StrRetorno' => 'xml'), $this->id); $url = add_query_arg($args, $this->get_webservice_url()); if ('yes' == $this->debug) { $this->log->add($this->id, 'Requesting Correios WebServices: ' . $url); } // Gets the WebServices response. $response = wp_safe_remote_get($url, array('timeout' => 30)); if (is_wp_error($response)) { if ('yes' == $this->debug) { $this->log->add($this->id, 'WP_Error: ' . $response->get_error_message()); } } elseif ($response['response']['code'] >= 200 && $response['response']['code'] < 300) { try { $result = wc_correios_safe_load_xml($response['body'], LIBXML_NOCDATA); } catch (Exception $e) { if ('yes' == $this->debug) { $this->log->add($this->id, 'Correios WebServices invalid XML: ' . $e->getMessage()); } } if (isset($result->cServico)) { $service = $result->cServico; if ('yes' == $this->debug) { $this->log->add($this->id, 'Correios WebServices response: ' . print_r($service, true)); } $shipping = $service; } } else { if ('yes' == $this->debug) { $this->log->add($this->id, 'Error accessing the Correios WebServices: ' . print_r($response, true)); } } return $shipping; }
/** * Get shipping prices. * * @return SimpleXMLElement */ public function get_shipping() { $shipping = null; // Checks if services and postcode is empty. if (!$this->is_setted()) { return $values; } if (!is_null($this->package)) { $package = $this->package->get_data(); $this->height = $package['height']; $this->width = $package['width']; $this->length = $package['length']; $this->weight = $package['weight']; } if ('yes' == $this->debug) { if (!empty($package)) { $package = array('weight' => $this->weight, 'height' => $this->height, 'width' => $this->width, 'length' => $this->length); } $this->log->add($this->id, 'Weight and cubage of the order: ' . print_r($package, true)); } $args = apply_filters('woocommerce_correios_international_shipping_args', array('tipoConsulta' => 'Geral', 'especif' => $this->service, 'uforigem' => '', 'localidade' => '', 'pais' => '', 'altura' => $this->float_to_string($this->height), 'largura' => $this->float_to_string($this->width), 'profundidade' => $this->float_to_string($this->length), 'peso' => $this->float_to_string($this->weight), 'reset' => 'true'), $this->id); $url = add_query_arg($args, $this->get_webservice_url()); if ('yes' == $this->debug) { $this->log->add($this->id, 'Requesting Correios WebServices: ' . $url); } // Gets the WebServices response. $response = wp_safe_remote_get($url, array('timeout' => 30)); if (is_wp_error($response)) { if ('yes' == $this->debug) { $this->log->add($this->id, 'WP_Error: ' . $response->get_error_message()); } } elseif ($response['response']['code'] >= 200 && $response['response']['code'] < 300) { try { $result = wc_correios_safe_load_xml($response['body'], LIBXML_NOCDATA); } catch (Exception $e) { if ('yes' == $this->debug) { $this->log->add($this->id, 'Correios WebServices invalid XML: ' . $e->getMessage()); } } if (isset($result->exporta_facil->tipo_servico)) { $service = $result->exporta_facil->tipo_servico; if ('yes' == $this->debug) { $this->log->add($this->id, 'Correios WebServices response: ' . print_r($service, true)); } $shipping = $service; } } else { if ('yes' == $this->debug) { $this->log->add($this->id, 'Error accessing the Correios WebServices: ' . print_r($response, true)); } } return $shipping; }