> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# Stripe ödemeleri ekleyin

Ücretsiz bir Stripe hesabı, yinelenen fiyatlı bir ürün, gizli anahtar ve ödemeden sonra yetki veren imzalı webhook oluşturun.

## Başlangıç seviyesinde izlenecek yol

Ön koşullar: uygulama yerelde çalışıyor (5 dakikada yayınlayın) ve gerçek hesaplar için geçiş yapılmış bir veritabanı (Veritabanını kurun). Stripe hesabı için bir e-posta adresi gerekir — kart yok, ödeme yok. Bu rehberdeki her şey test modunda olur: sahte para, test kartı numaraları, canlıya çıkmadan önce sınırsız yeniden deneme.

Kısa terimler: test modu Stripe'ın sandbox'udur — gösterge panelindeki Test mode düğmesi siz kapatana kadar her anahtarı, ürünü ve ödemeyi sahte tutar. Gizli anahtar (`sk_test_…`) sunucunuzun Stripe'a olan parolasıdır. Fiyatlı ürün, müşterilerin satın aldığı şeydir; price id (`price_…`) onu kodda adlandırır. Webhook, bir ödeme başarılı olduğunda veya abonelik değiştiğinde Stripe'ın sunucunuzu çağırmasıdır; imza gizli anahtarı (`whsec_…`) çağrının gerçekten Stripe'dan geldiğini kanıtlar.

Oluşturacağınız şey: bir Stripe hesabı, yinelenen fiyatlı bir ürün, gizli bir API anahtarı ve bir webhook uç noktası — yaklaşık yirmi dakika. Stripe ödeme sayfasını kendisi barındırır; kit oturumu sunucu tarafında oluşturur ve yönlendirir, bu yüzden yayınlanabilir tarayıcı anahtarı gerekmez.

Kapsamı aklınızda tutun: bu rehber yalnızca web abonelikleri satar. iOS/Android uygulama içi satın alımlar Apple ve Google faturalandırmasından geçmelidir — asla Stripe Checkout'tan değil — mobilin RevenueCat kullanmasının sebebi budur.

[Veritabanını kurma](https://supastack.dev/tr/docs/web/setup-database.md)

[Mobil satın alımlar için RevenueCat'i kurun](https://supastack.dev/tr/docs/mobile/revenuecat.md)


## Stripe hesabı oluşturun

1. [stripe.com](https://stripe.com) → Start now'u açın ve e-postanızla kaydolun.

2. Katılım işlemi işletmeniz hakkında sorular sorar — test modunda her soruyu atlayabilir ve yine de tam sandbox'u kullanabilirsiniz; etkinleştirmeyi yalnızca gerçek ödemeleri kabul etmeden önce tamamlayın.

Beklenen: başlıkta Test mode düğmesi görünür olan gösterge paneline ulaşırsınız. Aşağıdaki her şey için açık tutun — canlı anahtarlar daha sonra üretim gizli deponuza girer, dizüstü bilgisayar env dosyasına asla.


## API anahtarlarını kopyalayın

1. Gösterge panelinde Developers → API keys'i açın.

2. İki test anahtarı görürsünüz: Publishable key `pk_test_…` ve maskelenmiş Secret key. Gizli anahtarın yanındaki Reveal test key'e tıklayın ve `sk_test_…` değerini kopyalayın.

Kit'in yalnızca gizli anahtara ihtiyacı vardır: ödeme oturumları sunucuda oluşturulur ve kullanıcı Stripe'ın barındırdığı sayfaya yönlendirilir, bu yüzden yayınlanabilir anahtar env değişkenlerine girmez. Daha sonra oluşturacağınız bir ürün Stripe.js eklerse yayınlanabilir anahtarı istemci tarafında kullanırdınız; kit'in faturalandırma akışı kullanmaz.

`sk_test_…` anahtarı sandbox hesabı için tam kimlik bilgisidir: `apps/web/.env.local` veya bir gizli depoda yaşar, asla `NEXT_PUBLIC_`/`EXPO_PUBLIC_` değişkenlerinde veya Git'te olmaz.


## Ürün ve fiyat oluşturun

1. Product catalog → Add product'ı açın.

2. Planınızın adını verin — `Pro`, kit'in gönderdiği planla eşleşir — bir fiyat verin ve Recurring'i seçin (ör. aylık): kit'in ödemesi abonelik modu oturumları oluşturur ve bunlar tek seferlik değil yinelenen fiyat ister.

3. Kaydedin, ürünü açın ve price id'yi kopyalayın — `price_…` ile başlar (`prod_…` değil, o ürün kimliğidir).

Gönderilen `pro` planı zaten Monthly/Yearly düğmesi gösterir: aylık `STRIPE_PRICE_ID` ile ödeme yapar ve yıllık seçenek `STRIPE_PRICE_ID_PRO_YEARLY` içinde ikinci bir yinelenen fiyat ister — olmadan yıllık ödeme `price-unconfigured` ile başarısız olur. Plan adlarını, tutarları ve satın alımın ne verdiğini `apps/web/src/product-plans.ts` dosyasında değiştirin — Stripe para tarafını, plan dosyası yetki tarafını tutar.


## Webhook uç noktası ekleyin

Webhook, erişimi gerçekten veren şeydir: kit, yetkiyi ancak imzalı bir Stripe olayı geldikten sonra çevirir, bu yüzden yalnızca ödeme yönlendirmesi hiçbir şey kanıtlamaz.

1. Developers → Webhooks → Add endpoint'i açın.

2. Endpoint URL: genel URL'niz artı `/api/billing/webhook` — ör. `https://yourdomain.com/api/billing/webhook`. Diğer faturalandırma sağlayıcıları bu dizin altında kendi yollarını alır; Stripe'ın dinleyicisi kökte yaşar.

3. Select events altında kit'in işlediği olayları seçin: `checkout.session.completed`, `checkout.session.async_payment_succeeded`, `checkout.session.async_payment_failed`, `invoice.paid`, `invoice.payment_failed`, `customer.subscription.created`, `customer.subscription.updated` ve `customer.subscription.deleted`.

4. Uç noktasını oluşturun, sayfasını açın, Signing secret altındaki Reveal'e tıklayın ve `whsec_…` değerini kopyalayın — her uç noktanın kendi gizli anahtarı vardır.

Yerel geliştirme Stripe'ın sunucularını alamaz, bu yüzden bunun yerine Stripe CLI kullanın: bir kez `stripe login`, ardından ikinci bir terminalde `stripe listen --forward-to localhost:3000/api/billing/webhook`. Geçici bir `whsec_…` yazdırır — `stripe listen` çalışırken `.env.local` içine gösterge paneli değeri değil bu değer girer.


## Değerleri uygulamaya ekleyin

Aşağıdaki satırları `apps/web/.env.local` içine ayarlayın. `BILLING_PROVIDER=stripe` bağdaştırıcıyı seçer; diğer üçü anahtar, fiyat ve imza gizli anahtarıdır. Herhangi biri eksikken sağlayıcıyı etkinleştirmek başlangıcı düşürür ve değişkeni adlandırır.

Üç `STRIPE_*` değerinin tamamı yalnızca sunucudadır — asla `NEXT_PUBLIC_`/`EXPO_PUBLIC_` değil, asla commit değil; üretim bunları hostun gizli yöneticisi aracılığıyla alır (dağıtım rehberi Secret Manager'ı kapsar). Düzenledikten sonra geliştirme sunucusunu yeniden başlatın.

```
# apps/web/.env.local
BILLING_PROVIDER=stripe
STRIPE_SECRET_KEY=sk_test_…
STRIPE_PRICE_ID=price_…
STRIPE_WEBHOOK_SECRET=whsec_…   # `stripe listen` value locally; endpoint signing secret in production
# STRIPE_PRICE_ID_PRO_YEARLY=price_…   # required for the shipped Yearly toggle
```


## Doğrulayın ve sorun giderin

`stripe listen --forward-to localhost:3000/api/billing/webhook` başlatın ve çalışır bırakın, geliştirme sunucusunu yeniden başlatın, ardından `/billing` açın, Pro planını seçin ve `4242 4242 4242 4242` test kartı, gelecekteki bir son kullanma tarihi ve herhangi bir CVC ile Stripe'ın barındırdığı ödemeyi tamamlayın.

Beklenen: uygulama `/billing?checkout=success` döner ve çalışma alanının yetkisi etkin olarak çevrilir — listen terminali teslim edilen olayları günlüğe kaydeder ve gösterge panelindeki Developers → Webhooks → uç noktanız yeşil teslimatlar gösterir.

Ödemeye tıklamadan dinleyiciyi denemek için `stripe trigger checkout.session.completed`, listen iletici üzerinden sentetik bir olay gönderir.

Yaygın hatalar: her teslimatta 400, imza gizli anahtarının o uç noktayla eşleşmediği anlamına gelir — doğru uç nokta için `whsec_…` yeniden kopyalayın ve env'i güncelleyin; sessiz hiçbir şey olmaması `BILLING_PROVIDER` hâlâ `local` demektir; test kurulumuna karışmış `sk_live_` anahtarları yanlış modun anahtarlarını kopyaladığınız anlamına gelir — test ve canlıyı kesinlikle ayrı tutun.

Kit, Lemon Squeezy, Creem, Polar, Whop, Paddle, Dodo ve PayPal için de aynı tek sözleşmeli bağdaştırıcıyı gönderir — aynı akış, farklı konsol ve env adları — ve mobil satın alımlar Stripe'da değil RevenueCat'te kalır.

[Faturalandırma sağlayıcılarını karşılaştırın](https://supastack.dev/tr/docs/web/setup-payments.md)

[Ardından Resend e-postası ekleyin](https://supastack.dev/tr/docs/web/resend-email.md)

[Mobil satın alımlar RevenueCat kullanır](https://supastack.dev/tr/docs/mobile/revenuecat.md)


Kuruluma devam etmek için [Resend e-postası ekleyin](https://supastack.dev/tr/docs/web/resend-email.md) kılavuzunu okuyun.


## Sonraki

[Resend e-postası ekleyin](https://supastack.dev/tr/docs/web/resend-email.md)
