Web sitenize ödeme entegrasyonu eklemenin en güvenli ve hızlı yolu, ödemeleri doğrudan kendi sunucunuzda işlemek yerine bir ödeme sağlayıcısının (iyzico, Stripe gibi) hazır altyapısını kullanmaktır. Bu sağlayıcılar kart verilerini kendi PCI-DSS sertifikalı sistemlerinde işler; siz yalnızca API anahtarlarınızla bir istek gönderir, sonucu webhook ile dinlersiniz. Türkiye için en yaygın seçenek iyzico, uluslararası satış için Stripe, yüksek hacimli işletmeler için ise banka sanal POS entegrasyonudur. Doğru entegrasyon, özel yazılım geliştirme hizmetlerimizin sık talep edilen bir parçasıdır.
Hangi Ödeme Sağlayıcısını Seçmeli?
Doğru sağlayıcı; hedef pazarınıza, işlem hacminize ve teknik kaynaklarınıza bağlıdır. Üç ana seçeneği karşılaştıralım:
- iyzico / PayTR: Türkiye pazarına odaklı, Türk Lirası ve yerel kartlarla tam uyumlu, taksit desteği güçlü. Entegrasyonu hızlı, dokümantasyonu Türkçe.
- Stripe: Uluslararası satış ve abonelik (subscription) modelleri için en olgun altyapı. 135+ para birimi; ancak Türkiye’de tüzel kişilik kurulumu ek adım gerektirir.
- Banka Sanal POS (Garanti, İş Bankası, Akbank): En düşük komisyon oranı yüksek hacimde avantajlı; ancak entegrasyon daha karmaşık ve her banka için ayrı geliştirme gerekir.
Komisyon oranları işlem başına genellikle %1,5 ile %3,5 arasında değişir. Düşük hacimde sağlayıcı komisyonu önemsizdir; aylık yüksek ciroda ise 0,5 puanlık fark bile yıllık ciddi bir tutara dönüşür.
Güvenlik: PCI-DSS ve Kart Verisi
Online ödemede en kritik konu kart verilerinin asla kendi sunucunuza dokunmamasıdır. Modern sağlayıcılar bunu "hosted checkout" ya da "tokenization" ile çözer: kullanıcı kart bilgisini sağlayıcının iframe’ine ya da sayfasına girer, size yalnızca tek kullanımlık bir token döner. Böylece PCI-DSS yükümlülüğünüz en düşük seviyeye iner ve veri sızıntısı riski sağlayıcıya devrolur. Kişisel veri tarafını KVKK uyumlu web sitesi rehberimizde ayrıca ele aldık.
- Kart numarası, CVC ve son kullanma tarihini hiçbir zaman kendi veritabanınızda saklamayın
- Tüm ödeme trafiğini HTTPS (TLS) üzerinden taşıyın
- API anahtarlarını ortam değişkeninde (env) tutun, asla istemci tarafına gömmeyin
- 3D Secure’u her işlem için zorunlu tutarak chargeback riskini azaltın
Teknik Akış Nasıl İşler?
Ödeme entegrasyonunun çekirdeği üç adımdır: sunucuda bir ödeme oturumu (checkout session) oluşturmak, kullanıcıyı sağlayıcının güvenli ödeme ekranına yönlendirmek ve ödeme sonucunu webhook ile doğrulamak. Aşağıdaki Stripe örneği, sunucu tarafında bir ödeme oturumu oluşturmayı gösterir:
// app/api/checkout/route.ts (Next.js — sunucu tarafı)
import Stripe from 'stripe';
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!);
export async function POST(req: Request) {
const { priceId } = await req.json();
const session = await stripe.checkout.sessions.create({
mode: 'payment',
line_items: [{ price: priceId, quantity: 1 }],
success_url: `${process.env.SITE_URL}/odeme/basarili?session_id={CHECKOUT_SESSION_ID}`,
cancel_url: `${process.env.SITE_URL}/odeme/iptal`,
});
// Kullanıcıyı Stripe'ın güvenli ödeme ekranına yönlendir
return Response.json({ url: session.url });
}Ödeme tamamlandığında sağlayıcı, sunucunuza bir webhook isteği gönderir. Siparişi yalnızca bu webhook doğrulandıktan sonra "ödendi" olarak işaretleyin — istemci tarafındaki "başarılı" sayfasına asla güvenmeyin, çünkü manipüle edilebilir.
// Webhook: ödemeyi sunucuda doğrula (kaynak: gerçek olay)
export async function POST(req: Request) {
const sig = req.headers.get('stripe-signature')!;
const body = await req.text();
const event = stripe.webhooks.constructEvent(
body, sig, process.env.STRIPE_WEBHOOK_SECRET!
);
if (event.type === 'checkout.session.completed') {
const session = event.data.object;
await markOrderAsPaid(session.id); // siparişi burada onayla
}
return new Response(null, { status: 200 });
}Tek Seferlik Ödeme mi, Abonelik mi?
İş modeliniz entegrasyonun şeklini belirler. E-ticarette tek seferlik ödeme yeterliyken, SaaS ve üyelik modellerinde yinelenen (recurring) abonelik altyapısı gerekir: otomatik yenileme, başarısız ödeme denemeleri, iptal ve iade akışları. Abonelik tarafı tek seferlik ödemeye göre belirgin biçimde daha karmaşıktır ve baştan doğru kurulmalıdır. Bir e-ticaret altyapısı kuruyorsanız e-ticaret sitesi nasıl kurulur yazımız bütünsel bir yol haritası sunar.
Entegrasyon Ne Kadar Sürer?
- Hazır sağlayıcı (iyzico/Stripe) tek seferlik ödeme: tipik olarak 3-5 iş günü
- Abonelik + fatura yönetimi: 1-2 hafta
- Banka sanal POS (3D Secure dahil): banka onay sürecine bağlı olarak 2-4 hafta
Sonuç
Web sitesine ödeme entegrasyonu, doğru sağlayıcı seçimi ve güvenlik kurallarına uyulduğunda öngörülebilir bir süreçtir: kart verisini sağlayıcıya bırakın, sonucu webhook ile doğrulayın ve iş modelinize göre tek seferlik veya abonelik akışını kurun. Projeniz için hangi sağlayıcının uygun olduğundan emin değilseniz web geliştirme hizmetlerimizi inceleyebilir veya doğrudan teklif alabilirsiniz.