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
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.zipWooCommerce 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)
iyzico_inlineadında birWC_Payment_Gatewaykaydeder; front-end checkout'ta stokiyzicogateway'iniwoocommerce_available_payment_gatewaysile gizler (stok gateway admin / iade / callback için ayakta kalır).payment_fields()→<div id="iyzico-inline-mount">.inline-checkout.js, yöntem seçilince /updated_checkoutolayındaiyzico_inline_checkout_initAJAX'ı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.- "Siparişi Ver" → JS
checkout_place_order_iyzico_inlinehandler'ı (form.checkoutüzerinde bağlı, WC'nin kendi submit'ini iptal içinfalsedöner) →?wc-ajax=checkout'a manuel POST → WC doğrular + taslağı devam ettirirprocess_paymentsentinelredirect: '#iyzico-inline-pay'döner → JS iyzico'nun gizli ödeme butonuna tıklar.
- Başarı: iyzico
callbackUrl'e POST eder →processCallbacktaslağı sonlandırır → Thank You. - 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.
- Terk edilmiş taslaklar: saatlik
iyzico_inline_checkout_gccron'u 2 saatten eskipending/failedinline taslaklarıcancelledyapar; 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 yetersiz4111111111111129; taksitli5451030000000000.