Bun
Better Payment'i Bun.serve ile sunun.
toFetchHandler, ödeme handler'ını Bun.serve'ün beklediği fetch fonksiyonuna çevirir. Bun .env dosyalarını kendisi okur; anahtarlar için ek kurulum gerekmez.
1. Sunucuyu oluşturun
// server.ts
import { betterPayment, iyzico, toFetchHandler } from 'better-payment';
const payment = betterPayment({
mode: Bun.env.NODE_ENV === 'production' ? 'production' : 'sandbox',
providers: {
iyzico: iyzico({
apiKey: Bun.env.IYZICO_API_KEY!,
secretKey: Bun.env.IYZICO_SECRET_KEY!,
}),
},
});
const pay = toFetchHandler(payment);
Bun.serve({
port: 3000,
fetch(request) {
if (new URL(request.url).pathname.startsWith('/api/pay/')) return pay(request);
return new Response('Not found', { status: 404 });
},
});Handler'ın basePath'i (varsayılan /api/pay) dışındaki istekler uygulamanızın geri kalanına gider. Bun'da Elysia ya da Hono kullanıyorsanız onların adapter'larını kullanın.
2. Çalıştırın
bun add better-payment
bun run server.ts3. Ödeme başlatın
Route'lar /api/pay altında sunulur, frontend onları doğrudan çağırır:
const res = await fetch('/api/pay/iyzico/payment/init-3ds', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(paymentRequest),
});Tipli istemci (better-payment/client) aynı route'ları sarmalar.
4. Callback adresleri
callbackUrl'i https://siteniz.com/api/pay/<provider>/payment/complete-3ds olarak ayarlayın. Handler callback'i doğrular, onCallback'i çağırır ve müşteriyi callbackRedirect ile yönlendirir.
PayTR için PayTR panelindeki bildirim URL'ini https://siteniz.com/api/pay/paytr/callback olarak ayarlayın.