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

iyzico Inline Checkout for WooCommerce

Renders iyzico's hosted card form inline inside the WooCommerce checkout accordion instead of redirecting to order-pay — companion plugin, requires the official iyzico WooCommerce plugin.

★ 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/iyzico-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 iyzico "Banka/Kredi Kartı ile Öde" formunu, ödeme yöntemi seçilir seçilmez aynı sayfada, akordeonun içinde render eden companion (yardımcı) eklenti. order-pay yönlendirme sayfasını akıştan çıkarır.

  • Başarılı ödeme → Teşekkürler (Thank You) sayfası
  • Başarısız ödeme → başka sayfaya gitmeden checkout'ta kalır, formun üstünde net hata

Neden ayrı eklenti?

Tüm ödeme akışı mantığı temadan bağımsızdır. Tema (kullanıyorsanız) yalnızca CSS ile görsel uyum sağlar; eklentinin kendi inline-checkout.css dosyası varsayılan görünümü zaten sağlar. Böylece tema güncellemesi ödeme akışını bozmaz, akış değişikliği de temayı ilgilendirmez.

Bağımlılıklar

Eklenti Tür Notu
WooCommerce Sert (Requires Plugins: woocommerce) WooCommerce'siz zaten hiçbir WC eklentisi çalışmaz.
iyzico WooCommerce (iyzico-woocommerce) Yumuşak Header'a bilinçli olarak yazılmadı. plugins_loaded içindeki guard yokluğunu yakalar: admin uyarısı gösterir, hiçbir şey kaydetmez, checkout stok davranışına döner. Fatal olmaz.

iyzico eklentisinin dosyaları değiştirilmez. Yalnızca şunlar yeniden kullanılır: SDK (\Iyzipay\...), DataFactory, CheckoutSettings, DatabaseManager ve wc-api=iyzipay callback işleyicisi (PaymentProcessor::processCallback).

Nasıl çalışır (özet)

  1. iyzico_inline adında bir WC_Payment_Gateway kaydeder; front-end checkout'ta stok iyzico gateway'ini woocommerce_available_payment_gateways ile gizler (stok gateway admin / iade / callback için ayakta kalır).
  2. payment_fields() → <div id="iyzico-inline-mount">. inline-checkout.js, yöntem seçilince / updated_checkout olayında iyzico_inline_checkout_init AJAX'ını çağırır: oturuma bağlı pending taslak sipariş oluşturur/yeniden kullanır (_iyzico_inline_pending=yes, created_via=iyzico-inline, set_cart_hash() ile WC devam ettirir), CheckoutFormInitialize çalıştırır, sonucu <div id="iyzipay-checkout-form" class="responsive"> ile sarıp akordeona enjekte eder.
  3. "Siparişi Ver" → JS checkout_place_order_iyzico_inline handler'ı (form.checkout üzerinde bağlı, WC'nin kendi submit'ini iptal için false döner) → ?wc-ajax=checkout'a manuel POST → WC doğrular + taslağı devam ettirir
    • process_payment sentinel redirect: '#iyzico-inline-pay' döner → JS iyzico'nun gizli ödeme butonuna tıklar.
  4. Başarı: iyzico callbackUrl'e POST eder → processCallback taslağı sonlandırır → Thank You.
  5. In-widget red (callback navigasyonu yok): MutationObserver + ~15 sn timeout formu açar, iyzico'nun gerçek hata sebebini formun üstünde gösterir; sepet durur, kullanıcı tekrar dener.
  6. Terk edilmiş taslaklar: saatlik iyzico_inline_checkout_gc cron'u 2 saatten eski pending/failed inline taslakları cancelled yapar; My Account bu siparişlerin pay/cancel aksiyonlarını gizler.

Kurulum / geri yükleme

Bu klasörü olduğu gibi wp-content/plugins/iyzico-inline-checkout/ altına koyup Eklentiler sayfasından etkinleştirmek yeterlidir. Ayrı bir build adımı, composer/npm bağımlılığı yoktur.

WordPress core dosyaları sıfırlanırsa: wp-content/plugins/ genelde korunur, korunmazsa bu repoyu tekrar klonlayıp aynı yola koymak yeterli.

Stil

Varsayılan görünüm assets/css/inline-checkout.css ile gelir (bu eklentiyle birlikte otomatik yüklenir). Sitenizin tema renklerine uyacak şekilde bu dosyadaki değişkenleri (renkler, radius) düzenleyebilirsiniz.

Geliştirme notları

  • iyzico eklentisi filtre sunmaz (tek istisna iyzico_default_settings); bu yüzden akış hook + SDK yeniden kullanımı ile kurulmuştur.
  • iyzico form DOM'undaki Emotion class hash'leri iyzico güncellemesinde değişebilir; CSS'te [class*="SemanticName"] seçicileri bu yüzden tercih edildi, hash değişirse görünüm nazikçe bozulur, akış çalışmaya devam eder.
  • Test kartları (sandbox): başarı 5528790000000008 (12/30, 123); limit yetersiz 4111111111111129; taksitli 5451030000000000.