address); $response = $this->callApi(['key' => $this->api_key, 'address' => $string_address]); if($response->successful()){ return $this->parseResponse($response->json()); } if(isset($this->address['postal_code'])) { $response = $this->callApi(['key' => $this->api_key, 'address' => $this->address['postal_code']]); if($response->successful()) return $this->parseResponse($response->json()); } $response->throw(); } public function setApiCredentials($api_key): self { $this->api_key = $api_key; return $this; } /** * callApi * * @param array $parameters * @return Response */ private function callApi(array $parameters): Response { $response = Http::retry(3, 1000)->withHeaders([])->get($this->endpoint, $parameters); return $response; } private function parseResponse($response) { if(isset($response['results']['0'])) return $response['results']['0']; throw new \Exception("Error resolving tax (code) = " . $response['rCode']); } }