Convert API
Kripto para birimleri arasında doğrudan mağaza bakiyenizden dönüşüm yapın — anlık fiyat teklifi alın ve piyasa fiyatından işlemi gerçekleştirin.
Convert API, mağaza bakiyenizde tuttuğunuz para birimleri arasında güncel piyasa fiyatından dönüşüm yapmanızı sağlar — mağaza panelindeki Swap sekmesini çalıştıran aynı motor, artık backend'inizden çağrılabilir.
Convert uç noktaları, Payment API istekleri için kullandığınız aynı normal API anahtarınızla imzalanır — Payout API anahtarıyla değil. Bir dönüşümü gerçekleştirmek, mağaza bakiyenizi anında borçlandırır ve alacaklandırır; bu nedenle bu anahtarı para hareket ettiren herhangi bir kimlik bilgisi gibi dikkatle ele alın.
Dönüşüm fiyatı alma
Güncel piyasa fiyatından bir dönüşüm için gösterge niteliğinde bir teklif döndürür — geçerli kur ve ortaya çıkan tutarlar. Hiçbir şey borçlandırılmaz veya rezerve edilmez; işlemi gerçekleştirmeden önce istediğiniz kadar çağırabilirsiniz.
/v1/convert/priceİstek parametreleri
| Alan | Tür | Zorunlu | Açıklama | Değer |
|---|---|---|---|---|
from_currency | string | evet | Kaynak para birimi | |
to_currency | string | evet | Hedef para birimi. from_currency'den farklı olmalıdır | |
amount | decimal | evet | Dönüştürülecek tutar, 0'dan büyük | |
amount_type | string | evet | amount hangi tarafı ifade ediyor |
amount_type=from, tam olarak amount kadar from_currency harcar. amount_type=to, tam olarak amount kadar to_currency alır.
🟢 200 OK · application/json
{
"state": 0,
"result": {
"success": true,
"from_currency": "BTC",
"to_currency": "USDT",
"amount_type": "from",
"from_amount": "0.01000000",
"to_amount": "947.86690000",
"effective_rate": "94786.69000000",
"from_amount_usd": "947.87",
"to_amount_usd": "947.87"
}
}Yanıt alanları
| Alan | Tür | Açıklama |
|---|---|---|
success | boolean | Teklifin başarıyla hesaplanıp hesaplanmadığı |
from_currency | string | Kaynak para birimi |
to_currency | string | Hedef para birimi |
amount_type | string | İstekteki amount_type değerini yansıtır |
from_amount | string | from_currency cinsinden borçlandırılacak tutar |
to_amount | string | to_currency cinsinden alacaklandırılacak tutar |
effective_rate | string | Bu teklife uygulanan kur — from_currency'nin 1 biriminin to_currency karşılığı (platform fiyatlandırmasını zaten içerir) |
from_amount_usd | string | null | from_amount'ın USD karşılığı |
to_amount_usd | string | null | to_amount'ın USD karşılığı |
- Bu teklif yalnızca gösterge niteliğindedir — fiyat teklifi ile işlem çağrısı arasında piyasa fiyatı değişebilir.
- Bu çağrı hiçbir bakiyeyi borçlandırmaz veya rezerve etmez.
curl -X POST https://api.2328.io/api/v1/convert/price \
-H "Content-Type: application/json" \
-H "User-Agent: MyShop/1.0 (+https://myshop.example)" \
-H "project: YOUR_PROJECT_UUID" \
-H "sign: YOUR_HMAC_SIGNATURE"Dönüşümü gerçekleştirme
Güncel piyasa fiyatından bir dönüşümü gerçekleştirir ve mağaza bakiyenizi günceller. Ayrı bir "fiyatı onayla" adımı yoktur — dönüştürmek istediğiniz tutarla doğrudan bu uç noktayı çağırın.
/v1/convertİdempotans. İlk çağrıdan sonraki yaklaşık bir dakika içinde tam olarak aynı isteği (aynı from_currency, to_currency, amount, amount_type) tekrarlamak, ikinci bir dönüşüm oluşturmak yerine mevcut olanı döndürür. Bu süre geçtikten sonra aynı istek yeni bir dönüşüm olarak değerlendirilir — bir zaman aşımında önceki sonucu kontrol etmeden körlemesine tekrar denemeyin.
Bu uç nokta, her çağıran için dakikada 10 istek ile sınırlıdır — genel API hız sınırından daha sıkı, çünkü her çağrı gerçek bakiyeyi hareket ettirir.
İstek parametreleri
| Alan | Tür | Zorunlu | Açıklama | Değer |
|---|---|---|---|---|
from_currency | string | evet | Kaynak para birimi | |
to_currency | string | evet | Hedef para birimi. from_currency'den farklı olmalıdır | |
amount | decimal | evet | Dönüştürülecek tutar, 0'dan büyük | |
amount_type | string | evet | amount hangi tarafı ifade ediyor |
🟢 200 OK · application/json
{
"state": 0,
"result": {
"id": 12345,
"type": "manual",
"status": "completed",
"from_currency": "BTC",
"to_currency": "USDT",
"from_amount": "0.01000000",
"requested_from_amount": "0.01000000",
"refund_amount": null,
"to_amount": "947.86690000",
"exchange_rate": "94786.69000000",
"fee_amount": "0.00000000",
"from_amount_usd": "947.87",
"to_amount_usd": "947.87",
"processed_at": "2026-01-20T15:30:24Z",
"created_at": "2026-01-20T15:30:22Z"
}
}Yanıt alanları
| Alan | Tür | Açıklama |
|---|---|---|
id | int | Sistem tarafından atanan dönüşüm sipariş kimliği |
type | string | Bu API için her zaman manual |
status | string | Güncel durum (aşağıdaki «Dönüşüm durumları»na bakın) |
from_currency | string | Kaynak para birimi |
to_currency | string | Hedef para birimi |
from_amount | string | from_currency cinsinden borçlandırılan tutar |
requested_from_amount | string | null | amount_type = from olduğunda başlangıçta talep ettiğiniz kaynak tutar. amount_type = to olduğunda null |
refund_amount | string | null | Kısmi gerçekleşme sonrası size iade edilen ön borçlandırma tutarının bir kısmı. Sipariş tamamen gerçekleştiyse null |
to_amount | string | to_currency cinsinden alacaklandırılan tutar |
exchange_rate | string | Bu dönüşüme fiilen uygulanan kur — from_currency'nin 1 biriminin to_currency karşılığı (platform fiyatlandırmasını zaten içerir) |
fee_amount | string | Bu dönüşümden alınan platform ücreti; işlem yönüne bağlı olarak from_currency veya to_currency cinsindendir. Zaten exchange_rate'e yansıtılmıştır — şeffaflık için gösterilir |
from_amount_usd | string | null | from_amount'ın USD karşılığı |
to_amount_usd | string | null | to_amount'ın USD karşılığı |
processed_at | string (ISO 8601) | null | Dönüşümün ne zaman tamamlandığı. İşlem sürerken null |
created_at | string (ISO 8601) | Dönüşüm siparişinin oluşturulduğu zaman |
Dönüşüm durumları
| Durum | Açıklama |
|---|---|
pending | Oluşturuldu, henüz piyasaya gönderilmedi |
processing | Bakiye kilitlendi, sipariş piyasaya yerleştirildi |
completed | Tamamen gerçekleşti — to_amount bakiyenize alacaklandırıldı |
failed | Gerçekleştirilemedi — önceden borçlandırılan tutar otomatik olarak iade edildi |
partially_completed | Yalnızca doğrudan piyasası olmayan (bir ara para birimi üzerinden yönlendirilen) para birimi çiftleri için: ilk adım tamamlandı ancak ikincisi başarısız oldu. to_currency yerine ara para birimi alacaklandırılır — orijinal hedefinize ulaşmak için oradan tekrar dönüştürün |
curl -X POST https://api.2328.io/api/v1/convert \
-H "Content-Type: application/json" \
-H "User-Agent: MyShop/1.0 (+https://myshop.example)" \
-H "project: YOUR_PROJECT_UUID" \
-H "sign: YOUR_HMAC_SIGNATURE"Hatalar
Başarısızlık durumunda yanıt state: 1 ve bir error_code içerir — /v1/convert/price ve /v1/convert için ortak:
🔴 422 / 400 · application/json
{
"state": 1,
"error_code": "amount_too_small",
"errors": {
"amount": "Amount is too small for this conversion. Please increase the amount and try again."
}
}error_code | HTTP durumu | Açıklama |
|---|---|---|
validation_failed | 422 | Geçersiz veya eksik parametreler ya da bir iş kuralı nedeniyle reddedilme (örn. yetersiz bakiye) — ayrıntılar için errors alanına bakın |
amount_too_small | 422 | amount, bu para birimi çifti için minimum işlem yapılabilir büyüklüğün altında |
convert_unavailable | 400 | Dönüşüm şu anda gerçekleştirilemedi (piyasa verisi kullanılamıyor veya iki para birimi arasında rota yok) — kısa süre sonra tekrar deneyin |
internal_error | 400 | İstek işlenirken beklenmeyen bir sunucu içi hata oluştu |
Gelen ödemelerin otomatik dönüştürülmesi
Auto-convert gelen invoice ve statik cüzdan kredileri için bir proje ayarıdır. Bu, /v1/payment alanları ekleyerek değil, merchant kontrol panelinde yapılandırılır. Her kural bir veya daha fazla kaynak para birimi ve bir hedef para birimi seçer.
Dönüşüm tamamlandığında, ödeme bilgileri ve merchant webhooks şunları içerebilir:
{
"payment_amount": "0.14800000",
"merchant_amount": "0.146520000000000000",
"payer_currency": "XMR",
"convert": {
"to_currency": "USDT",
"commission": "0.09000000",
"rate": "323.21000000",
"amount": "47.262015740000000000"
}
}Tutar alanları bilerek ayrı tutulmuştur:
payment_amount— kaynak ödeme para biriminde zincirde tespit edilen;merchant_amount— dönüşüm öncesinde merchant'ye ait net kaynak tutarı;convert.amount—convert.to_currency'ye kredilenen tutar;convert.rateveconvert.commission— gerçekleştirilmiş dönüşüm sonucu, yerel olarak tekrar hesaplamanız gereken bir fiyat değildir.
convert'nın yokluğu anlamlıdır: dönüşüm tamamlanmamış olabilir, o kaynak için yapılandırılmamış olabilir veya kaynak para birimi kredisine geri dönmüş olabilir. Hedef tutarı /exchange-rates veya kamu piyasası fiyatından uydurmayın.
Auto-convert hatası ve fallback
Dönüşüm, blok zinciri ödemesinin alınmasından sonradır. Piyasa uygunluğu, minimum sipariş boyutları, hassasiyet sınırları, değişim zaman aşımları ve yetersiz uygulanabilir likidite dönüşümü geciktirebilir veya engelleyebilir.
- Küresel/proje minimumunun altındaki mevduatlar dönüşüm hattını atlayarak kaynak para biriminde kredilenir.
- Geçici hatalar eşzamanlı olarak yeniden denenebilir.
- Büyük veya ticarete uygun olmayan mevduatlar, retry politikası tükendiğinde kaynak para birimi kredisine geri dönebilir.
- Bir ödeme, hedef para birimi dönüşümü gerçekleşmese bile geçerli olabilir.
Entegrasyonunuz önce doğrulanmış ödemeyi saklamalı ve ardından ödeme bilgileri, isteğe bağlı convert bloğu ve merchant bakiyelerinden gerçek kredilenen para birimini uzlaştırmalıdır. Kendi analiz veya bildirim sistemlerinizi beklerken ödemenin webhook kabulünü engellemeyin.
Auto-convert kabul testleri
En azından test edin: başarılı doğrudan dönüştürme, köprü/çok adımlı dönüştürme, minimumun altındaki dust, geçici retry, fallback kaynağa çevrim, eksik ödeme, fazla ödeme, yinelenen webhook, eksik convert ve belirsiz bir timeout sonrası reconciliation.
Manuel dönüştürme uç durumları
/v1/convert/pricebir göstergelik önizlemedir; piyasa hareketi uygulama sonucunu değiştirebilir.amount_type: fromkaynak taraf talebini düzeltir,amount_type: toise hedef taraf tutarını talep eder. Onay kullanıcı arayüzünü sunarken anlamını değiştirmeyin.- Doğrudan piyasası olmayan bir çift, ara bir para birimi üzerinden yönlendirilebilir. Sadece bir adım tamamlanırsa,
partially_completedara krediyi raporlar. - Eğer bir yürütme çağrısı zaman aşımına uğrarsa, yeniden denemeden önce uzlaştırma yapın. Bir piyasa emri, HTTP yanıtı kaybolsa bile gerçekleştirilebilir.
failed’yi, yerel telafi bakiyesi girişi uygulama izni olarak değil, uzlaştırılacak bir durum olarak ele alın; platform borç/iade muhasebesine sahiptir.