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.
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.
İ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.
Ö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
// 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"createPayment, initThreeDSPayment, refund, cancel ve getPayment her sağlayıcıda aynı istek tiplerini alır ve aynı yapıda sonuç döner.
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.
3D Secure callback'leri ve PayTR bildirimleri, ödeme alındı sayılmadan önce sizin kimlik bilgilerinizle sabit sürede doğrulanır.
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.
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.
Arada bir ödeme kuruluşu olmadan bankanın sanal POS'una doğrudan bağlanın; aynı istek ve sonuç tiplerini kullanın.
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$ npm install better-paymentimport { 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!,
}),
},
});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.
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.