Faturalandırmaya Genel Bakış
Uygulamanızda abonelikleri ve faturalandırmayı nasıl yöneteceğinizi öğrenin.
Not: Bu içerik, tanıtım amacıyla hazırlanmış örnek/yer tutucu bir içeriktir.
Faturalandırma sistemi, birden fazla kademe ve ödeme sağlayıcısıyla abonelik tabanlı fiyatlandırmayı destekler.
Desteklenen Sağlayıcılar
Stripe
Kapsamlı özelliklere sahip, sektör standardı ödeme işleme altyapısı:
- Kredi kartıyla ödemeler
- Abonelik yönetimi
- Fatura oluşturma
- Vergi hesaplama
- Müşteri portalı
Paddle
Aşağıdakileri üstlenen bir "merchant of record" (kayıtlı satıcı) çözümü:
- Küresel vergi uyumluluğu
- Ödeme işleme
- Abonelik faturalandırması
- Gelir kurtarma
Abonelik Kademeleri
Abonelik kademelerinizi faturalandırma yapılandırmasında tanımlayın:
export const plans = [
{
id: 'free',
name: 'Free',
price: 0,
features: ['Feature 1', 'Feature 2'],
},
{
id: 'pro',
name: 'Professional',
price: 29,
interval: 'month',
features: ['All Free features', 'Feature 3', 'Feature 4'],
},
{
id: 'enterprise',
name: 'Enterprise',
price: 99,
interval: 'month',
features: ['All Pro features', 'Feature 5', 'Priority support'],
},
];
Abonelik Yaşam Döngüsü
- Müşteri plan seçer - Kullanıcı bir abonelik kademesi seçer
- Ödeme işlenir - Sağlayıcı ödemenin tahsilatını yönetir
- Webhook alınır - Uygulamanız onayı alır
- Abonelik etkinleştirilir - Kullanıcı özelliklere erişim kazanır
- Yinelenen faturalandırma - Her dönem otomatik olarak yenilenir
- İptal - Kullanıcı istediği zaman iptal edebilir
Abonelikleri Yönetme
Abonelik Oluşturma
import { createCheckoutSession } from '~/lib/billing/checkout';
const session = await createCheckoutSession({
accountId: user.accountId,
planId: 'pro',
returnUrl: '/dashboard',
});
// Kullanıcıyı ödeme sayfasına yönlendir
redirect(session.url);
Abonelik Durumunu Kontrol Etme
import { getSubscription } from '~/lib/billing/subscription';
const subscription = await getSubscription(accountId);
if (subscription.status === 'active') {
// Kullanıcının etkin bir aboneliği var
}
Aboneliği İptal Etme
import { cancelSubscription } from '~/lib/billing/subscription';
await cancelSubscription(subscriptionId);
Webhook İşleme
Webhook'lar, uygulamanızı faturalandırma olaylarından haberdar eder:
export async function POST(request: Request) {
const signature = request.headers.get('stripe-signature');
const payload = await request.text();
const event = stripe.webhooks.constructEvent(
payload,
signature,
process.env.STRIPE_WEBHOOK_SECRET
);
switch (event.type) {
case 'customer.subscription.created':
await handleSubscriptionCreated(event.data.object);
break;
case 'customer.subscription.updated':
await handleSubscriptionUpdated(event.data.object);
break;
case 'customer.subscription.deleted':
await handleSubscriptionCanceled(event.data.object);
break;
}
return new Response('OK');
}
Test Etme
Geliştirme sırasında test modu kimlik bilgilerini kullanın:
- Test kartı: 4242 4242 4242 4242
- Gelecekteki herhangi bir son kullanma tarihi
- Herhangi bir CVC
Tüm test işlemleri, sağlayıcınızın test panelinde görünür.