İçeriğe geç
Better Payment
Entegrasyonlar

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.ts

3. Ö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.