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.

by Batuhan Karaman · github.com/batukaraman/paytr-inline-checkout

0stars
0forks

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.zip

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 `