Skip to content

Kaikki WordPressistä, web-kehityksestä — ja paljon muuta

💰 PHP API Bitcoinin nykyisen hinnan hakemiseen vuonna 2026: yksinkertaisesta skriptistä tuotantovalmiseen ratkaisuun

💰 PHP API Bitcoinin nykyisen hinnan hakemiseen vuonna 2026: yksinkertaisesta skriptistä tuotantovalmiseen ratkaisuun

Sivusto hyväksyy kryptovaluuttaa, ja vaihtokurssi heilahtaa muutaman prosentin puolen tunnin sisällä. Asiakas haluaa nähdä Bitcoinin nykyisen hinnan fiat-valuutassa suoraan käyttöliittymässä, ei kuvakaappausta pörssistä, vaan live-luvun APIsta.

Kurssin manuaalinen seuraaminen CoinMarketCap-välilehden kautta vie aikaa ja antaa viivästynyttä dataa. Valmiit krypto-lisäosat taas ovat usein turvonneita: mainoksia, turhia pyyntöjä, lukittu yhteen lähteeseen.

Alla on kaksi tapaa hakea Bitcoinin nykyinen hinta PHP:llä: perus 10 rivin skriptistä tuotantovalmiseen ratkaisuun, jossa on välimuistitus ja lähdevalinta. Ei maksullisia paketteja, ei 40 megatavun SDK:ta.

💡 Pikaopas:

  • API-lähteen valinta: Bitpay (ilmainen, ei vaadi avainta) tai CoinGecko (enemmän dataa, myös ilmainen)
  • PHP-skriptin kirjoittaminen file_get_contentsilla tai cURLilla, molemmat tavat selitettynä
  • Virheenkäsittelyn ja 5 minuutin tiedostovälimuistin lisääminen, jotta APIa ei kutsuta jokaisella sivulatauksella

Mikä on kryptovaluuttakurssien API ja miksi PHP-kehittäjä tarvitsee sitä

Kryptopörssien ja aggregaattorien API:t palauttavat nykyisen kurssin HTTP:n yli: teet GET-pyynnön ja saat JSON-vastauksen, jossa on "BTC/USD"-pari ja numero. WebSocketia tai tilausta ei tarvita: tavallinen PHP-skripti edullisella hostingilla hoitaa homman mainiosti.

Tyypillisiä käyttötapauksia:

  • Maksuyhdyskäytävä. Näytä käyttäjälle: "Maksettava summa: 0.00031 BTC", jossa kurssi haetaan APIsta eikä keksitä päästä.
  • Kojelauta. Verkkokaupan hallintapaneeli, jossa on "Kryptovaluuttakurssit"-lohko.
  • Salkun seuranta. Omistat 5 kolikkoa, ja skripti päivittää niiden kokonaisarvon kerran minuutissa.

Tähän artikkeliin valittiin kaksi ilmaista ja rekisteröitymistä vaatimatonta lähdettä: Bitpay ja CoinGecko. Molemmat toimivat HTTPS:n yli, palauttavat JSONia eivätkä vaadi API-avainta perustasolla.

Kaavio Bitcoinin kuukausittaisesta transaktiomäärästä

Vaihe 1: kurssin hakeminen Bitpayn APIsta

Bitpay on Bitcoinin maksuprosessori. Sillä on julkinen päätepiste /api/rates, joka palauttaa BTC-kurssit yli 150 fiat-valuutalle yhdessä JSON-taulukossa. Ei tokenia, ei pyyntörajoituksia peruskäytössä.

Yksinkertainen tapa: file_get_contents

Lyhin toimiva koodi. Lisää se bitcoin-rates.php-tiedostoon sivustosi juureen ja avaa selaimessa:

1<?php
2$url = "https://bitpay.com/api/rates";
3$json = json_decode(file_get_contents($url), true);
4
5foreach ($json as $item) {
6 if ($item['code'] === 'USD') {
7 echo '1 BTC = $' . $item['rate'] . "\n";
8 }
9 if ($item['code'] === 'EUR') {
10 echo '1 BTC = €' . $item['rate'] . "\n";
11 }
12}

Skripti pyytää koko kurssitaulukon, käy sen läpi ja tulostaa vain USD:n ja EUR:n. file_get_contents() HTTPS-URL:lla toimii, jos allow_url_fopen = On-direktiivi on käytössä php.ini-tiedostossa; useimmilla hosting-palveluntarjoajilla se on oletuksena aktiivinen.

Luotettavampi tapa: cURL

file_get_contents ei aseta aikakatkaisuja ja epäonnistuu hiljaa verkkovirheissä. Oikealle verkkosivustolle cURL on parempi valinta:

1<?php
2$ch = curl_init();
3curl_setopt_array($ch, [
4 CURLOPT_URL => 'https://bitpay.com/api/rates',
5 CURLOPT_RETURNTRANSFER => true,
6 CURLOPT_TIMEOUT => 10,
7 CURLOPT_SSL_VERIFYPEER => true,
8]);
9$response = curl_exec($ch);
10$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
11curl_close($ch);
12
13if ($httpCode !== 200 || !$response) {
14 echo 'API temporarily unavailable.';
15 exit;
16}
17
18$data = json_decode($response, true);
19
20foreach ($data as $item) {
21 if ($item['code'] === 'USD') {
22 echo '1 BTC = $' . number_format($item['rate'], 2) . "\n";
23 }
24}

10 sekunnin aikakatkaisu, HTTP-statuskoodin tarkistus ja number_format luettavaa tulostetta varten. Käytännössä tällainen skripti riittää upottamaan kurssin sivuston alatunnisteeseen tai sivupalkkiin.

Vaihe 2: vaihtoehtoinen lähde, CoinGecko API

Bitpay tarjoaa kursseja vain BTC:lle ja BCH:lle. Jos tarvitset myös Ethereumin, Solanan tai minkä tahansa muun top 500 -omaisuuserän, yhdistä CoinGecko APIin. Ilmainen taso sallii 10-30 pyyntöä minuutissa ilman avainta.

Yksinkertainen pyyntö Bitcoinin ja Ethereumin hinnoille

/api/v3/simple/price-päätepiste hyväksyy pilkulla erotetun listan kolikoita ja valuuttoja vs_currencies-parametrin kautta:

1<?php
2$url = 'https://api.coingecko.com/api/v3/simple/price'
3 . '?ids=bitcoin,ethereum'
4 . '&vs_currencies=usd,eur,rub';
5
6$ch = curl_init();
7curl_setopt_array($ch, [
8 CURLOPT_URL => $url,
9 CURLOPT_RETURNTRANSFER => true,
10 CURLOPT_TIMEOUT => 10,
11]);
12$response = curl_exec($ch);
13curl_close($ch);
14
15$prices = json_decode($response, true);
16
17echo 'BTC: $' . $prices['bitcoin']['usd'] . ' / €' . $prices['bitcoin']['eur'] . "\n";
18echo 'ETH: $' . $prices['ethereum']['usd'] . ' / ₽' . $prices['ethereum']['rub'] . "\n";

Vastaus on kompakti ja sisältää vain pyytämäsi kolikot ja valuutat. Ei tarvetta käydä läpi 150:tä riviä.

Mitä muuta CoinGecko osaa

  • Historiatiedot: /api/v3/coins/bitcoin/history?date=01-01-2026, kurssi tiettynä päivänä.
  • Markkinadata: /api/v3/coins/bitcoin, markkina-arvo, volyymi, 24 tunnin muutos, liikkeessä oleva määrä.
  • Trendaavat kolikot: /api/v3/search/trending, päivän suosituimmat haut.

Yksinkertaiseen "BTC/USD"-kurssiin ensimmäinen esimerkki riittää. Jos rakennat kojelautaa, yhdistä laajennettuun päätepisteeseen.

Vaihe 3: välimuistitus ja suojaus API-virheiltä

Ulkoisen API:n kutsuminen jokaisella sivulatauksella on huono käytäntö. Verkko voi nikotella, CoinGeckon palvelin voi olla hetken alhaalla, ja kävijä näkee virheen kurssin sijaan.

Vankka ratkaisu on tiedostovälimuisti. Skripti tallentaa API-vastauksen paikalliseen JSON-tiedostoon ja päivittää sen kerran 5 minuutissa. Kaikki välissä tulevat pyynnöt lukevat välimuistista, välittömästi ja ilman ulkoisia kutsuja.

1<?php
2$cacheFile = __DIR__ . '/btc-cache.json';
3$cacheTime = 300; // 5 minutes
4
5// If cache is fresh — read it
6if (file_exists($cacheFile) && (time() - filemtime($cacheFile)) < $cacheTime) {
7 $data = json_decode(file_get_contents($cacheFile), true);
8 echo '1 BTC = $' . number_format($data['bitcoin']['usd'], 2);
9 echo ' (cached, updated ' . date('H:i:s', filemtime($cacheFile)) . ')';
10 exit;
11}
12
13// Cache is stale or missing — request API
14$ch = curl_init();
15curl_setopt_array($ch, [
16 CURLOPT_URL => 'https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd',
17 CURLOPT_RETURNTRANSFER => true,
18 CURLOPT_TIMEOUT => 10,
19]);
20$response = curl_exec($ch);
21$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
22curl_close($ch);
23
24if ($httpCode !== 200 || !$response) {
25 // API is down — serve stale cache if available
26 if (file_exists($cacheFile)) {
27 $data = json_decode(file_get_contents($cacheFile), true);
28 echo '1 BTC = $' . number_format($data['bitcoin']['usd'], 2);
29 echo ' (stale cache — API did not respond)';
30 exit;
31 }
32 echo 'No data available. Please try again later.';
33 exit;
34}
35
36// Save fresh response and output
37file_put_contents($cacheFile, $response);
38$data = json_decode($response, true);
39echo '1 BTC = $' . number_format($data['bitcoin']['usd'], 2);
40echo ' (fresh data)';

Huomaa, että skripti tarkistaa välimuistin ensin ja kutsuu APIa vain tarvittaessa. Jos API ei vastaa, viimeisin tallennettu kurssi tarjoillaan "vanhentunut välimuisti" -merkinnällä. Kävijä näkee numeron, ei tyhjää virhesivua.

Ennen kuin viet skriptin tuotantosivustolle, varmista, että PHP:llä on kirjoitusoikeudet skriptin hakemistoon. Tee myös täysi varmuuskopio, koska skripti kirjoittaa tiedoston levylle.

Yllä oleva video tarjoaa visuaalisen läpikäynnin CoinGecko APIsta reaaliaikaisine pyyntö- ja vastausesimerkkeineen. Se sopii, jos työskentelet krypto-API:n kanssa ensimmäistä kertaa ja haluat nähdä koko syklin: GET-pyynnöstä JSON-jäsentämiseen.

⁉️🤔 Usein kysytyt kysymykset

Kumpi API kannattaa valita, Bitpay vai CoinGecko?

Jos tarvitset vain Bitcoinin dollarikurssin, valitse Bitpay. Se on yksinkertaisempi, palauttaa vastauksen yhtenä taulukkona ilman parametreja, eikä siinä ole rajoituksia. Jos aiot työskennellä tusinan kolikon kanssa tai näyttää kaavioita, valitse CoinGecko: enemmän dataa, joustavat päätepisteet ja ilmainen taso, joka kattaa pienen projektin tarpeet.

Vaatiiko Bitpayn API API-avaimen?

Julkinen päätepiste /api/rates ei vaadi avainta. Se on avoin päätepiste, jota lompakot ja pörssit käyttävät kurssien näyttämiseen. Kaupalliset Bitpayn päätepisteet (laskujen luonti, maksujen vastaanotto) vaativat tokenin, mutta niitä ei tarvita pelkkään kurssien hakuun.

Miksei CoinMarketCapin API?

CoinMarketCapin ilmainen taso vaatii rekisteröitymisen ja avaimen. Raja on 10 000 pyyntöä kuukaudessa, mikä riittää pienelle projektille. Kuitenkin "aloita tyhjästä ilman rekisteröitymistä" -lähestymistapaan Bitpay ja CoinGecko ovat kätevämpiä: kopioi URL, liitä koodiisi, ja se toimii.

Entä jos hostingini estää file_get_contentsin ulkoisille URL-osoitteille?

Vaihda cURLiin, joka on saatavilla käytännössä millä tahansa hostingilla. Jos cURL on myös poistettu käytöstä (harvinaista vuonna 2026), kysy palveluntarjoajaltasi curl.so-laajennuksen käyttöönotosta PHP:ssä. Vaihtoehto on käyttää wp_remote_get()-funktiota WordPressin sisällä; tämä funktio toimii ytimen HTTP-API:n kautta ja valitsee automaattisesti saatavilla olevan siirtotavan.

Kuinka usein kurssit päivittyvät APIssa?

Bitpay päivittää kurssin jokaisella pyynnöllä; luvut heijastavat senhetkistä markkinoiden osto- ja myyntikurssien erotusta. CoinGecko päivittää datan 30-60 sekunnin välein simple price -päätepisteelle. Verkkosivuston näyttötarkoituksiin "kerran 5 minuutissa" -päivitystiheys on enemmän kuin riittävä; kryptomarkkinat ovat volatiiilit, mutta eivät niin paljon, että sekuntikohtaisilla heilahteluilla olisi väliä informaatiolohkolle.

Mikä API valita tehtävääsi

Bitpay ja CoinGecko palvelevat eri tarpeita kilpailematta suoraan keskenään:

  • Jos rakennat maksulomaketta, jossa on "BTC → USD" -muunnos, käytä Bitpayta: yksi URL-rivi, minimaalinen koodi, aina tuoreet kurssit.
  • Jos rakennat kojelautaa, jossa on kaavioita ja 10 kolikon salkku, käytä CoinGeckoa: erähintapyynnöt, historiatiedot, markkina-arvo ja volyymi yhdellä kutsulla.
  • Jos tarvitset nopeimman mahdollisen aloituksen ilman ulkoisia riippuvuuksia, käytä Bitpayta ilman cURLia file_get_contentsin kautta: 10 riviä koodia ja kurssi on sivullasi.

Aloita yksinkertaisesti: kopioi tämän artikkelin ensimmäinen esimerkki, vaihda valuutta omaksesi ja avaa se selaimessa. Jos se toimii, kääri se välimuistitukseen käyttäen vaiheen 3 mallia ja vie tuotantosivustollesi. Kerro kommenteissa, minkä API:n lopulta valitsit.