Plugin'ler
Captcha Doğrulaması
Ödeme formlarınızı ve uç noktalarınızı otomatik kart deneme botlarından koruyun.
0.12.0 sürümünde eklendi
Otomatik botlar ve dolandırıcılar, çalıntı kredi kartı numaralarını e-ticaret ödeme formlarında art arda denerler (card-testing saldırıları). Ödeme işleminden önce bir captcha doğrulaması yapmak, bu saldırılara karşı en hesaplı ve etkili savunmadır.
captcha eklentisi, ödeme sağlayıcısını çağırmadan önce token'ı Cloudflare Turnstile, Google reCAPTCHA v3 veya hCaptcha servisleriyle doğrular.
Kurulum
import { betterPayment, iyzico } from 'better-payment';
import { captcha } from 'better-payment/plugins';
const payment = betterPayment({
providers: { iyzico: iyzico({ /* ... */ }) },
plugins: [
captcha({
provider: 'cloudflare-turnstile',
secretKey: process.env.TURNSTILE_SECRET!,
}),
],
});Nasıl Çalışır?
- Token Çıkarma: Eklenti istek gövdesini (
captchaToken,cf-turnstile-response,g-recaptcha-response,h-captcha-response) ve HTTP başlıklarını (x-captcha-response) otomatik inceler. - Sunucu Tarafı Doğrulama: Ödeme işlemi başlamadan hemen önce token, seçilen servisin
siteverifyAPI'si ile sunucu tarafında doğrulanır. - Bot Engelleme: Token eksikse veya geçersizse istek doğrudan
status: 'failure've standartCAPTCHA_MISSINGya daCAPTCHA_INVALIDhata koduyla reddedilir. - Banka Callback'lerini Etkilemez: Banka yönlendirmeleri, 3D Secure onayları ve webhook bildirimleri captcha eklentisinden muaf tutulur.
Desteklenen Sağlayıcılar
Cloudflare Turnstile
Kullanıcı dostu ve gizlilik odaklı modern doğrulama:
captcha({
provider: 'cloudflare-turnstile',
secretKey: process.env.TURNSTILE_SECRET_KEY!,
});Google reCAPTCHA v3
Davranışsal puan eşiği (0.0 ile 1.0 arası) desteği:
captcha({
provider: 'google-recaptcha',
secretKey: process.env.RECAPTCHA_SECRET_KEY!,
minScore: 0.5, // reject submissions with score < 0.5
});hCaptcha
captcha({
provider: 'hcaptcha',
secretKey: process.env.HCAPTCHA_SECRET_KEY!,
});İstemci (Frontend) Örneği
Ödeme isteğinizde token'ı iletin:
// Next.js / React with Cloudflare Turnstile
const res = await fetch('/api/pay/iyzico/payment', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-captcha-response': turnstileToken,
},
body: JSON.stringify({
price: '150.00',
paidPrice: '150.00',
card: { ... },
}),
});Seçenekler
| Seçenek | Varsayılan | Açıklama |
|---|---|---|
provider | — | 'cloudflare-turnstile', 'google-recaptcha' veya 'hcaptcha' |
secretKey | — | Captcha sağlayıcı panelinizden aldığınız gizli anahtar |
minScore | 0.5 | Google reCAPTCHA v3 için gereken asgari geçerlilik puanı (0.0 ile 1.0) |
operations | Ödeme başlatma | Captcha doğrulaması gerektiren operasyonlar (varsayılan: ['createPayment', 'initThreeDSPayment', 'authorize', 'initThreeDSAuthorize']) |
getToken | — | Özel token çıkarma fonksiyonu (req) => string |