Para Birimleri ve Kurlar
Para birimlerini, kurlarını ve kur sağlayıcısını yöneten sekiz uç.
Genel Bakış
Kurulumun bir ana para birimi vardır ve diğerlerinin kuru ona göre tutulur. Fiyatlar, faturalar ve raporlar bu noktadan geçerek çevrilir.
Kurlar ya elle yazılır ya da bir sağlayıcı modülünden gelir. Sağlayıcı seçilir, sıklığı belirlenir ve zamanlanmış görev kurları tazeler; ayrıca elle tetikleyen bir uç da vardır.
Bir para birimi ülkelere bağlanabilir: ziyaretçinin ülkesi hangi para birimini göreceğini belirler. Bir ülke aynı anda tek bir para birimine bağlanır.
Referans
Para Birimlerini Listeleme
Kurulumdaki bütün para birimlerini kurlarıyla döndürür.
curl 'https://panel.ornek.com/api/v1/admin/financial/currencies' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/financial/currencies', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const { data } = await res.json();
const base = data.find((c) => c.local);$ch = curl_init('https://panel.ornek.com/api/v1/admin/financial/currencies');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Kurlar ANA para birimine goredir; iki yabanci para arasinda cevirim once ondan gecer.
$all = Api::Financial()->GetCurrencies()['data'];
$base = current(array_filter($all, fn ($c) => $c['local']));Kur Ayarlarını Getirme
Kurları hangi sağlayıcının verdiğini ve ne sıklıkta güncellendiğini döndürür.
curl 'https://panel.ornek.com/api/v1/admin/financial/currency-settings' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/financial/currency-settings', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/financial/currency-settings');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Son calisma ani ESKIYSE kurlar bayattir; otomatik guncelleme sessizce durmus olabilir.
$s = Api::Financial()->GetCurrencySettings()['data'];Kur Ayarlarını Yazma
Kur sağlayıcısını ve güncelleme düzenini değiştirir.
curl -X PUT 'https://panel.ornek.com/api/v1/admin/financial/currency-settings' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"module":"WAtlas","auto_rate_enabled":true,"update_period":"day"}'const res = await fetch('https://panel.ornek.com/api/v1/admin/financial/currency-settings', {
method: 'PUT',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
module: 'WAtlas',
auto_rate_enabled: true,
update_period: 'day',
}),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/financial/currency-settings');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'module' => 'WAtlas',
'auto_rate_enabled' => true,
]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Saglayiciyi degistirmeden ONCE sinama ucundan gecirin; yanlis anahtar sessiz bayatlik uretir.
Api::Financial()->TestCurrencyModule(['module' => 'WAtlas']);
Api::Financial()->UpdateCurrencySettings(['module' => 'WAtlas']);Sağlayıcıyı Sınama
Bir kur sağlayıcısından örnek kur çekerek bağlantıyı sınar.
curl -X POST 'https://panel.ornek.com/api/v1/admin/financial/currency-modules/test' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"module":"WAtlas"}'const res = await fetch('https://panel.ornek.com/api/v1/admin/financial/currency-modules/test', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ module: 'WAtlas' }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/financial/currency-modules/test');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['module' => 'WAtlas']),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Sinama CANLI baglanti kurar ve hicbir sey kaydetmez; henuz secilmemis saglayici da sinanir.
$r = Api::Financial()->TestCurrencyModule([
'module' => 'WAtlas',
'module_data' => ['WAtlas' => ['api_key' => $key]],
])['data'];Kurları Güncelleme
Kurları sağlayıcıdan elle çeker.
message kur modülünün kendi hata mesajını taşır; modül mesaj vermediyse sabit bir "kullanılabilir kur yok" cümlesi döner.curl -X POST 'https://panel.ornek.com/api/v1/admin/financial/currencies/sync' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/financial/currencies/sync', {
method: 'POST',
headers: { Authorization: `Bearer ${apiKey}` },
});
const { data } = await res.json();
if (! data.rates_changed) console.warn(data.reason);$ch = curl_init('https://panel.ornek.com/api/v1/admin/financial/currencies/sync');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Basarili bir cagri kurlarin DEGISTIGI anlamina gelmez; sebep alanini okuyun.
$r = Api::Financial()->SyncCurrencyRates()['data'];
if (! $r['rates_changed']) error_log($r['reason'] ?? 'skipped');Para Birimi Detayı
Tek bir para birimini döndürür.
curl 'https://panel.ornek.com/api/v1/admin/financial/currencies/4' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/financial/currencies/${id}`, {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/financial/currencies/' . $id);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Ana para biriminin kuru DAIMA birdir; onu degistirmeye calismak anlamsizdir.
$c = Api::Financial()->GetCurrency(['id' => $id])['data'];Para Birimini Güncelleme
Para biriminin görünümünü, kurunu ve bağlarını değiştirir.
curl -X PATCH 'https://panel.ornek.com/api/v1/admin/financial/currencies/4' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"name":"US Dollar","prefix":"$","hidden":false}'const res = await fetch(`https://panel.ornek.com/api/v1/admin/financial/currencies/${id}`, {
method: 'PATCH',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ name: 'US Dollar', prefix: '$', hidden: false }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/financial/currencies/' . $id);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['name' => 'US Dollar', 'prefix' => '$']),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Ana para birimi alanini TEK BASINA bir bayrak sanmayin: kurulumun para tabani degisir
// ve butun kurlar yeniden hesaplanir.
Api::Financial()->UpdateCurrency(['id' => $id, 'prefix' => '$']);Para Birimini Açma ve Kapatma
Para biriminin kullanılabilir olup olmadığını belirler.
curl -X PUT 'https://panel.ornek.com/api/v1/admin/financial/currencies/4/status' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"status":true}'const res = await fetch(`https://panel.ornek.com/api/v1/admin/financial/currencies/${id}/status`, {
method: 'PUT',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ status: true }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/financial/currencies/' . $id . '/status');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['status' => true]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Kapatmak o para birimindeki GECMIS faturalari bozmaz; yalniz yeni secimleri engeller.
Api::Financial()->SetCurrencyStatus(['id' => $id, 'status' => false]);Tuzaklar
Güncelleme gövdesindeki ana para birimi alanı sıradan bir seçenek değildir: kurulumun para tabanını taşır, ayar dosyasına yazar ve bütün kurları yeniden hesaplattırır. Fiyatlar aynı sayıda kalır ama artık başka bir birimi anlatır. Bu alanı yanlışlıkla göndermek en pahalı hatalardan biridir.
Otomatik güncelleme açıkken bir kuru elle yazmak geçici bir düzeltmedir: sağlayıcı bir sonraki koşuda üzerine yazar. Kalıcı bir kur istiyorsanız önce otomatik güncellemeyi kapatın. Elle yazdıktan sonra "kur geri döndü" durumunun sebebi budur.
Güncelleme ucu, kurları çekmeden döndüğü durumları da başarılı sayar ve sebebi ayrı bir alanda yazar. Sağlayıcı yanıt vermemiş, süre dolmamış ya da ayar kapalı olabilir. Yalnız yanıt koduna bakan bir izleme, kurların aylardır bayat olduğunu göremez.
Bir ülkeyi bir para birimine bağlarken o ülke başka bir para biriminde duruyorsa çağrı reddedilir. Ülke listesi gönderildiğinde yerine geçer, yani eksik gönderilen bir ülke bağdan düşer. Ülkeleri değiştirirken mevcut listeyi okuyup üzerine ekleyin.
Sınama ucu canlı bir bağlantı kurar ve hiçbir şey kaydetmez; henüz seçilmemiş bir sağlayıcıyı geçici ayarlarla deneyebilirsiniz. Sınamadan geçirmeden sağlayıcı değiştirmek, kurların sessizce güncellenmemesine yol açar: hata görünmez, yalnız son güncelleme anı yerinde kalır.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.