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.

by Batuhan Karaman · github.com/batukaraman/iyzico-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/iyzico-inline-checkout/archive/refs/heads/main.zip

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.