WP Manifestindependent plugin directory
manifest / ecommerce / paytr-inline-checkout

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.

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/batukaraman/paytr-inline-checkout/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

WooCommerce 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

  1. Klasörü wp-content/plugins/paytr-inline-checkout/ altına koyup Eklentiler sayfasından etkinleştirin.
  2. 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_salt bilgilerini girin.
  3. PayTR Mağaza Paneli → Ayarlar → Bildirim URL alanına şunu yazın:
    https://SITENIZ/?wc-api=paytr_inline_notify

    Bu 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)

  1. paytr_inline adında bir WC_Payment_Gateway kaydedilir. payment_fields() kart alanlarını doğrudan form.checkout içine (adım/isim paytr_*) basar — üçüncü taraf bir widget yok, tüm DOM/CSS bizim.
  2. Kart numarasının ilk 6-8 hanesi girilince paytr_inline_bin AJAX'ı BIN'i PayTR'nin bin-detail servisine sorar (banka/marka), sonucu mağazanın taksit-oranlari servisinden gelen (30 dk önbellekli) komisyon oranlarıyla birleştirip taksit tablosunu render eder.
  3. "Siparişi Ver": JS checkout_place_order_paytr_inline handler'ı WC'nin kendi AJAX gönderimini iptal eder (false döner), form.checkout'u (kart alanları dahil) manuel olarak ?wc-ajax=checkout'a POST eder.
  4. 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 ve process_payment sentinel redirect: '#paytr-inline-3ds|<order_id>|<key>' döner.
  5. JS sentinel'i yakalar, paytr_inline_get_3ds AJAX'ı ile HTML'i tek seferlik çeker (transient hemen silinir) ve modal bir `