Binance Pay

Binance Pay ile kripto tahsilat, müşteri Binance uygulaması ya da web checkout'undan öder, bakiye Binance'in imzalı bildirimiyle yüklenir.

Gereken bilgiler

Binance Merchant Admin PortalDeveloper menüsünden yeni bir API anahtar çifti oluşturun:

  • api_key: Binance'in "API identity key" dediği değer
  • secret_key: "API secret key"; yalnız oluşturma anında tam gösterilir, hemen kaydedin (sonradan görünen kısaltılmış hali çalışmaz)

Panelinizde Ayarlar → Ödemeler → Yöntem ekle → Binance Pay seçin, iki değeri girin.

Sandbox yok: Binance Pay'in ayrı bir test ortamı yoktur; tek adres bpay.binanceapi.com'dur. "Sandbox (test) modu" kutusunun bu yöntemde etkisi yoktur, akışı denemek için gerçek anahtarla küçük tutarlı bir sipariş açın ve ödemeden bırakın (sipariş bir saat sonra PAY_CLOSED ile kapanır).

IP kısıtı: Merchant Portal'daki "IP Access Restrictions" alanı doluysa Binance yalnız o IP'lerden gelen çağrıları kabul eder (hata 400004). Ya alanı boş bırakın ya da sunucumuzun IP'sini ekleyin.

Bildirim (webhook) adresi

Bildirim adresini Binance panelinde ayarlamanız gerekmez: panel her siparişe kendi adresini webhookUrl alanında iliştirir ve Binance dokümanına göre bu alan portaldaki ayarı geçersiz kılar. Adres kalıbı:

https://<panel-alan-adınız>/payments/binance_pay/callback

Bu adrese gelen istek müşterinin tarayıcısı değil, Binance'in sunucusudur. Müşterinin tarayıcısı ödeme sonrası /payments/binance_pay/return adresine döner; o sayfa yalnız yönlendirir, bakiye yüklemez.

Akış

  1. Müşteri tutarı girer, Binance Pay'i seçer.
  2. Panel Binance'te bir sipariş açar (Create Order v3) ve müşteriyi Binance'in barındırdığı ödeme sayfasına yönlendirir; orada QR ile Binance uygulamasından ya da Binance hesabıyla giriş yaparak öder.
  3. Binance, siparişin merchantTradeNo alanındaki bizim referansımızla birlikte imzalı bir bildirim gönderir.
  4. Panel bildirimi Binance'in RSA açık anahtarıyla doğrular (anahtar, imzalı certificates çağrısıyla Binance'ten alınır ve 6 saat önbellekte tutulur; doğrulama tutmazsa bir kez yenilenir). İmza tutmayan bildirim reddedilir ve bakiye yüklenmez.
  5. PAY_SUCCESS gelirse bakiye yüklenir; Binance'e {"returnCode":"SUCCESS"} yanıtı verilir. Aynı sipariş için tekrar gelen bildirim yok sayılır.

Müşteri ödemeyi tamamlayıp panele döndüğünde bildirim henüz gelmemiş olabilir; bakiye birkaç saniye içinde, bildirim işlendiğinde görünür. Bildirim ulaşmazsa Binance altı kez daha dener.

Durumlar

Binance bizStatus Panelde
PAY_SUCCESS ödeme tamamlandı, bakiye yüklendi
PAY_CLOSED sipariş ödenmeden kapandı (süre doldu / iptal) → "süresi doldu"
PAY_FAIL yalnız otomatik ödeme (direct debit) sözleşmelerinde gelir → "başarısız"

Binance Pay siparişleri ya tamamen ödenir ya da hiç ödenmez; eksik ödeme durumu yoktur.

Para birimleri

Binance siparişleri kriptoyla (varsayılan USDT) tahsil eder. Panelinizin para birimine göre iki yol vardır:

  • TRY, USD, EUR ve diğer itibari paralar: tutar Binance'e fiatAmount + fiatCurrency olarak gönderilir; Binance kendi piyasa kuruyla USDT karşılığını hesaplar ve müşteriden o kadar USDT alır. Bakiyeye müşterinin istediği tutar (ör. 100 TRY) yüklenir; Binance'in tahsil ettiği kripto tutarı ödeme kaydına not düşülür. Desteklenen itibari para listesi Binance'in asset-service/product/currency listesidir (TRY ve USD listededir). Kur Binance'indir; panel kur uygulamaz.
  • USDT, USDC, BNB, BTC: yöntem para birimi bunlardan biriyse tutar doğrudan orderAmount + currency ile gönderilir ve bildirimdeki tahsil edilen tutar bakiyeyle birebir karşılaştırılır.

currency: "USD" seçeneği Binance'te yalnız BPay'e özel onaylı üye işyerlerine açıktır; bu yüzden USD panelleri de itibari yoldan (fiat) gönderilir.

Binance'in komisyonu Binance hesabınızdan düşer; panel bakiyesine siparişin tam tutarı yüklenir.

Sık sorunlar

  • 400002 INVALID_SIGNATURE / 400004 INVALID_API_KEY_OR_IP: anahtar çifti yanlış ya da kısaltılmış haliyle kopyalanmış; IP kısıtı varsa sunucu IP'si listede değil.
  • 400003 INVALID_TIMESTAMP: Binance isteği 1 saniyelik pencerede işler; sunucu saati NTP ile eşit olmalı (bizim sunucularımızda eşittir).
  • 400201 INVALID_MERCHANT_TRADE_NO: aynı referansla ikinci sipariş; panel her ödeme için yeni referans üretir, bu hata görülürse Admin → Ödemeler'deki kaydın notuna bakın.
  • Ödeme yapıldı ama bakiye yok: Bildirim imzası doğrulanamadıysa panel 400 döner ve Binance yeniden dener; Admin → Ödemeler'de kayıt "bekliyor"da kalır. Anahtarların doğru Merchant hesabına ait olduğundan emin olun (sertifika çağrısı da aynı anahtarla imzalanır).
  • Dönüş sayfasında "ödendi" görünüyor ama bakiye bekliyor: tarayıcı dönüşü bildirimden önce gelebilir; birkaç saniye bekleyip sayfayı yenileyin.