Tutorial/PHP i Laravel

Kursy walut w PHP i Laravel

Pobieraj i buforuj kursy przez klienta HTTP Laravel z bearer auth, timeoutem i metadanymi świeżości.

MMexchangerate.dev·Jul 17, 2026·6 min czytania

Mały serwis Laravel może odrzucać błędy i buforować pełną obserwację przez 60 sekund. Klucz trzymaj w konfiguracji, a z kursem zwracaj source, market_session i data_updated_at.

Key points
Użyj bearer auth, timeout i throw().
Buforuj pełną poprawną odpowiedź przez 60 sekund.
Klucz czytaj z EXCHANGERATE_API_KEY.
Do dokładnych obliczeń użyj biblioteki dziesiętnej.

Zbuduj buforowany serwis FX

Serwis tworzy stabilny klucz z bazy i posortowanych symboli. throw() działa przed zapisem do cache, więc błąd nie staje się kursem.

php · app/Services/ExchangeRateService.phpcopy
<?php

namespace App\Services;

use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Http;

final class ExchangeRateService
{
    public function latest(string $base, array $symbols): array
    {
        sort($symbols);
        $symbolList = implode(',', $symbols);
        $cacheKey = "fx:latest:{$base}:{$symbolList}";

        return Cache::remember($cacheKey, now()->addSeconds(60), function () use (
            $base,
            $symbolList,
        ): array {
            return Http::acceptJson()
                ->withToken(config('services.exchangerate.key'))
                ->timeout(5)
                ->get(
                    "https://api.exchangerate.dev/v1/latest/{$base}",
                    ['symbols' => $symbolList],
                )
                ->throw()
                ->json();
        });
    }
}

Skonfiguruj klucz poza kodem

php · config/services.php and .envcopy
// config/services.php
'exchangerate' => [
    'key' => env('EXCHANGERATE_API_KEY'),
],

// .env (never commit the real value)
EXCHANGERATE_API_KEY=exr_live_...

Odczytaj kurs i pola obserwacji

Po $service->latest("USD", ["EUR", "GBP"]) odczytaj $result["rates"]["EUR"] i zachowaj pola source, market_session oraz data_updated_at.

Nie buforuj błędów jako kursów
401 oznacza błędny klucz, a 429 przekroczony limit. Poprzedni wynik zachowuj tylko z jego oryginalnym czasem.
  • Sortuj symbole przed kluczem cache.
  • Ustaw timeout.
  • Wywołaj throw przed cache.
  • Zaokrąglaj kwotę końcową, nie kurs.
MM
exchangerate.dev
Przewodniki integracyjne dla programistów pracujących z danymi FX.

Keep reading

GuideHistoryczne szeregi FX w jednym wywołaniuRead ReferenceJak czytać source i market_sessionRead GuideKurs orientacyjny a wykonywalnyRead