Web Uygulamasına Ödeme Nasıl Eklenir: Next.js Projenizi Hızla Monetize Edin

Pim Feltkamp7 dakikalık okuma
How to Add Payments to a Web App: Monetize Your Next.js Project Fast
Bu makaleyi paylaş

Bir web uygulaması yayına almak bir kilometre taşıdır. Bunun karşılığında ödeme almak ise başka bir kilometre taşıdır. Çoğu geliştirici, monetizasyonu ayrı bir proje gibi hissettirdiği için erteler — yeni API'ler, uyumluluk soruları ve tasarlanması gereken tüm bir faturalama arayüzü. Ancak "çalışan uygulama" ile "ödeme yapan müşteriler" arasındaki boşluk, özellikle her şeyi inşa etmeden önce web uygulamasına nasıl ödeme ekleneceğini anladığınızda düşündüğünüzden çok daha küçüktür.

Ödeme kabul etmenin en hızlı yolu, tek bir fiyatlandırma sayfasına Stripe Checkout gibi barındırılan bir ödeme akışı bağlamak ve özel kart arayüzü inşa etmeden önce kullanıcıları buraya yönlendirmektir. Sıfırdan canlı bir ödeme bağlantısına bir saatten kısa sürede ulaşabilirsiniz; bu da birinci günden itibaren fiyatlandırma ve talebi doğrulayabileceğiniz anlamına gelir.


Erken Ücret Almanın Talebi Neden Doğruladığı (Aşırı İnşa Etmeden Önce)

Faturalama sayfanızı "ürün hazır olana kadar" ertelemek, bağımsız geliştirmedeki en maliyetli hatalardan biridir. Bu ertelemenin size gerçekte neye mal olduğu şöyle:

  • Gerçek sinyal yok. Ücretsiz kullanıcılar bozuk özelliklere katlanır. Ödeme yapan kullanıcılar gerçekte neyin önemli olduğunu söyler.
  • Batık maliyet riski. Bir özellik setinin %90'ını inşa edip sonra kimsenin bunun için ödeme yapmayacağını öğrenmek aylarca zaman kaybıdır.
  • Fiyatlandırma eylemsizliği. Ücretsiz kaydolan kullanıcılar bunun ücretsiz kalmasını bekler. Daha sonra bir ödeme duvarı tanıtmak kayıp ve kırgınlık yaratır.

Minimal bir faturalama sayfası — hatta "Satın Al" düğmeli statik bir fiyatlandırma tablosu bile — size bir dönüşüm sinyali verir. 10 kullanıcıdan 3'ü ödeme akışına tıklarsa, fiyatlandırmanızda ürün-pazar uyumu var demektir. 10'dan 0'ı tıklarsa, şimdi çözmeye değer bir mesaj sorununuz var — analitik panosunu inşa ettikten sonra değil.

"İlk faturalama sayfanızın amacı zariflik değil — kanıttır. Tek bir dönüşüm, yüz kayıttan daha fazlasını söyler."


Fiyatlandırma Modeli Seçimi: Tek Seferlik, Abonelik veya Kullanım Bazlı

Fiyatlandırma modeliniz, bir gelir kararı olduğu kadar bir UX kararıdır. Ödeme akışınızın ne kadar karmaşık olması gerektiğini belirler.

ModelEn iyi kullanımÖdeme akışı karmaşıklığıStripe ürünü
Tek seferlik satın almaAraçlar, şablonlar, dijital ürünlerDüşük — tek ödeme niyetiPayment Links / Checkout
AbonelikSaaS, topluluklar, içerikOrta — plan seçimi, yükseltme/düşürmeBilling + Subscriptions
Kullanım bazlıAPI'ler, yapay zeka özellikleri, ölçümlü hizmetlerYüksek — ölçümlü faturalama, faturalarBilling + Meters
Freemium + yükseltmeTüketici uygulamaları, verimlilik araçlarıOrta — ücretsiz katman geçişi, yükseltme CTA'sıCustomer portal

Pratik kurallar:

  1. Uygulamanız tek seferlik bir sorunu çözüyorsa (bir özgeçmiş oluşturucu, bir PDF aracı), tek seferlik fiyatla başlayın.
  2. Değer zamanla birikiyorsa (veri depolama, süregelen yapay zeka çağrıları, topluluk erişimi), abonelikler daha mantıklıdır.
  3. Kullanım bazlı faturalamaya yalnızca maliyetleriniz kullanımla doğrudan ölçeklendiğinde başvurun — ölçümlü faturalama önemli arka uç karmaşıklığı ekler.

Herhangi bir ödeme kodu yazmadan önce modelinizi seçin. Bu, veritabanı şemanızı, webhook işleyicilerinizi ve tüm faturalama sayfası düzeninizi şekillendirir.


Bir Web Sitesine Ödeme Ağ Geçidi Entegre Etmenin En Kolay Yolu Nedir?

Bir ödeme ağ geçidi entegre etmenin en kolay yolu, ödeme işlemcinizin sağladığı barındırılan ödeme sayfasını kullanmaktır. Örneğin Stripe Checkout, tek bir satır özel kart arayüzü olmadan kart oluşturma, 3D Secure kimlik doğrulama, vergi hesaplama ve mobil düzeni yönetir. Kullanıcıyı Stripe tarafından barındırılan bir URL'ye yönlendirirsiniz ve dönüşte bir webhook işlersiniz.

Bir Next.js uygulaması için minimal akış şöyle görünür:

  1. Stripe API aracılığıyla bir Checkout Session oluşturun (sunucu tarafında, gizli anahtarınızı kullanarak).
  2. Oturum URL'sini istemcinize döndürün.
  3. Kullanıcıyı o URL'ye yönlendirin.
  4. Stripe, ödemenin ardından success_url adresinize geri yönlendirir.
  5. /api/webhooks/stripe uç noktanıza gelen bir webhook ödemeyi onaylar ve veritabanınızı günceller.

Bu beş adım, ve 2–4. adımlar esasen birer satırdır. Çalışan bir ödeme akışını bir öğleden sonra hayata geçirebilirsiniz.


Stripe'ı Bir Web Uygulamasına Nasıl Entegre Ederim?

Stripe, günümüzde mevcut olan en geliştirici dostu ödeme API'sidir ve Next.js entegrasyonu iyi belgelenmiştir. İşte somut adım adım bir rehber:

1. Stripe SDK'yı Yükleyin

npm install stripe @stripe/stripe-js

2. Bir Checkout Session Oluşturun (sunucu rotası)

// app/api/checkout/route.ts
import Stripe from 'stripe';
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!);

export async function POST() {
  const session = await stripe.checkout.sessions.create({
    mode: 'subscription',
    line_items: [{ price: 'price_xxxx', quantity: 1 }],
    success_url: `${process.env.NEXT_PUBLIC_URL}/success`,
    cancel_url: `${process.env.NEXT_PUBLIC_URL}/pricing`,
  });
  return Response.json({ url: session.url });
}

3. İstemciden Yönlendirin

const res = await fetch('/api/checkout', { method: 'POST' });
const { url } = await res.json();
window.location.href = url;

4. Webhook'u İşleyin

Yerel olarak stripe listen --forward-to localhost:3000/api/webhooks/stripe komutunu kullanın. Üretimde, uç noktanızı Stripe Dashboard'da yapılandırın ve imzayı stripe.webhooks.constructEvent ile doğrulayın.

Webhook imza doğrulamasını hiçbir zaman atlamamayın. Tekrar saldırıları gerçektir ve doğrulanmamış bir webhook uç noktası, sahte abonelik aktivasyonları için açık bir kapıdır.


Yüksek Dönüşümlü Bir Faturalama Sayfasının Anatomisi

Bir fiyatlandırma sayfası bir satış sayfasıdır. Teknik entegrasyon kusursuz olabilir, ancak sayfa yine de dönüştürmekte başarısız olabilir. İşte her yüksek dönüşümlü faturalama sayfasının içerdiği unsurlar:

  • 2–3 katmanlı net bir fiyatlandırma tablosu. Üç katman ikiden fazla dönüştürür çünkü orta katman değeri demirler. Kullanıcıların gerçekten seçmesini istediğiniz katmana bir "En Popüler" rozeti ekleyin.
  • Fayda odaklı CTA metni. "İnşa etmeye başla" ifadesi "Abone ol"dan daha iyi dönüştürür. "Tam erişim edin" ifadesi "Yükselt"ten daha iyi dönüştürür.
  • CTA yakınındaki güven sinyalleri. Bir asma kilit simgesi, "İstediğiniz zaman iptal edin," para iade garantisi metni ve tanınan ödeme yöntemlerinin logoları (Visa, Mastercard, Apple Pay) satın alma anındaki sürtünmeyi azaltır.
  • Yıllık/aylık geçiş. Yıllık bir indirim göstermek (genellikle %20) dönüşümü düşürmeden kullanıcı başına ortalama geliri artırır — yıllık seçenekleri tercih eden kullanıcılar daha az kayıp verir ve daha yüksek yaşam boyu değere sahiptir.
  • Mobil öncelikli düzen. SaaS deneme kayıtlarının %50'sinden fazlası artık mobilde gerçekleşiyor. Küçük ekranlarda fiyatlandırma kartlarınızı dikey olarak yığın; küçültmeyin.

Web Uygulamaları İçin En İyi Ödeme API'leri Nelerdir?

2024–2025'te web uygulamaları için en yaygın kullanılan üç ödeme API'si şunlardır:

  1. Stripe — En iyi genel geliştirici deneyimi, en zengin özellik seti (abonelikler, kullanım faturalandırması, Connect, Tax). Ücretler: ABD'de işlem başına %2,9 + 30¢.
  2. Paddle — Kayıt Tüccarı olarak hareket ederek KDV/GST uyumluluğunu sizin için yönetir. Uluslararası satış yapan SaaS için en iyi seçenek.
  3. LemonSqueezy — Paddle'dan daha basit, bağımsız geliştiriciler arasında popüler. Aynı zamanda bir Kayıt Tüccarıdır.

İngilizce konuşulan pazarları hedefleyen çoğu Next.js web uygulaması için Stripe doğru varsayılandır. API'si en kapsamlı şekilde belgelenmiştir, Next.js entegrasyon rehberi kapsamlıdır ve topluluk eklentileri ekosistemi eşsizdir.


Web Uygulamam Üzerinde Doğrudan Ödeme İşlemek Güvenli midir?

Evet — tek bir katı kuralıyla: ham kart verilerini asla kendiniz işlemeyin. Modern ödeme entegrasyonları, kart girişini tamamen ödeme işlemcisine devreder (Stripe Elements veya barındırılan Checkout aracılığıyla). Sunucunuz yalnızca bir ödeme tokeni veya oturum kimliğine dokunur, kart numaralarına değil. Bu, sizi PCI DSS kapsamı dışında tutar (özellikle SAQ A — en basit öz değerlendirme anketi için uygun hale gelirsiniz).

Güvenlik kontrol listesi:

  • Her yerde HTTPS kullanın (herhangi bir ödeme akışı için pazarlık konusu değil).
  • Her gelen olay için Stripe webhook imzalarını doğrulayın.
  • Yalnızca ihtiyacınız olanı saklayın: veritabanınızda bir customerId ve subscriptionId, asla kart numaraları değil.
  • API anahtarlarını depolamada şifreleyin; bunları çalışma zamanında ortam değişkenleri olarak enjekte edin.

Yasal Olarak Online Ödeme Kabul Etmek İçin Neye İhtiyacım Var?

Yasal gereklilikler yargı bölgesine göre değişir, ancak çoğu web uygulaması için temel şunlardır:

  1. KYC/AML kurallarını karşılamak için kimlik doğrulaması tamamlanmış bir Stripe (veya eşdeğer) hesabı (işletme veya kişisel bilgilerinizi sağlayacaksınız).
  2. Ödeme verileri dahil kullanıcı verilerini nasıl işlediğinizi açıklayan bir Gizlilik Politikası.
  3. İade politikası, abonelik iptali ve kabul edilebilir kullanımı kapsayan Hizmet Koşulları.
  4. Vergi uyumu — AB müşterilerine satış yapıyorsanız KDV geçerli olabilir. Stripe Tax bunu otomatikleştirebilir veya Paddle gibi bir Kayıt Tüccarı kullanabilirsiniz.
  5. İade politikası — Stripe, kullanıcılar ödeme yapmadan önce görünür bir politikanıza sahip olmanızı gerektirir.

Başlamak için kayıtlı bir işletmeye sahip olmanız gerekmez, ancak çoğu ülkede önemli bir gelire ulaşmadan önce bir işletme kuruluşuna (LLC, Ltd, şahıs şirketi) ihtiyacınız olacaktır.


Gizli Anahtar Yönetimi 101: API Anahtarlarınızı Kodunuzdan Uzak Tutun

Ödeme entegrasyonları gizli API anahtarları gerektirir — ve sızdırılan bir Stripe gizli anahtarı, birinin iade düzenleyebileceği, abonelik oluşturabileceği veya bakiyenizi boşaltabileceği anlamına gelir. Kural basittir: API anahtarları kaynak kodunuzda, derleme günlüklerinizde veya sürüm kontrol geçmişinizde asla görünmemelidir.

Doğru model:

  • Anahtarları ortam değişkenleri olarak saklayın (örn. STRIPE_SECRET_KEY).
  • Bunlara yalnızca sunucu tarafında erişin — tarayıcıya asla ifşa etmeyin.
  • Bir sızıntıdan şüphelenirseniz anahtarları hemen değiştirin.

FloopFloop ile inşa ettiğinizde, projeye özgü gizli anahtarlar (ödeme sağlayıcısı anahtarları dahil) bir platform arayüzü aracılığıyla saklanır, AWS KMS ile beklemede şifrelenir ve çalışma zamanı ortamına enjekte edilir — oluşturulan kodda veya derleme günlüklerinde asla görünmezler. Bu, bir gizli anahtar yöneticisi kurmak zorunda kalmadan üretim düzeyinde gizli anahtar hijyeni elde ettiğiniz anlamına gelir.


Lansman Sonrası: Makbuzlar, Başarısız Ödemeler ve Fiyatlandırma Analitiği

İlk ödeme yapan kullanıcıyı kazanmak başlangıçtır, son değil. Lansmandan hemen sonra bağlayacağınız üç şey:

  1. Otomatik makbuz e-postaları. Stripe bunları yerel olarak gönderebilir — Dashboard ayarlarınızdan etkinleştirin. Markalı makbuzlar için payment_intent.succeeded webhook'u tarafından tetiklenen bir işlemsel e-posta sağlayıcısı (Resend, Postmark) kullanın.

  2. Başarısız ödeme kurtarma (dunning). Abonelik ödemeleri, süresi dolmuş kartlar veya yetersiz bakiye nedeniyle yaklaşık %10–15 oranında başarısız olur. Stripe'ın Akıllı Yeniden Denemelerini etkinleştirin ve kullanıcıların ödeme yöntemlerini güncelleyebilmesi için Müşteri Portalınızı yapılandırın. Tek bir otomatik yeniden deneme e-postası, başarısız ücretlerin %20–30'unu kurtarabilir.

  3. Fiyatlandırma sayfası analitiği. Lansmandan önce fiyatlandırma sayfanıza etkinlik takibi (örn. Plausible veya PostHog) ekleyin. Şunları takip edin: sayfa görüntülemeleri → plan tıklamaları → başlayan ödeme oturumları → tamamlanan ödemeler. Her aşamadaki huni düşüşü, tam olarak nerede yineleme yapmanız gerektiğini söyler — metin, fiyat noktası veya plan yapısı.


Sonuç

Bir web uygulamasına ödeme eklemek geç aşama bir kaygı değildir — erken başvurmanız gereken bir doğrulama aracıdır. Stripe gibi barındırılan bir ödeme sağlayıcısı seçin, değer sunumunuzla eşleşen bir fiyatlandırma modeli belirleyin, güven ve netlik üzerine kurulu bir fiyatlandırma sayfası tasarlayın ve API anahtarlarınızı her katmanda koruyun. Bu temel yerinde olduğunda, "çalışan uygulama"dan "gelir yaratan ürün"e aylar içinde değil, günler içinde geçersiniz. Ortak kodları tamamen atlamak istiyorsanız, FloopFloop tek bir doğal dil isteminden tam bağlantılı bir Next.js ödeme akışı — faturalama sayfası, webhook işleyicileri ve şifreli gizli anahtar enjeksiyonu dahil — oluşturabilir.

Sıkça sorulan sorular

Bir web sitesine ödeme ağ geçidi entegre etmenin en kolay yolu nedir?

En kolay yol, ödeme işlemcinizin barındırılan ödeme sayfasını kullanmaktır. Stripe Checkout, örneğin, özel kart arayüzü olmadan kart oluşturma, kimlik doğrulama ve mobil düzeni yönetir. Sunucu tarafında bir Checkout Session oluşturur, kullanıcıyı Stripe tarafından barındırılan URL'ye yönlendirir ve ödeme tamamlandığında bir webhook işlersiniz. Bu, SAQ A'nın ötesinde PCI DSS uyumu gerektirmez ve birkaç saatte uygulanabilir.

Web uygulamam üzerinde kredi kartı ödemelerini nasıl kabul ederim?

Stripe gibi bir ödeme sağlayıcısı kullanın. Sunucunuzda Stripe API aracılığıyla bir Checkout Session oluşturun, oturum URL'sini istemcinize döndürün ve kullanıcıyı oraya yönlendirin. Stripe, kart bilgilerini kendi güvenli iframe'inde toplar — sunucunuz yalnızca bir oturum kimliği ve webhook onay olayıyla ilgilenir, ham kart numarasıyla asla. Bu, sizi PCI kapsamı dışında tutar ve Next.js uygulamaları için önerilen yaklaşımdır.

Web uygulamaları için en iyi ödeme API'leri nelerdir?

Stripe, çoğu web uygulaması için en iyi varsayılandır — en zengin özellik setine (tek seferlik ödemeler, abonelikler, kullanım faturalandırması, vergi) ve en iyi geliştirici deneyimine sahiptir. Paddle ve LemonSqueezy, uluslararası KDV/GST uyumluluğunu otomatik olarak yönetmek için bir Kayıt Tüccarına ihtiyaç duyduğunuzda güçlü alternatiflerdir. İngilizce konuşulan pazarları hedefleyen bağımsız geliştiriciler ve küçük SaaS ürünleri için Stripe en pratik başlangıç noktasıdır.

Stripe'ı bir web uygulamasına nasıl entegre ederim?

Stripe Node.js SDK'sını yükleyin (npm install stripe). Fiyat kimliğiniz, başarı URL'si ve iptal URL'siyle stripe.checkout.sessions.create() çağrısı yapan sunucu tarafında bir API rotası oluşturun, ardından oturum URL'sini istemciye döndürün. İstemcide kullanıcıyı o URL'ye yönlendirin. Ödemenin ardından Stripe webhook uç noktanızı çağırır — stripe.webhooks.constructEvent() kullanarak olay imzasını doğrulayın ve veritabanınızı güncelleyin. Tüm akış 50 satırdan az TypeScript ile uygulanabilir.

Web uygulamam üzerinde doğrudan ödeme işlemek güvenli midir?

Evet, ham kart verilerini kendiniz işlemediğiniz sürece. Stripe Checkout veya Stripe Elements kullanarak kart girişi tamamen Stripe'ın sunucularına devredilir. Uygulamanız yalnızca oturum kimliklerine ve webhook olaylarına dokunur; bu da sizi en basit PCI DSS uyumluluk katmanında (SAQ A) tutar. Her zaman HTTPS kullanın, webhook imzalarını doğrulayın ve kendi veritabanınızda yalnızca müşteri ile abonelik kimliklerini saklayın — asla kart numaralarını değil.

Yasal olarak online ödeme kabul etmek için neye ihtiyacım var?

Asgari olarak şunlara ihtiyacınız vardır: (1) KYC/AML gerekliliklerini karşılayan doğrulanmış bir Stripe veya eşdeğer hesap, (2) kullanıcı ve ödeme verilerinin nasıl işlendiğini açıklayan bir Gizlilik Politikası, (3) iade politikası içeren Hizmet Koşulları ve (4) hedef pazarlarınız için vergi uyumu (Stripe Tax veya Paddle gibi bir Kayıt Tüccarı KDV/GST'yi otomatikleştirebilir). Başlamak için kayıtlı bir işletme kuruluşuna mutlaka sahip olmanız gerekmez, ancak çoğu yargı bölgesinde önemli bir gelire ulaşmadan önce birine ihtiyaç duyacaksınız.

Bu makaleyi paylaş

FloopFloop bültenine abone olun

Yeni yazılar, ürün güncellemeleri ve ara sıra küçük dersler — doğrudan gelen kutunuza.

E-postanızı asla paylaşmayız. Aboneliği istediğiniz zaman iptal edebilirsiniz.