Bir WooCommerce mağazası açtığınızda ilk gerçek sınav ödeme tahsilatıdır. Ürünleri güzelce dizmek, kargoyu ayarlamak, temayı özelleştirmek keyifli kısımdır; ama sepeti dolduran müşteri "Öde" düğmesine bastığında kartından sorunsuz ve güvenli para çekilmiyorsa geri kalan her şey boşa gider. Türkiye içi satışta yerli sağlayıcılar (iyzico, PayTR gibi) çoğu senaryoyu karşılar. Ancak yurt dışına satış yapıyorsanız, dolar/euro tahsil etmek istiyorsanız veya müşterilerinize Apple Pay ve Google Pay gibi dijital cüzdanları sunmak istiyorsanız Stripe, sektörün fiili standardıdır.
Bu rehberde Stripe'ı WooCommerce'e uçtan uca nasıl bağlayacağınızı bir kıdemli sistem yöneticisinin gözünden anlatacağım: publishable ve secret anahtarlarını doğru yere koymaktan, webhook uç noktasını tanımlamaya; test modunda gerçek kart kullanmadan denemeler yapmaktan, Avrupa'nın SCA (Güçlü Müşteri Kimlik Doğrulaması) ve 3D Secure kurallarına uygun bir Payment Element kurmaya kadar. Ayrıca en kritik konuya, Türkiye'den Stripe hesabı açma meselesine ve pratik alternatiflere de dürüstçe değineceğim. Henüz WooCommerce'e yeni başladıysanız önce WooCommerce başlangıç rehberimizi okumanızı öneririm; burada temel kurulumun tamamlandığını varsayıyorum.
Stripe Neden Uluslararası Satışın Standardı#
Stripe'ı diğer ödeme sağlayıcılarından ayıran şey, geliştirici dostu altyapısı ve küresel kapsamıdır. 40'tan fazla ülkede yerel para birimiyle tahsilat yapabilir, 135'in üzerinde para biriminde işlem kabul edebilirsiniz. Bir müşteriniz kartını Almanya'da, bir diğeri Kanada'da kullanırken siz tek bir panelden hepsini yönetirsiniz. Bakiyeniz bağlı banka hesabınıza otomatik aktarılır.
Asıl fark yaratan nokta dijital cüzdanlardır. Stripe entegrasyonu doğru kurulduğunda müşteriniz mobil tarayıcıda ödeme sayfasına geldiğinde kart numarası girmek yerine tek dokunuşla Apple Pay veya Google Pay ile ödeyebilir. Bu, mobil dönüşüm oranlarını gözle görülür biçimde artırır; çünkü form doldurma sürtünmesini ortadan kaldırır. Ayrıca abonelik tahsilatı, tekrarlayan ödemeler ve kaydedilmiş kartla hızlı ödeme gibi senaryolar Stripe'ın en güçlü olduğu alanlardır. WooCommerce'te tekrarlayan tahsilat kuruyorsanız WooCommerce abonelik rehberimiz ile birlikte değerlendirebilirsiniz.
Aşağıdaki tablo, hangi durumda hangi sağlayıcının daha mantıklı olduğunu özetliyor:
| İhtiyaç | Stripe | Yerli sağlayıcı (iyzico/PayTR) |
|---|---|---|
| Türkiye içi TL tahsilat | Kısıtlı | Güçlü, yerel destek |
| Yurt dışına USD/EUR satış | Çok güçlü | Sınırlı |
| Apple Pay / Google Pay | Yerleşik | Değişken |
| Türk kartlarında taksit | Yok | Var |
| Geliştirici API kalitesi | Sektör lideri | İyi |
| Türkiye'den hesap açma | Zor (aşağıda) | Kolay |
Stripe Hesabı ve Resmi Eklentiyi Kurma#
Entegrasyona başlamadan önce bir Stripe hesabınız olmalı. stripe.com üzerinden kayıt olduktan sonra sizden işletme türü, banka hesabı ve kimlik doğrulama bilgileri istenir. Hesap doğrulanana kadar test modunda çalışabilir, gerçek para hareketi olmadan tüm akışı deneyebilirsiniz.
WooCommerce tarafında iki seçeneğiniz var. Birincisi ve önerilen yol, Stripe'ın kendi geliştirdiği resmi eklenti olan Stripe for WooCommerce'tur. WordPress yönetim panelinden Eklentiler > Yeni Ekle bölümünde "Stripe" aratıp kurabilir, ya da WP-CLI ile terminalden yükleyebilirsiniz:
# Sunucuya SSH ile bağlanıp WordPress dizininde:
wp plugin install woocommerce-gateway-stripe --activate
# Kurulum sonrası WooCommerce'in güncel olduğundan emin olun
wp plugin update woocommerce
wp plugin list --status=active
Eklenti seçimi konusunda kafanız karışırsa hangi eklentinin güvenli ve bakımlı olduğunu anlatan WordPress eklenti önerileri yazımıza göz atın; genel kural, yalnızca üreticinin resmi eklentisini veya WooCommerce onaylı çözümleri kullanmaktır. İkincil seçenek olan üçüncü taraf Stripe eklentileri (örneğin WooCommerce Stripe Payment Gateway alternatifleri) da çalışır, ancak SCA uyumu ve webhook desteği açısından resmi eklenti her zaman bir adım öndedir.
Eklentiyi etkinleştirdikten sonra ayarlara WooCommerce > Ayarlar > Ödemeler > Stripe yolundan ulaşırsınız. Burada göreceğiniz ilk kutu API anahtarlarını girmenizi isteyecek; bir sonraki adımda tam olarak bunları ele alacağız.
API Anahtarları: Publishable ve Secret Key#
Stripe entegrasyonunun kalbi iki anahtardır. Publishable key (yayınlanabilir anahtar) tarayıcıda çalışan, ödeme formunu oluşturan herkese açık anahtardır; pk_ ile başlar. Secret key (gizli anahtar) ise sunucunuzun Stripe ile konuşurken kimliğini kanıtladığı, asla dışarı sızmaması gereken anahtardır; sk_ ile başlar. Her ikisinin de test ve canlı olmak üzere iki versiyonu vardır.
Anahtarları Stripe kontrol panelinde Developers > API keys bölümünde bulursunuz. Test modundayken anahtarlar şöyle görünür:
# Test modu anahtarları — gerçek para çekmez, güvenle deneyebilirsiniz
publishable_key = pk_test_51NxAbC...xyz
secret_key = sk_test_51NxAbC...xyz
# Canlı moda geçince "test" yerine "live" görürsünüz
publishable_key = pk_live_51NxAbC...xyz
secret_key = sk_live_51NxAbC...xyz
Bu anahtarları WooCommerce > Ayarlar > Ödemeler > Stripe ekranındaki ilgili kutulara yapıştırın. En kritik güvenlik kuralı şudur: secret key hiçbir zaman tema dosyasına, git deposuna veya istemci tarafı JavaScript'e yazılmaz. Yalnızca WooCommerce'in şifreli ayar alanında veya sunucu ortam değişkeninde durmalıdır. Anahtarı yanlışlıkla herkese açık bir yere koyarsanız, Stripe panelinden tek tıkla iptal edip (roll) yenisini üretmelisiniz.
Anahtarların sunucu ile Stripe arasında güvenle gidip gelmesi için sitenizin tümüyle HTTPS üzerinden çalışması zorunludur. SSL sertifikanız yoksa modern tarayıcılar kart formunu bile göstermez. Sertifika kurulumu için ücretsiz SSL çözümlerimizden yararlanabilir, sertifikanın doğru zincirlendiğinden emin olmak isterseniz SSL araçlarımıza göz atabilirsiniz.
Webhook Uç Noktasını Tanımlama#
Webhook, entegrasyonun en çok ihmal edilen ama en önemli parçasıdır. Bir müşteri ödeme yaptığında Stripe kartı işler; fakat bu işlemin sonucunu (başarılı, başarısız, iade edildi, itiraz açıldı) mağazanıza bildirmesi gerekir. İşte bu bildirim webhook ile gelir. Webhook kurulmazsa siparişler "beklemede" durumunda takılır, iadeler WooCommerce'e yansımaz ve abonelik yenilemeleri güncellenmez.
Stripe kontrol panelinde Developers > Webhooks > Add endpoint yolunu izleyin. Uç nokta adresini WooCommerce Stripe eklentisi size zaten ayarlar ekranında gösterir; genel biçimi şöyledir:
# WooCommerce'in Stripe webhook uç noktası
https://magazaniz.com/?wc-api=wc_stripe
# Bağlantının erişilebilir olduğunu doğrulamak için:
curl -I https://magazaniz.com/?wc-api=wc_stripe
# Beklenen: HTTP/2 200 veya benzer başarı yanıtı, 403/404 değil
Uç noktayı eklerken dinlemesini istediğiniz olayları seçersiniz. Tipik bir WooCommerce mağazası için en azından şu olaylar gereklidir:
dinlenecek_olaylar:
- payment_intent.succeeded # ödeme tamamlandı
- payment_intent.payment_failed # ödeme başarısız
- charge.refunded # iade yapıldı
- charge.dispute.created # kart itirazı açıldı
- checkout.session.completed # ödeme oturumu tamamlandı
Uç noktayı kaydettiğinizde Stripe size bir webhook signing secret verir; whsec_ ile başlar. Bu değeri WooCommerce Stripe ayarlarındaki "Webhook Secret" alanına girin. Bu imza sırrı, gelen bildirimlerin gerçekten Stripe'tan geldiğini doğrular; böylece kötü niyetli birinin sahte "ödeme başarılı" bildirimi göndermesi engellenir. Webhook trafiğini bir güvenlik duvarı arkasında ek olarak korumak isterseniz WAF hizmetimiz Stripe'ın IP aralıklarını beyaz listeye alacak şekilde yapılandırılabilir.
Kurulumdan sonra Stripe panelindeki webhook detayında "Send test webhook" düğmesiyle bir deneme olayı gönderin ve WooCommerce > Durum > Günlükler bölümünde bunun işlendiğini doğrulayın. Günlükte imza hatası görürseniz, neredeyse her zaman yanlış whsec_ değeri veya bir önbellek/CDN katmanının isteği engellemesi söz konusudur.
Test Modundan Canlı Moda Güvenli Geçiş#
Doğrudan canlı moda geçip gerçek müşterilerle deneme yapmak amatör bir hatadır. Stripe, tüm akışı gerçek para hareketi olmadan denemeniz için zengin bir test kartı seti sunar. WooCommerce Stripe ayarlarında "Test mode" (Test modu) anahtarını açın, test anahtarlarınızı girin ve sepeti gerçek bir müşteri gibi doldurup ödeyin.
En sık kullanılan test kartları şunlardır:
# Başarılı ödeme
4242 4242 4242 4242 son kullanma: gelecekteki herhangi bir tarih CVC: herhangi 3 hane
# 3D Secure / SCA doğrulaması tetikleyen kart
4000 0027 6000 3184
# Reddedilen (yetersiz bakiye) kart
4000 0000 0000 9995
Bu kartlarla siparişin WooCommerce'te "İşleniyor" durumuna geçtiğini, iade denediğinizde stok ve durumun güncellendiğini, webhook günlüğünün olayları yakaladığını tek tek doğrulayın. Özellikle 3D Secure tetikleyen kartla doğrulama ekranının açıldığından emin olun; bu, bir sonraki bölümdeki SCA uyumunun kanıtıdır.
Her şey test modunda kusursuz çalıştığında canlı moda geçmek basittir: "Test mode" anahtarını kapatın ve pk_live_ ile sk_live_ anahtarlarını girin. Ancak dikkat: canlı mod için ayrı bir webhook uç noktası tanımlamanız ve onun whsec_ değerini de girmeniz gerekir. Test webhook'u canlı olayları taşımaz. Geçişten hemen sonra kendi kartınızla küçük tutarlı gerçek bir sipariş verip iade edin; böylece para akışının uçtan uca çalıştığını canlı ortamda da görmüş olursunuz. Bu tür kritik geçişlerden önce sitenizin bir yedeğini almanızı şiddetle öneririm.
SCA, 3D Secure ve Payment Element Kurulumu#
Avrupa Ekonomik Alanı'na satış yapıyorsanız SCA (Strong Customer Authentication) yasal bir zorunluluktur. Kısaca, kartla yapılan çoğu online ödemede bankanın müşteriyi ek bir adımla (SMS kodu, bankacılık uygulaması onayı, biyometrik doğrulama) kimliğini kanıtlamaya zorlamasıdır. Teknik karşılığı 3D Secure 2 protokolüdür. Entegrasyonunuz SCA uyumlu değilse Avrupa kartlarında ödemeler reddedilir.
İyi haber şu: Stripe'ın modern Payment Element bileşeni SCA'yı sizin için otomatik yönetir. Gerektiğinde doğrulama ekranını devreye sokar, gerekmediğinde müşteriyi yormaz. Resmi WooCommerce Stripe eklentisinin güncel sürümlerinde Payment Element varsayılan olarak gelir. Ayarlarda eski "Card Element" yerine "Payment Element" veya "New checkout experience" (yeni ödeme deneyimi) seçeneğinin açık olduğundan emin olun. Bu bileşen aynı zamanda Apple Pay, Google Pay ve yerel ödeme yöntemlerini tek bir arayüzde otomatik sunar.
Payment Element'in düzgün çalışması için birkaç teknik gereksinim vardır:
# Nginx: Stripe.js ve dijital cüzdanlar için CSP'yi engellememelisiniz.
# Content-Security-Policy kullanıyorsanız Stripe alanlarına izin verin:
add_header Content-Security-Policy "
script-src 'self' https://js.stripe.com;
frame-src 'self' https://js.stripe.com https://hooks.stripe.com;
connect-src 'self' https://api.stripe.com
" always;
# Apple Pay doğrulama dosyasının erişilebilir olması gerekir:
location = /.well-known/apple-developer-merchantid-domain-association {
default_type text/plain;
allow all;
}
Apple Pay'i etkinleştirmek için Stripe panelinde Settings > Payment methods > Apple Pay bölümünden alan adınızı doğrulamanız gerekir; Stripe ilgili doğrulama dosyasını çoğu durumda otomatik yerleştirir, ancak özel sunucu yapılandırmalarında yukarıdaki gibi el ile erişim açmanız gerekebilir. Google Pay için genellikle ek doğrulama gerekmez, HTTPS ve Payment Element yeterlidir.
Performans da SCA deneyimini etkiler. 3D Secure doğrulama çerçevesi harici olarak yüklenir; sunucunuz yavaşsa müşteri doğrulama ekranında takılır ve ödemeyi terk eder. WordPress önbellekleme ve hızlı bir hosting altyapısı bu noktada dönüşümü doğrudan etkiler. Ödeme sayfalarını önbellekten hariç tutmayı ve sitenizi düzenli optimize etmeyi ihmal etmeyin; WordPress bakım hizmetimiz bu tür kritik akışların sürekli sağlıklı kalmasını üstlenir.
Türkiye'den Stripe Hesabı ve Alternatifler#
Şimdi dürüst konuşalım. Stripe, bu satırların yazıldığı dönemde Türkiye'yi resmi olarak desteklenen ülkeler listesinde tutmuyor. Yani Türkiye adresli ve Türk vergi kimlikli bir işletmeyle doğrudan stripe.com üzerinden hesap açıp TL tahsilat yapmak mümkün değil. Bu gerçeği baştan bilmek, boşa emek harcamanızı önler.
Uygulamada Türk girişimciler Stripe'ı genellikle şu yollarla kullanır. Birincisi, desteklenen bir ülkede (örneğin ABD veya İngiltere) kurulu bir şirket ve o ülkeye ait bir banka hesabı üzerinden hesap açmaktır; Stripe Atlas gibi programlar ABD'de LLC kurmayı kolaylaştırır. İkincisi, yurt dışında faaliyet gösteren, dolar/euro gelirli e-ihracat işletmeleri için Stripe zaten doğal bir tercihtir. Türkiye içi TL satış yapan yerel bir mağazaysanız Stripe sizin için doğru araç değildir.
Bu durumda tablo netleşir. Hedef kitleniz ve para biriminiz seçimi belirler:
| Durumunuz | Önerilen yol |
|---|---|
| Türkiye içi, TL, yerel müşteri | iyzico / PayTR ile yerel entegrasyon |
| Yurt dışına e-ihracat, USD/EUR | Stripe (yurt dışı şirket ile) |
| Karma: hem TL hem döviz | Yerli sağlayıcı + Stripe birlikte |
| Yalnızca abonelik/SaaS, global | Stripe |
Türkiye içi tahsilat için iyzico kurulumunu ayrı bir WooCommerce iyzico entegrasyonu rehberimizde ele alıyoruz. Çoğu olgun mağaza aslında iki sağlayıcıyı birlikte kullanır: yerel kartlar ve taksit için iyzico, yurt dışı müşteriler ve dijital cüzdanlar için Stripe. WooCommerce her iki ödeme yöntemini de aynı sepette yan yana gösterebilir; müşteri kendi durumuna uygun olanı seçer.
Hangi yolu seçerseniz seçin, sağlam bir altyapı üzerinde durmanız şart. Yoğun trafikte ödeme akışının takılmaması için WordPress hosting paketlerimiz WooCommerce yükleri düşünülerek yapılandırılmıştır; daha fazla kaynak ve tam kontrol isterseniz sanal sunucu veya VDS çözümlerimize geçebilir, yönetim yükünü bize bırakmak isterseniz sunucu yönetim hizmetimizden yararlanabilirsiniz.
Sıkça Sorulan Sorular#
Türkiye'den Stripe hesabı açabilir miyim?#
Doğrudan Türkiye adresi ve Türk vergi kimliğiyle Stripe'a resmi olarak kayıt olmak şu an mümkün değildir, çünkü Türkiye desteklenen ülkeler listesinde bulunmaz. Uygulamada girişimciler, ABD veya İngiltere gibi desteklenen bir ülkede kurulu şirket ve banka hesabı üzerinden hesap açar. Yalnızca Türkiye içi TL satış yapıyorsanız iyzico veya PayTR gibi yerel sağlayıcılar sizin için daha doğru bir seçimdir.
Webhook kurmazsam ne olur?#
Webhook olmadan Stripe, ödeme sonuçlarını mağazanıza bildiremez. Bu durumda başarılı ödemelerden sonra siparişler "beklemede" durumunda takılır, iadeler WooCommerce'e yansımaz ve abonelik yenilemeleri güncellenmez. Kısacası entegrasyon yarı çalışır durumda kalır; webhook uç noktasını tanımlamak ve imza sırrını girmek entegrasyonun zorunlu bir parçasıdır.
Publishable ve secret key arasındaki fark nedir?#
Publishable key tarayıcıda çalışır, ödeme formunu oluşturur ve herkese açık olması sorun değildir; pk_ ile başlar. Secret key ise sunucunuzun Stripe karşısında kimliğini kanıtladığı gizli anahtardır ve asla istemci tarafına, tema dosyasına veya git deposuna konulmamalıdır; sk_ ile başlar. Secret key sızarsa Stripe panelinden hemen iptal edip yenisini üretmeniz gerekir.
Test modunda gerçek kart kullanmam gerekir mi?#
Hayır, test modunda gerçek kart kullanmanız kesinlikle gerekmez ve kullanmamalısınız. Stripe, gerçek para hareketi olmadan tüm akışı denemeniz için özel test kartları sunar; örneğin 4242 4242 4242 4242 başarılı bir ödemeyi, 4000 0027 6000 3184 ise 3D Secure doğrulamasını taklit eder. Canlı moda ancak test modunda her şey sorunsuz çalıştıktan sonra geçmelisiniz.
Apple Pay ve Google Pay'i etkinleştirmek için ne gerekli?#
Her ikisi için de sitenizin tümüyle HTTPS üzerinden çalışması ve Stripe'ın Payment Element bileşeninin aktif olması gerekir. Google Pay çoğu durumda ek yapılandırma istemez; Apple Pay için ise Stripe panelinde alan adınızı doğrulamanız ve gerekli doğrulama dosyasının sunucuda erişilebilir olması gerekir. Doğru kurulduğunda mobil müşteriler kart numarası girmeden tek dokunuşla ödeyebilir.
SCA ve 3D Secure uyumu için ekstra kod yazmam gerekir mi?#
Resmi WooCommerce Stripe eklentisinin güncel sürümündeki Payment Element bileşenini kullanıyorsanız hayır, ekstra kod yazmanıza gerek yoktur. Payment Element, SCA gereken durumlarda 3D Secure doğrulama ekranını otomatik devreye alır, gerekmeyen durumlarda müşteriyi ek adımla yormaz. Sizin yapmanız gereken tek şey ayarlarda eski "Card Element" yerine yeni Payment Element deneyimini seçili tutmaktır.
Kapanış#
Stripe entegrasyonu, doğru anahtarlar, çalışan bir webhook ve SCA uyumlu Payment Element üçlüsü kurulduğunda son derece güvenilir ve dönüşüm dostu bir ödeme deneyimi sunar. Anahtarınızı gizli tutun, webhook imzasını doğrulayın, test modunda her senaryoyu deneyin ve canlıya geçerken ayrı webhook uç noktası tanımlamayı unutmayın. Türkiye içi satış için iyzico gibi yerel bir sağlayıcıyla Stripe'ı birlikte kullanmak, hem yerel hem küresel müşteriye tek sepette hizmet vermenin en olgun yoludur.
Böyle bir ödeme akışının kusursuz çalışması için altındaki altyapı da o kadar sağlam olmalı. Clou.TR olarak WooCommerce yüklerine göre ayarlanmış WordPress hosting paketlerimiz, tam kontrol isteyenler için sanal sunucu ve VDS çözümlerimiz, ücretsiz SSL sertifikamız ve düzenli yedekleme hizmetimizle mağazanızı yayına almanın her adımında yanınızdayız. Mağazanızı Clou.TR altyapısına taşımak isterseniz ücretsiz site taşıma ekibimiz süreci sizin yerinize yürütür.