İçeriğe geç
Güvenli handler

Next.js, Express ve Hono İçin Tek Satırda Webhook Endpoint

3D Secure callback'leri ve sağlayıcı bildirimleri için güvenli uç nokta. İstek gövdelerini sabit zamanda doğrular; iade ve iptal gibi hassas rotaları authorize hook'u ile korur.

createPaymentHandler()
  1. 1

    Banka callback'i

    POST /api/payment/callback
  2. İmza doğrulama

    timingSafeEqual(hash)
  3. 3

    Sipariş eşleşmesi

    invoice_id === order_id
  4. 4

    Kodunuz

    onPaymentSuccess()
Geçersiz imza → 400, kodunuz hiç çalışmaz
Avantajlar

Bu özellik neden işinize yarar?

1

Sabit Zamanlı İmza Doğrulama

Kriptografik timing saldırılarını önleyen güvenli hash karşılaştırması.

2

Tek Satırda Next.js Desteği

app/api/pay/route.ts dosyasına export const { GET, POST } yazmanız yeterlidir.

3

Authorize Hook Koruması

İade ve iptal gibi riskli işlemler authorize kancası tanımlanmadan çalıştırılamaz.

4

Multi-Framework Desteği

Express, Fastify, Hono, Node.js http ve Web standardı Request/Response uyumu.

Basit, anlaşılır ve doğrudan.

Better Payment olmadan

Her callback için elle imza hesaplama, açıkta kalan iade endpoint'leri ve CSRF riskleri.

Better Payment ile

Otomatik doğrulanmış, zamanlama saldırılarına karşı korumalı ve tek satırda entegre edilen handler.

api-handler.tsTypeScript
// app/api/pay/route.ts (Next.js App Router)
import { createPaymentHandler } from "better-payment/next";
import { payment } from "@/lib/payment";

export const { GET, POST } = createPaymentHandler({
  payment,
  // Protect sensitive endpoints
  async authorize(req, action) {
    if (action === "refund" || action === "cancel") {
      const session = await getAdminSession(req);
      return session?.role === "ADMIN";
    }
    return true;
  },
  async onPaymentSuccess(result) {
    await db.orders.update({ id: result.orderId, status: "PAID" });
  }
});