QIWI PAY

QIWI PAY Web Payment Form, kart ödemeleri QIWI'nin sayfasında; sonuç imzalı sunucu bildirimiyle gelir.

Gereken bilgiler

QIWI PAY entegrasyonu başvuruyla açılır (bss@qiwi.com). QIWI size iki değer verir:

  • merchant_id: QIWI'nin merchant_site numarası (sayısal, örn. 555)
  • secret_key: imza anahtarı ("secret key parameter obtained with other integration settings")

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

Test ortamı: QIWI'nin ayrı bir test adresi yoktur; yeni her merchant_site önce test ortamında açılır ve canlıya alınması QIWI destek yöneticinizden istenir. Test modunda yalnız RUB (643) kullanılabilir, tek işlem en fazla 10 ruble, günde en fazla 100 test işlemi. Paneldeki sandbox (test) modu kutusunun QIWI için etkisi yoktur.

Bildirim (callback) adresi her ödemeye callback_url alanıyla eklenir; QIWI panelinde ayrıca ayar gerekmez, ancak entegrasyon sırasında sabit bir adres istenirse şunu verin:

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

QIWI bildirimi yalnız HTTPS / 443 portuna ve geçerli sertifikası olan adrese gönderir.

Akış

  1. Müşteri tutarı girer, QIWI PAY'i seçer. (Telefon zorunlu değildir.)
  2. Panel, merchant_site, tutar, para birimi, order_id (bizim ödeme referansımız) ve HMAC-SHA256 imzasını taşıyan bir formu müşterinin tarayıcısından https://pay.qiwi.com/paypage/initial adresine gönderir. Kart bilgisi ve 3-D Secure QIWI'nin sayfasında; sizin sunucunuza kart verisi uğramaz.
  3. Ödeme sonuçlanınca QIWI sunucudan sunucuya JSON bildirim gönderir. Panel bildirimin sign alanını gizli anahtarla doğrular; imza tutmuyorsa bildirim reddedilir (400) ve bakiye yüklenmez.
  4. Doğrulanan bildirimde txn_status 2 veya üstü (Authorized / Captured / Reconciled / Settled) ise bakiye yüklenir. Bildirimdeki imzalı tutar ödeme tutarının altındaysa kayıt "eksik ödeme" olur; para birimi yöntemin para birimiyle uyuşmuyorsa kayıt beklemede kalır ve Admin → Ödemeler'den karar verilir.
  5. Müşteri QIWI'nin sonuç sayfasından success_url / decline_url ile panele döner; bu dönüş yalnız yönlendirir, bakiye yüklemez.

QIWI aynı işlem için iki bildirim gönderebilir (anında ve arka planda) ve 200 yanıtı alana kadar 24 saat boyunca tekrar dener. Aynı txn_id + durum ikinci kez geldiğinde yok sayılır; bakiye iki kez yüklenmez.

Durumlar

txn_status QIWI adı Paneldeki sonuç
0 Init beklemede
1 Declined başarısız (error_code açıklaması nota yazılır)
2, 3, 4, 5 Authorized / Captured / Reconciled / Settled tamamlandı

İade (txn_type 3), iptal (4) ve payout (8) bildirimleri bakiyeye dokunmaz (tamamlanmış kayıt olduğu gibi kalır).

Para birimleri

Form, ISO 4217 sayısal kod ister; panel RUB, USD, EUR, TRY, KZT, UAH, GBP, BYN, AZN ve UZS'yi çevirir. Hangi para birimlerinin gerçekten açık olduğu merchant_site ayarınıza bağlıdır (kapalı birimde QIWI 8059 Currency is not allowed döner). Test ortamı yalnız RUB'dur.

Sık sorunlar

  • "Invalid signature" (8054): secret_key yanlış ya da başında/sonunda boşluk var. Anahtarı QIWI'den geldiği gibi yapıştırın.
  • "Merchant site not found" (8021) / "Merchant disabled" (8051): merchant_id yanlış ya da merchant_site henüz etkinleştirilmemiş; QIWI destek yöneticinize yazın.
  • Ödeme QIWI'de başarılı ama bakiye yok: Bildirim panelinize ulaşamamıştır, alan adı henüz bize yönlenmemiş ya da SSL sertifikası geçerli değil. QIWI 24 saat tekrar dener; sorun giderilince bildirim gelir. Admin → Ödemeler'deki kayıt notuna bakın.
  • Test işlemi reddediliyor: 10 ruble üstü tutar veya günlük 100 işlem sınırı (8070 / 8069). Test kartlarında son kullanma ayı 02 başarısız, 03 3 sn gecikmeli başarılı, 04 3 sn gecikmeli başarısız senaryosunu tetikler.