PayTR Inline Checkout for WooCommerce
Inline PayTR (Direct API) card payment form for WooCommerce checkout — no dependency on the official PayTR plugin, card data never touches the database.
by Batuhan Karaman · github.com/batukaraman/paytr-inline-checkout
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/batukaraman/paytr-inline-checkout/archive/refs/heads/main.zipWooCommerce checkout sayfasında kendi kart formumuzu (isim / numara / SKT / CVC + dinamik taksit tablosu), ödeme yöntemi seçilir seçilmez aynı sayfada, akordeonun içinde render eden bağımsız eklenti. Resmi "PayTR" WooCommerce eklentisine bağımlı değildir — Direkt API (Direct API) entegrasyonu bu eklenti içinde sıfırdan uygulanmıştır.
- Başarılı ödeme → Teşekkürler (Thank You) sayfası
- Başarısız ödeme → checkout'ta kalır, formun üstünde net hata
- 3D Secure → siteden çıkmadan, modal bir iframe içinde
Bağımlılıklar
| Eklenti | Tür |
|---|---|
| WooCommerce | Sert (Requires Plugins: woocommerce) |
| Resmi "PayTR" eklentisi | Yok — kullanılmıyor, gerekmiyor |
Kurulum
- Klasörü
wp-content/plugins/paytr-inline-checkout/altına koyup Eklentiler sayfasından etkinleştirin. - WooCommerce → Ayarlar → Ödemeler → PayTR — Kart ile Öde (Inline) kısmına
girip PayTR Mağaza Paneli → Ayarlar → Bilgi Al ekranından
merchant_id,merchant_key,merchant_saltbilgilerini girin. - PayTR Mağaza Paneli → Ayarlar → Bildirim URL alanına şunu yazın:
https://SITENIZ/?wc-api=paytr_inline_notifyBu adres olmadan ödemeler PayTR tarafında onaylansa bile WooCommerce siparişi tamamlanmış olarak işaretlenmez (bkz. "Nasıl çalışır").
Nasıl çalışır (özet)
paytr_inlineadında birWC_Payment_Gatewaykaydedilir.payment_fields()kart alanlarını doğrudanform.checkoutiçine (adım/isimpaytr_*) basar — üçüncü taraf bir widget yok, tüm DOM/CSS bizim.- Kart numarasının ilk 6-8 hanesi girilince
paytr_inline_binAJAX'ı BIN'i PayTR'ninbin-detailservisine sorar (banka/marka), sonucu mağazanıntaksit-oranlariservisinden gelen (30 dk önbellekli) komisyon oranlarıyla birleştirip taksit tablosunu render eder. - "Siparişi Ver": JS
checkout_place_order_paytr_inlinehandler'ı WC'nin kendi AJAX gönderimini iptal eder (falsedöner),form.checkout'u (kart alanları dahil) manuel olarak?wc-ajax=checkout'a POST eder. Gateway::process_payment()siparişi PayTR Direkt API'sine (/odeme) gönderir; kart alanları hiçbir zaman DB/log'a yazılmaz, tek istek ömründe bellekte tutulup hemen temizlenir (class-paytr-api.php). Dönen HTML (3D Secure ACS formu) 15 dakikalık bir transient'a konur veprocess_paymentsentinelredirect: '#paytr-inline-3ds|<order_id>|<key>'döner.- JS sentinel'i yakalar,
paytr_inline_get_3dsAJAX'ı ile HTML'i tek seferlik çeker (transient hemen silinir) ve modal bir `