Sign in
Ödemeler ve çekimler/Payment API

Ödeme API'si

2328.io Ödeme API'si ile kripto para ödeme oturumları oluşturun ve yönetin.

Ödeme API'si, ödeme oturumları oluşturmanıza, müşterileri hosted checkout'a yönlendirmenize ve ödeme durumunu takip etmenize olanak tanır.

Ödeme oluştur

Bir ödeme oturumu oluşturur ve müşterinin ödeme yapması için bir URL döner.

İstek parametreleri

AlanTipGerekliAçıklamaDeğerler
amountdecimalevetPara biriminde ödeme tutarı, örn. 100.00
currencystringevetFiat para birimi (USD, EUR, RUB, …) veya kripto para (USDT, TRX, BTC, …)
order_idstringevetSipariş ID'niz, örn. ORDER-12345 (en fazla 128 karakter)
to_currencystringhayırÖnceden seçilmiş kripto para
networkstringhayır*Ağ kodu (to_currency ayarlandığında veya currency bir kripto para olduğunda gereklidir)
url_returnstringhayırÖdemeden sonra yönlendirme URL'si, örn. https://your-site.com/return
url_successstringhayırurl_return için alternatif
url_callbackstringevetWebhook bildirimleri için URL, örn. https://your-site.com/webhook
invite_codestringhayırYönlendiren kodu
fee_splitdecimalhayırÖdeyene aktarılan merchant ücreti payı, 0–100 (%). 0 = merchant tamamen öder, 100 = ödeyen tamamen öder. Proje düzeyindeki ayarı geçersiz kılar. Örnek: 30 (ödeyen ücretin %30'unu karşılar).
price_markupdecimalhayırFatura tutarı üzerinde markup veya iskonto, −99 ile 100 (%) arası. Proje düzeyindeki ayarı geçersiz kılar. Örnek: 5 (+%5) veya -10 (%10 indirim).
descriptionstringhayırİsteğe bağlı fatura açıklaması (en fazla 200 karakter). Ödeme sayfasında ödeyene gösterilir. Örnek: Premium plan — Order #12345.
ttl_secondsinthayırFaturanın saniye cinsinden geçerlilik süresi, 300 (5 dakika) ile 86400 (24 saat) arasında. Bu sürenin sonunda fatura sona erer ve artık ödenemez. Varsayılan: 3600 (1 saat). Örnek: 3600.

Yanıt

JSON
{
  "state": 0,
  "result": {
    "uuid": "abc123-def456-...",
    "order_id": "ORDER-12345",
    "amount": "100.00",
    "currency": "USD",
    "amount_usd": "100.00",
    "exchange_rate": null,
    "url": "https://2328.io/pay/abc123-def456-...",
    "tg_deeplink": "https://t.me/my2328bot?start=pay_abc123-def456-...",
    "expires_at": "2026-01-11T21:00:00Z",
    "created_at": "2026-01-11T20:00:00Z",
    "payer_currency": "USDT",
    "payer_amount": "100.50",
    "network": "TRX-TRC20",
    "address": "TXYZabc123...",
    "payment_status": "check",
    "txid": null,
    "payment_amount": null,
    "qr": "data:image/png;base64,iVBORw0..."
  }
}
  • Müşteriyi ödemeyi tamamlamak için result.url adresine yönlendirin.
  • tg_deeplink — Telegram MiniApp üzerinden ödeme için Telegram bot deeplink'i.
  • qr — yatırma adresinin Base64 ile encode edilmiş QR kodu (data URI). Bir adres zaten atandığında mevcuttur (network, to_currency ile birlikte ayarlandığında veya currency bir kripto para olduğunda); aksi takdirde null.
  • txid, payment_amount — müşteri ödeme yapana kadar null'dur. İşlem zincir üzerinde tespit edildiğinde doldurulur. Bunun ne zaman olacağını öğrenmek için payment_status: paid webhook'unu dinleyin.
  • exchange_rate — dönüştürme henüz uygulanabilir değilse null (örn. fiat → kripto kuru henüz kilitlenmedi). Bir ödeyen para birimi seçildiğinde doldurulur.
Credentials
RequestPOST/v1/payment
curl -X POST https://api.2328.io/api/v1/payment \
  -H "Content-Type: application/json" \
  -H "User-Agent: MyShop/1.0 (+https://myshop.example)" \
  -H "project: YOUR_PROJECT_UUID" \
  -H "sign: YOUR_HMAC_SIGNATURE"
Response
Click Try it to see the response here.

Hosted checkout, H2H ve tam kripto miktarları

Aynı uç nokta üç farklı invoice şekli destekler. Birini kasıtlı olarak seçin; miktar anlamlarını karıştırmayın.

Ödeyen seçeneğiyle Hosted checkout

amount, currency, order_id ve url_callback gönderin, ancak to_currency ve network’yi atlayın. Yanıt result.url içerir; address, qr ve bazen ödeyen alanları, ödeyen barındırılan sayfada bir yön seçeneği belirleyene kadar null olarak kalır.

JSON
{
  "amount": "125.00",
  "currency": "EUR",
  "order_id": "ORDER-2026-1042",
  "url_callback": "https://merchant.example/webhooks/2328",
  "url_return": "https://merchant.example/orders/ORDER-2026-1042"
}

Doğrudan adres H2H invoice

Hem to_currency hem network gönderin. 2328.io, API call sırasında blok zincirinde invoice oluşturur, böylece başarılı bir yanıtı müşteriyi yeniden yönlendirmeden ödeme sayfanız içinde görüntüleyebilirsiniz.

JSON
{
  "amount": "100.00",
  "currency": "USD",
  "to_currency": "USDT",
  "network": "TRX-TRC20",
  "order_id": "ORDER-2026-1043",
  "url_callback": "https://merchant.example/webhooks/2328"
}

Bu değerleri tam olarak döndüğü şekilde render edin:

  • payer_amount ve payer_currency — ödeme talimatı;
  • network ve address — bu invoice için tek hedef;
  • qr — aynı adres için bir veri URI’si;
  • expires_at — invoice son tarihi;
  • url — özel ödeme sayfası tamamlanamadığında yararlı bir barındırılan fallback

Hiçbir zaman bir adres oluşturmayın veya ikame etmeyin, başka bir invoice’den adres tekrar kullanmayın veya payer_amount’yı halka açık fiyat üzerinden hesaplamayın. API yanıtı otoritatiftir.

Tam kripto miktarı için fatura

invoice kendisi kripto para cinsindeyse kriptoyu currency’ya koyun:

JSON
{
  "amount": "25.000000",
  "currency": "USDT",
  "network": "TRX-TRC20",
  "order_id": "ORDER-2026-1044",
  "url_callback": "https://merchant.example/webhooks/2328"
}

İstenen kripto değeri payer_currency / payer_amount içinde korunur. Hizmet ayrıca muhasebe ve oran alanları için içsel olarak USD değerini tutabilir; kesin kripto talimatını bu değerle değiştirmeyin. Döndürülen ondalık dizeleri, son hassasiyet dahil, koruyun.

Yalnızca bir desteklenen ağı olan kripto para için ağ otomatik olarak seçilebilir. Belirli bir entegrasyon için network’yı açıkça sağlamak yine de önerilir. Stabilcoinler gibi çok ağlı varlıklar için, her zaman gönderin.

Idempotency ve retries

order_id, kimliği doğrulanmış merchant projesine ait olarak kapsamlanmıştır ve oluşturma idempotency anahtarı olarak işlev görür. Eğer bir ödeme zaten mevcutsa, API o oturumu state: 0 ile döndürür.

Aynı order_id ile bir retry "bu invoice'i güncelle**" anlamına** gelmez. Değişen miktar, para birimi, geri çağrı, işaretleme, TTL veya yön alanları mevcut oturum geri döndüğü için göz ardı edilebilir. İlk talebi ısrarla devam ettirin ve kendi uygulamanızda çelişkili retries sorunu reddedin.

Önerilen oluşturma algoritması:

  1. Yerel ödeme denemenizi ve benzersiz order_id tek bir veritabanı işlemini ekleyin.
  2. İmzalanmış API isteği gönderin.
  3. Geri dönen uuid ve tam yanıtı ısrarla ver.
  4. HTTP sonucu kaybolursa, retry aynı istek veya sorgu /v1/payment/info tarafından order_id tarafından gönderilir.
  5. Sadece yukarı akış isteği zaman dolması nedeniyle ikinci yerel sipariş oluşturma.

Ödeme uç durumları

DurumDoğru yol tutuşu
address / qr nullÖdeme yönlendirmesi henüz başlatılmadı. url'a yönlendirin veya yeni bir doğru belirtilmiş H2H invoice ile yeni bir order_id oluşturun.
HTTP 400 doğrulama hatasıAlan düzeyinde errors'yi okuyun; retry değişmemiş girdi.
HTTP 429Retry ile titrek üstel geri çekilme ve aynı order_id devam eder.
HTTP 503 / direction_disabledYenile /v1/directions; yönü geçici olarak veya retry sonra gizleyin.
Müşteri talebi timeoutSonucu bilinmeyen gibi ele alın. Başka bir şey oluşturmadan önce order_id tarafından sorgulayın.
underpaid_checkKısmi etkinliği saklayıp bir güncelleme veya daha sonraki bir durum bekleyin. Daha fazla mesaj geldiğinde iki kez kredi vermeyin.
underpaidSon eksik ödeme durumu. Yapılandırılmış yerine getirme/manuel inceleme politikanızı gerçek kredili tutara uygulayın.
overpaidFazla parayla başarılı bir ödeme. reconciliation/iade politikası için gerçek tutarları aynı şekilde yerine getirin ve saklayın.
aml_lockFonları otomatik olarak yerine getirmeyin veya serbest bırakmayın; uyumluluk/destek iş akışına yönlendirin.
cancelInvoice süresi doldu veya iptal edildi. Bir zincir üzerindeki gecikmiş transferin imkansız olduğunu varsaymayın; herhangi bir sonraki olayı destek ile uzlaştırın.

Tarayıcı dönüş URL’si yalnızca gezinme içindir. Bir müşteri ödemeden açabilir, ödedikten sonra kapatabilir veya daha sonra tekrar oynatabilir. Yalnızca doğrulanmış bir API/webhook durumu merchant siparişini sonuçlandırabilir.

Ödeme bilgisi

Mevcut ödeme durumunu uuid veya order_id ile alın.

İstek parametreleri

AlanTipGerekliAçıklamaDeğerler
uuidstringevet*Ödeme UUID (oluşturmadaki result.uuid'den)
order_idstringevet*Sipariş ID'niz

uuid veya order_id'den en az biri gereklidir.

RequestPOST/v1/payment/info
curl -X POST https://api.2328.io/api/v1/payment/info \
  -H "Content-Type: application/json" \
  -H "User-Agent: MyShop/1.0 (+https://myshop.example)" \
  -H "project: YOUR_PROJECT_UUID" \
  -H "sign: YOUR_HMAC_SIGNATURE"
Response
Click Try it to see the response here.

Ödeme listesi

Filtreleme ve sayfalama ile tüm ödemelerin bir listesini alın.

İstek parametreleri

AlanTipGerekliAçıklamaDeğerler
statusstringhayırÖdeme durumuna göre filtre (bkz. References)
date_fromdatehayırBaşlangıç tarihi (YYYY-MM-DD), örn. 2026-01-01
date_todatehayırBitiş tarihi (YYYY-MM-DD), örn. 2026-01-31
pageinthayırSayfa numarası, varsayılan 1
per_pageinthayırSayfa başına öğe, varsayılan 15, en fazla 5000
RequestPOST/v1/payment/list
curl -X POST https://api.2328.io/api/v1/payment/list \
  -H "Content-Type: application/json" \
  -H "User-Agent: MyShop/1.0 (+https://myshop.example)" \
  -H "project: YOUR_PROJECT_UUID" \
  -H "sign: YOUR_HMAC_SIGNATURE"
Response
Click Try it to see the response here.