Uygulamanıza Ödeme Nasıl Eklenir: Ödeme Sayfası, Abonelikler ve Webhook'lar
Uygulamanıza ödeme eklemenin en basit yolu Stripe'tır: yalnızca bir "Satın Al" düğmesine ihtiyacınız varsa ve siparişleri elle yönetebiliyorsanız bir Payment Link; uygulamanızın kimin ödediğini bilmesi ve otomatik olarak tepki vermesi gerekiyorsa Stripe Checkout; yinelenen faturalandırma için ise abonelik modunda Checkout ile Stripe'ın müşteri portalı. En basit durum dışındaki her durumda bir webhook da gerekir: ödeme başarılı olduğunda Stripe'ın çağırdığı bir sunucu uç noktası. Canlı anahtarlara geçmeden önce her şeyi Stripe'ın test anahtarları ve test kartlarıyla denemelisiniz.
Bu rehber her seçeneği, çoğu eğiticinin atladığı webhook kısmını ve gerçek para almadan önce kontrol edilmesi gerekenleri açıklar. Stripe ayrıntıları, Eylül 2026 itibarıyla Stripe'ın kendi belgelerinden alınmıştır.
Neden bir ödeme sağlayıcısı kullanılmalı
Kart numaralarını asla kendi formlarınızda toplamayın. Ham kart verisini işlemek sizi PCI DSS'in (kart endüstrisinin güvenlik standardı) kapsamına sokar ve ciddi bir sorumluluktur. Stripe gibi bir ödeme sağlayıcısı ödeme formunu barındırır, kartı saklar, banka doğrulamasını yönetir ve uygulamanıza sonucu bildirir. Uygulamanız yalnızca "X müşterisi Y için ödedi" bilgisini görür.
Bu rehber Stripe'ı kullanır; çünkü yaygın olarak kullanılır, iyi belgelenmiştir ve çoğu yapay zekâ uygulama oluşturucusu tarafından desteklenir. Başka sağlayıcılar da vardır ve bazıları satış vergisi işlemlerini sizin yerinize üstlenen "merchant of record" (satış kaydı tutan taraf) olarak çalışır; vergi uyumluluğu sizi endişelendiriyorsa bu model karşılaştırmaya değer.
Stripe ile ödeme almanın üç yolu
| Seçenek | Kod gerekli mi | Uygulamanız kimin ödediğini biliyor mu | En uygun olduğu durum |
|---|---|---|---|
| Payment Links | Yok | Yalnızca bir webhook eklerseniz | Birkaç sabit ürün satmak, bağış toplamak, talebi test etmek |
| Checkout (tek seferlik) | Oturum oluşturmak için sunucu kodu | Evet, webhook aracılığıyla | Mağazalar, ücretli indirmeler, tek seferlik satın almalar |
| Checkout (abonelik) | Sunucu kodu artı webhook işleme | Evet, webhook aracılığıyla | SaaS, üyelikler, tekrar eden her şey |
Payment Links
Payment Link, Stripe Panosu'nda kod olmadan oluşturduğunuz, Stripe tarafından barındırılan bir ödeme sayfasıdır. Uygulamanızda bir düğmenin arkasına koyabileceğiniz, bir e-postada paylaşabileceğiniz ya da bir QR kod olarak gösterebileceğiniz bir URL alırsınız. Stripe'ın belgelerine göre Payment Links bir ürün, bir abonelik satabilir ya da bir bağış kabul edebilir; müşterilerin ne ödeyeceklerini seçmelerine izin verebilir veya satın alma sayısını sınırlayabilirsiniz.
Ama bir tuzak var: uygulamanız belirli bir oturum açmış kullanıcının ödediğini otomatik olarak bilmez. Bir bağış sayfası ya da Stripe'ın e-posta bildirimlerinden siparişleri elle karşıladığınız küçük bir dükkân için bu sorun değildir. "Pro özellikleri açmak için öde" için ise değildir.
Stripe Checkout
Checkout, sunucunuzun belirli bir satın alma için istek üzerine oluşturduğu bir ödeme sayfasıdır. Sunucunuz Stripe'a neyin satın alındığını (ve isteğe bağlı olarak hangi müşterinin satın aldığını) bildirir, Stripe bir URL döndürür ve müşteriyi oraya gönderirsiniz. Stripe'ın belgeleri, Checkout'un hem tek seferlik hem de abonelik ödemelerini desteklediğini; Stripe tarafından barındırılan tam bir sayfa, sitenize gömülü bir sayfa veya gömülü bir form olarak çalıştığını belirtir.
Akış şöyledir:
- Müşteri uygulamanızda Satın Al düğmesine tıklar.
- Sunucunuz, gizli anahtarınızı kullanarak bir Checkout Session oluşturur; bunu kullanıcınıza veya siparişinize bağlayan bir kimlik içerir.
- Müşteri Stripe'a yönlendirilir ve öder.
- Stripe onu başarı sayfanıza geri yönlendirir.
- Stripe, webhook'unuza bir
checkout.session.completedolayı gönderir ve sunucunuz siparişi ödendi olarak işaretler ya da erişimi açar.
Adım 2 sunucuda gerçekleşmelidir; çünkü gizli anahtarınızı kullanır. Checkout'un bir arka uca ihtiyaç duymasının başlıca nedeni budur.
Abonelikler
Abonelikler, Stripe'da ayarladığınız yinelenen bir fiyatla abonelik modunda Checkout kullanır. İlk ödeme yukarıdaki akış gibi çalışır. Bundan sonra yenilemeler, başarısız kartlar, dönem ortasında yükseltmeler ve iptaller zamanla gerçekleşir — çoğu zaman müşteri uygulamanızda bile değilken — dolayısıyla uygulamanız bunları yalnızca webhook'lar aracılığıyla öğrenir.
Müşterilerin kendi aboneliklerini yönetmelerine izin vermek için Stripe barındırılan bir müşteri portalı sunar. Stripe'ın belgelerine göre müşteriler orada ödeme yöntemlerini ve fatura bilgilerini güncelleyebilir, abonelikleri değiştirebilir veya iptal edebilir ve faturaları görüntüleyip indirebilir. Bunu Stripe Panosu'nda yapılandırırsınız ve bir "Faturalandırmayı yönet" düğmesi ekleyerek müşteriyi oraya gönderirsiniz. Bu ekranları kendiniz geliştirmek zorunda kalmazsınız.
Webhook'lar: atlayamayacağınız kısım
Webhook, Stripe'ın bir şey olduğunda sunucunuza gönderdiği bir HTTP isteğidir. (Genel fikir için webhook nedir rehberine bakın.) Stripe'ın tamamlama rehberi açıktır: müşteri ödeyip bu sayfa yüklenmeden bağlantısını kaybedebileceğinden, siparişleri tamamlamak için yalnızca başarı sayfasına güvenemezsiniz. Abonelikler ve gecikmeli ödeme yöntemleri için webhook'lar zorunludur.
İşlenmeye değer olaylar
| Olay | Anlamı | Uygulamanız ne yapar |
|---|---|---|
checkout.session.completed | Checkout tamamlandı | Siparişi ödendi olarak işaretle ya da erişimi başlat |
checkout.session.async_payment_succeeded | Gecikmeli bir yöntem (ör. banka borçlandırması) sonradan onaylandı | Şimdi tamamla |
checkout.session.async_payment_failed | Bu gecikmeli ödeme başarısız oldu | Müşteriye bildir; tamamlama |
invoice.paid | Bir abonelik ödemesi başarılı oldu, yenilemeler dahil | Erişimi uzat |
invoice.payment_failed | Bir yenileme başarısız oldu | Kullanıcıyı uyar; Stripe yeniden deneyebilir |
customer.subscription.updated | Plan değişti ya da iptal planlandı | Kullanıcının planını güncelle |
customer.subscription.deleted | Abonelik sona erdi | Ücretli erişimi kaldır |
Doğru bir webhook işleyicisinin kuralları
Bunlar doğrudan Stripe'ın webhook belgelerinden alınmıştır ve yapay zekâ tarafından üretilen işleyiciler bunlardan birini bazen kaçırır:
- İmzayı doğrulayın. Her olay bir
Stripe-Signaturebaşlığı içerir. İşleyiciniz bunu uç noktanın imzalama sırrıyla kontrol eder (whsec_ile başlar). Bu olmadan herkes sunucunuza sahte bir "ödeme başarılı" gönderebilir. - Ham istek gövdesini kullanın. Çerçeveniz gövdeyi önce ayrıştırır veya değiştirirse imza kontrolleri başarısız olur.
- Hızlıca 2xx yanıtı dönün, ardından daha yavaş işleri yapın. Zaman aşımları hata sayılır.
- Yinelemeleri yönetin. Stripe aynı olayı birden fazla kez iletebilir. İşlenen olay kimliklerini kaydedin veya tamamlamayı iki kez çalışmaya karşı güvenli yapın.
- Sırayı varsaymayın. Stripe olayların gerçekleştikleri sırayla geleceğini garanti etmez.
- Yeniden denemeleri bekleyin. Canlı modda Stripe, başarısız teslimatları üç güne kadar yeniden dener; kısa bir kesinti ödemeleri kaybettirmez, ancak işleyiciniz geç gelen olaylarla başa çıkabilmelidir.
Webhook'ların herkese açık bir HTTPS adresi gerekir; bu nedenle genellikle yalnızca uygulamanız yayınlandığında çalışırlar (Stripe'ın CLI'si geliştiriciler için olayları yerel makineye iletebilir).
Tüm akışı kapsayan bir istem
"Pro paketi" için Stripe Checkout ile tek seferlik bir satın alma ekle (fiyat kimliği STRIPE_PRICE_ID içinde). Checkout Session'ı sunucuda, sırlardan STRIPE_SECRET_KEY kullanarak oluştur ve oturumdaki kullanıcının kimliğini oturuma dahil et. STRIPE_WEBHOOK_SECRET ile Stripe imzasını ham istek gövdesini kullanarak doğrulayan bir POST /api/stripe/webhook uç noktası ekle; checkout.session.completed olayını işle ve o kullanıcıyı Pro paketine sahip olarak işaretle. Aynı olay iki kez gelirse güvenli olsun. Başarı ve iptal sayfaları ekle. Gizli anahtarı asla tarayıcıya açma.
Abonelikler için şunu ekleyin: "STRIPE_PRICE_ID ile abonelik modunu kullan. invoice.paid, invoice.payment_failed, customer.subscription.updated ve customer.subscription.deleted olaylarını işle. Stripe müşteri portalını açan bir Faturalandırmayı yönet düğmesi ekle."
Test modu
Stripe'ın ayrı sandbox (test) ve canlı ortamları ve ayrı anahtarları vardır. Sandbox anahtarları pk_test_, sk_test_ veya rk_test_ ile başlar; canlı anahtarlar pk_live_, sk_live_ veya rk_live_ ile başlar. Test işlemleri parayı hareket ettirmez.
Stripe'ın test belgelerindeki kullanışlı test kartları (herhangi bir gelecek son kullanma tarihi, herhangi bir üç haneli CVC):
| Kart numarası | Sonuç |
|---|---|
4242 4242 4242 4242 | Ödeme başarılı |
4000 0000 0000 0002 | Kart reddedilir |
4000 0000 0000 3220 | 3D Secure doğrulaması gerekir, ardından başarılı olur |
En azından şunları test edin:
- Başarılı bir ödeme, doğru kullanıcı için doğru şeyin kilidini açar
- Reddedilen bir kart net bir mesaj gösterir ve hiçbir şeyin kilidini açmaz
- Ödemeden hemen sonra tarayıcı sekmesini kapatmak yine de erişim sağlar (bu, webhook'un çalıştığını, yalnızca başarı sayfasını değil, kanıtlar)
- Stripe sayfasında iptal etmek, kullanıcıyı hiçbir ücret alınmadan uygulamanıza geri döndürür
- Abonelikler için: müşteri portalında iptal edin ve erişimin olması gerektiği zaman sona erdiğini doğrulayın
Canlıya geçiş
- Stripe hesabınızı etkinleştirin: işletme ve banka bilgilerinizle.
- Canlı anahtarları uygulamanızın sırlarına ekleyin. Stripe, entegrasyonunuzun ihtiyaç duyduğu izinlerle sınırlı kısıtlı anahtarları önerir; her şeye izin veren bir gizli anahtar yerine.
- Yayınlanmış uygulamanızı gösteren bir canlı webhook uç noktası oluşturun. Bunun kendi imzalama sırrı vardır; test sırrından farklıdır — bunu güncelleyin.
- Ürünleri ve fiyatları canlı modda yeniden oluşturun; test modundaki kimlikler orada yoktur.
- Gerçek ve küçük bir satın alma yapın ve iade edin.
Tüm anahtarları, kodda veya sohbette değil, projenizin sırlarında saklayın. Güvenlik kontrol listemiz, anahtarlar ve webhook doğrulaması hakkında daha ayrıntılı bilgi verir.
Vergi, iadeler ve evrak işleri
Ödemeler, kodun çözmediği yükümlülükler getirir. Bu vergi danışmanlığı değildir; bir muhasebeciye danışın.
- Satış vergisi, KDV ve GST. Sizin ve müşterilerinizin bulunduğu yere bağlı olarak kayıt yaptırmanız, vergi tahsil etmeniz ve beyan etmeniz gerekebilir. Stripe Tax, ödeme sırasında vergiyi hesaplayıp tahsil edebilir, satışlarınızın bir yükümlülük doğurabileceği yerleri izleyebilir ve kayıt ile beyan konularında yardımcı olabilir; ancak sorumluluk size aittir. Satış kaydı tutan taraf sağlayıcıları bu konularda daha fazlasını üstlenen bir alternatiftir.
- İadeler ve itirazlar. Yayından önce iade politikanıza karar verin ve sitenizde yayınlayın. İtirazlar (chargeback) olur; neyin satın alındığına ve teslim edildiğine dair kayıtları tutun.
- Makbuzlar ve faturalar. Stripe makbuzları e-posta ile gönderebilir; işletmelerin uygun faturalara ihtiyacı olabilir.
- Ücretler. Her sağlayıcı işlem başına ücret alır. Makalelerdeki rakamlara güvenmek yerine sağlayıcının güncel fiyatlandırma sayfasını kontrol edin.
Uygulamanıza hangi kurulum uygun
- Bağışlar veya birkaç ürün: Payment Links. Kâr amacı gütmeyen bir bağış sitesi nasıl kurulur rehberine bakın.
- Sepeti olan bir mağaza: kalem öğeleri ve webhook ile Checkout. Çevrimiçi mağaza nasıl kurulur rehberine bakın.
- SaaS veya üyelikler: abonelik modunda Checkout, webhook'lar ve müşteri portalı. SaaS MVP nasıl kurulur ve SaaS ürünü nasıl fiyatlandırılır rehberlerine bakın.
- Satıcılara ödeme yapan bir pazar yeri: farklı, daha düzenlemeli bir kurulum (Stripe Connect veya benzeri). Bunu ayrıca planlayın.
Mythex'te ödeme ekleme
Mythex'te oluşturduğunuz uygulamalardaki ödemeler kendi Stripe hesabınızı ve anahtarlarınızı kullanır; uygulamanız için tek tıkla "Stripe'a bağlan" seçeneği yoktur. Tipik akış:
- Stripe test anahtarlarınızı alın.
STRIPE_SECRET_KEY(ve webhook sırrını daha sonra) proje sırlarına ekleyin —/secretsüzerinden, proje ayarlarından veya agent'ın bir anahtara ihtiyaç duyduğunda gösterdiği sırlar kartı aracılığıyla.- Agent'tan yukarıdakine benzer bir istemle Checkout isteyin.
- Önizleme'de test kartlarıyla deneyin. Webhook'u kaydetmeden önce yayınlayın; çünkü herkese açık URL'nizi gerektirir.
- Canlı anahtarlara geçtikten sonra canlı uygulamanın bunları almasını sağlamak için tekrar yayınlayın.
Dokümanlarda Stripe ile ödeme kabul etme ve arka uçunuzda webhook'ları işleme bölümlerine bakın.
Sorular
Bir uygulamada ödeme almanın en kolay yolu nedir?
Stripe Payment Link kod gerektirmez: Stripe Panosu'nda oluşturursunuz ve uygulamanızdan bağlantı verirsiniz. Uygulamanızın kimin ödediğini bilmesi ve bir şeyin otomatik olarak açılması gerekiyorsa bunun yerine bir webhook ile Stripe Checkout kullanın.
Ödeme almak için webhook'a ihtiyacım var mı?
Uygulamanızın bir ödemeye tepki vermesi gerekiyorsa — bir hesabın kilidini açmak, bir siparişi ödendi olarak işaretlemek, bir yenilemeyi işlemek — evet. Stripe'ın belgeleri, müşterinin ödeyip başarı sayfasına hiç ulaşmamış olabileceğini bu yüzden yalnızca başarı sayfasına güvenemeyeceğinizi söyler. Abonelikler için de webhook'lar gereklidir.
Gerçek para harcamadan ödemeleri nasıl test ederim?
Stripe'ın sandbox (test) API anahtarlarını ve test kart numaralarını kullanın; örneğin 4242 4242 4242 4242 numarası, herhangi bir gelecek son kullanma tarihi ve herhangi bir üç haneli CVC ile. Test işlemleri gerçek parayı hareket ettirmez.
Stripe benim yerime satış vergisini ve KDV'yi hesaplar mı?
Stripe Tax, ödeme sırasında vergiyi hesaplayıp tahsil edebilir ve nerede kayıt yaptırmanız gerekebileceğini izleyebilir; ancak vergi yükümlülüklerinden siz sorumlu kalırsınız. Durumunuz için bir muhasebeciye danışın.