Türk ödeme sistemleriiçin tek API.

Better Payment iyzico, PayTR, Parampos ve Akbank'ı tek bir tip güvenli arayüzde toplar; imzası doğrulanan callback'ler ve varsayılan olarak güvenli bir HTTP handler sunar.

$npm install better-payment
betterPayment()
Tek API · 4 sağlayıcı

Her ödeme sağlayıcısının
API'si bambaşka.

İstek yapıları, imzalar, hata formatları ve callback kuralları farklı. Better Payment her birini sağlayıcının kendi spesifikasyonuna göre uygular ve size tek bir tip seti sunar.

iyzico

Ödeme sağlayıcısı

IYZWSv2 imzalı JSON API: 3D'siz ve 3D Secure ödemeler, hazır ödeme formu, IBAN ile ödeme (PWI), abonelikler, BIN ve taksit sorguları.

Yetenekler

  • 3D'siz ve 3D Secure
  • Hazır ödeme formu
  • IBAN ile ödeme (PWI)
  • Abonelikler
  • BIN ve taksit sorguları
  • İade, iptal, durum sorgusu
Olmadan · iyzico APIBetter Payment ile
// JSON body + IYZWSv2 signature on every request
const rnd = Date.now() + "123456789";
const uri = "/payment/iyzipos/checkoutform/initialize/auth/ecom";
const signature = createHmac("sha256", secretKey)
  .update(rnd + uri + JSON.stringify(body))
  .digest("hex");
const auth = btoa(
  `apiKey:${apiKey}&randomKey:${rnd}&signature:${signature}`,
);

const res = await fetch(baseUrl + uri, {
  method: "POST",
  headers: {
    Authorization: "IYZWSv2 " + auth,
    "x-iyzi-rnd": rnd,
    "Content-Type": "application/json",
  },
  body: JSON.stringify(body),
});
// Map iyzico's status and error codes yourself
// Hosted checkout form
const result = await payment.iyzico.initCheckoutForm({
  price: "100.00",
  paidPrice: "100.00",
  currency: "TRY",
  basketId: "B1",
  callbackUrl: "https://yoursite.com/checkout/callback",
  buyer: { ... },
  basketItems: [ ... ],
});

// Render result.checkoutFormContent on your page
result.status; // "success" | "failure" | "pending"

İhtiyacınız olan her şey,
fazlası değil.

Birleşik API

createPayment, initThreeDSPayment, refund, cancel ve getPayment her sağlayıcıda aynı istek tiplerini alır ve aynı yapıda sonuç döner.

Sıfır bağımlılık

Runtime bağımlılığı yok; ESM ve CJS build'leri ve tarayıcıda güvenle kullanılabilen bir client var. Node.js, Vercel Edge, Cloudflare Workers, Deno ve Bun'da çalışır.

Doğrulanmış callback'ler

3D Secure callback'leri ve PayTR bildirimleri, ödeme alındı sayılmadan önce sizin kimlik bilgilerinizle sabit sürede doğrulanır.

Varsayılan olarak güvenli handler

HTTP handler varsayılan olarak yalnızca callback'leri ve kart sorgularını açar. İade, iptal ve sorgulama için bir authorize hook'u gerekir.

Çift çekim yok

Zaman aşımında tahmin yürütülmez; sonuç NETWORK_ERROR ile pending döner. Ödeme, iade ve iptal istekleri asla otomatik olarak tekrarlanmaz.

Banka sanal POS'u,
aynı arayüz.

Arada bir ödeme kuruluşu olmadan bankanın sanal POS'una doğrudan bağlanın; aynı istek ve sonuç tiplerini kullanın.

AkbankCanlı

Sanal POS · doğrudan entegrasyon

Akbank Sanal POS JSON API'si: HMAC-SHA512 imzalı istekler, imzası doğrulanan 3D Secure (3D_PAY) callback'leri, iadeler, iptaller ve sipariş durumu sorguları.

Akbank dokümantasyonu
  • HMAC-SHA512İmzalı istekler ve callback'ler
  • 2D ve 3D Secureİki akış da destekleniyor
  • Doğrulanmış callback'ler3D sonuçları anahtarınızla kontrol edilir
  • Doğrudan APIAracı yazılım yok

Dakikalar içinde
çalışır durumda.

  1. 01

    Paketi kurun

    terminal
    $ npm install better-payment
  2. 02

    Sağlayıcılarınızı yapılandırın

    lib/payment.ts
    import { betterPayment, iyzico } from "better-payment";
    
    export const payment = betterPayment({
      mode: "sandbox", // test URLs and provider test modes
      providers: {
        iyzico: iyzico({
          apiKey: process.env.IYZICO_API_KEY!,
          secretKey: process.env.IYZICO_SECRET_KEY!,
        }),
      },
    });
  3. 03

    3D Secure ödeme başlatın

    app/checkout.ts
    import { payment } from "@/lib/payment";
    
    const result = await payment.iyzico.initThreeDSPayment({
      price: "100.00",
      paidPrice: "100.00",
      currency: "TRY",
      basketId: "B1",
      callbackUrl: "https://yoursite.com/api/pay/iyzico/payment/complete-3ds",
      paymentCard: { ... },
      buyer: { ... },
      shippingAddress: { ... },
      billingAddress: { ... },
      basketItems: [ ... ],
    });
    
    // Render result.threeDSHtmlContent. The bank posts back to callbackUrl,
    // where the handler verifies the result before you mark the order paid.

Ödeme kodunu
yeniden yazmayı bırakın.

iyzico, PayTR, Parampos ve Akbank için tam TypeScript destekli tek paket. 3.x'ten mi geçiyorsunuz? Okuyun: sıfırlamadan bu yana yenilikler.

$npm install better-payment