Entegrasyon

Node.js ile Sanal POS Entegrasyonu

Node.js uygulamanıza ödeme altyapısını, hazır bir paketle ya da doğrudan REST çağrılarıyla bağlayabilirsiniz. İkisinde de istek ve yanıt yapısı aynıdır; paket yalnızca imzalama, yeniden deneme ve yanıt ayrıştırma gibi tekrar eden işleri üstlenir. Başvuru için sanal POS başvuru formunu doldurmanız yeterlidir; anahtarlar ve dokümantasyon hesap açılışında tanımlanır.

  • Eklenti / SDK veya doğrudan API
  • Test ortamında deneyip canlıya geçiş
  • Dokümantasyon hesap açılışında

SDK paketi ve anahtarlar, hesabınız açıldıktan sonra tanımlanır.

Entegrasyon araçları ve API, hesabınızın açıldığı ödeme kuruluşunun çözümüne aittir; sanalpos.com başvuruyu koordine eder.

Node.js entegrasyonunda neredesiniz?

Dört adım

Kurulum Adımları

Başvurudan canlı işleme giden sıra.

01

Başvurunuzu tamamlayın.

Ön değerlendirme sonrası hesabınız açıldığında test ve canlı anahtarlarınız ayrı ayrı tanımlanır; dokümantasyon erişimi bu aşamada iletilir. Anahtarları kod deposuna yazmayın, sunucu ortam değişkeninde tutun.

02

Paketi projenize ekleyin.

Node.js tarafında kurulum npm ya da yarn ile yapılır. Paketin adı ve kurulum komutu, hesabınız açıldığında iletilen dokümantasyonda belirtilir. SDK kullanmak zorunlu değildir; aynı işlemler doğrudan REST çağrılarıyla da yapılabilir.

03

Ödeme akışını kodlayın.

Anahtar girişi, ödeme başlatma isteği, 3D Secure yönlendirmesi ve sonucun sunucunuza bildirilmesi aynı akışın parçalarıdır. Bildirim adresini (callback / webhook) kendi sunucunuzda tanımlar, gelen isteğin imzasını doğrularsınız.

04

Test edip canlıya alın.

Akışı test anahtarlarıyla uçtan uca çalıştırın: başarılı ödeme, başarısız ödeme ve 3D Secure adımı. Doğruladıktan sonra yalnız ortam ve anahtar değerlerini canlıya çevirirsiniz; kod yapısı genelde aynı kalır.

Entegrasyon süresi kendi yazılımınızın yapısına ve seçilen çözüme göre değişir.

Ücretsiz Başvuru →

Başvuru ücretsizdir. Teklifi inceleyip karar verin.

Node.js tarafında

Entegrasyonun üç ana parçası.

Node.js, olay odaklı ve bloklamayan girdi/çıktı modeliyle çalışır; ödeme isteklerini asenkron olarak yürütmeye elverişlidir. Aşağıdaki üç başlık entegrasyonda karşınıza çıkan işleri özetler.

Paket ve anahtarlar

  • npm ya da yarn ile bağımlılık
  • Anahtarlar ortam değişkeninde
  • Test ve canlı anahtar ayrımı

Paket adı ve sürüm desteği, hesabınız açıldığında iletilen dokümantasyonda belirtilir.

Asenkron ödeme akışı

  • async/await ile istek gönderme
  • 3D Secure yönlendirmesi
  • İade ve iptal çağrıları

Metot adları, alanlar ve hangi işlemlerin tanımlı olduğu seçilen çözüme göre değişir.

Webhook ve hatalar

  • Express ya da Fastify uç noktası
  • İmza doğrulama
  • Idempotent kayıt güncelleme

Ödeme sonucunu yalnız sunucunuza gelen bildirimle kesinleştirin.

TypeScript tip tanımlarının kapsamı ve desteklenen Node.js sürümleri, sağlanan pakete göre değişir.

Ücretsiz Başvuru →Test isteklerinde ve günlük kayıtlarında gerçek kart ya da müşteri verisi tutmayın. Ayrıntı için: KVKK Aydınlatma Metni.
Sık sorulan sorular

Node.js entegrasyonu hakkında.

Node.js sanal POS entegrasyonu ne kadar sürer?

Süre kendi yazılımınızın yapısına, ödeme akışınızın karmaşıklığına ve seçilen ödeme kuruluşunun çözümüne göre değişir. Hazır paket kullanan ekipler genellikle daha az kod yazar. Adım adım sıra için entegrasyon kılavuzu sayfasına bakın.

TypeScript desteği var mı?

Tip tanımlarının pakete dahil olup olmadığı ve kapsamı, hesabınızın açıldığı ödeme kuruluşunun sağladığı SDK'ya göre değişir; kesin bilgi hesap açılışında iletilen dokümantasyonda yer alır. SDK kullanmadan doğrudan REST çağrısı yapıyorsanız kendi tip tanımlarınızı da yazabilirsiniz.

Express, Fastify veya NestJS ile uyumlu mu?

Ödeme akışı sunucu tarafında HTTP çağrısı ve bildirim karşılama üzerine kuruludur; bu yüzden framework seçiminden bağımsız çalışır. Express, Fastify, NestJS, Koa ya da saf Node.js ile ilerleyebilirsiniz. Hazır ara katman (middleware) sunulup sunulmadığı sağlanan pakete göre değişir.

Webhook'ları Node.js'de nasıl işlerim?

Sunucunuzda bir uç nokta tanımlar, gelen isteğin gövdesini ham hâliyle okuyup imzasını doğrular, ardından siparişi güncelleyip 200 yanıtı dönersiniz. Aynı olay iki kez gelebileceği için kaydı idempotent güncelleyin. Alan yapısı ve yeniden deneme davranışı için webhook ve callback sayfasına bakın.

Entegrasyona başlayın

Önce başvurunuzu tamamlayalım.

Paket erişimi, anahtarlar ve dokümantasyon hesap açılışıyla tanımlanır. Ön değerlendirme için başvuru formunu doldurun.

Başvuru ücretsizdir. Teklifi inceleyip karar verin.

Başvuru nasıl ilerler? →

Teknik sorularınız için:0212 909 00 87ya da WhatsApp’tan yazın

Ayrıntılar

Neden Node.js?

Node.js, olay odaklı ve bloklamayan girdi/çıktı modeli üzerine kuruludur. Ödeme isteği gibi ağ üzerinden yanıt bekleyen çağrılar sırasında sunucu bloklanmaz; eşzamanlı isteklerin yoğun olduğu akışlarda kaynak kullanımı bu sayede verimli kalır. async/await yapısı, ödeme başlatma ile sonucun beklenmesi arasındaki adımları okunur biçimde yazmanızı sağlar.

Sunucu tarafı JavaScript kullanan ekipler için bir diğer kolaylık, aynı dilin hem ön yüzde hem arka uçta kullanılabilmesidir. Sepet sayfasındaki akışla sunucudaki ödeme mantığı arasında geçiş yapmak, ayrı bir dil öğrenmeyi gerektirmez.

npm, paketlerin projeye eklenmesi ve sürümlerinin yönetilmesi için kullanılan paket yöneticisidir; yarn da aynı işi görür. Ödeme paketinin bu ekosistemden kurulması, bağımlılık ve güncelleme yönetimini alışılmış akışın içinde bırakır. Express, Fastify ve NestJS gibi yaygın framework'lerle çalışmak için özel bir uyarlama gerekmez: ödeme akışı, sunucudan yapılan HTTP çağrısı ve dışarıdan gelen bildirimin karşılanması üzerine kuruludur.

Genel yetenekler ve hangi çağrıların yapılabildiği için API ve SDK entegrasyonu sayfasına, kart sahibinin doğrulama adımı için 3D Secure ile güvenli ödeme sayfasına bakabilirsiniz.

Kurulum ve Paket Yönetimi

Paket, projeye npm ya da yarn ile bağımlılık olarak eklenir. Aşağıdaki paket adı yer tutucudur; gerçek ad ve kurulum komutu, hesabınız açıldığında iletilen dokümantasyonda belirtilir. Desteklenen Node.js sürümleri ve bağımlılıklar da seçilen ödeme kuruluşunun çözümüne göre değişir; sürüm desteği dokümantasyonda belirtilir.

bash
# Paket adı hesabınız açıldığında iletilen dokümantasyonda yazılıdır.
# Tahmin ettiğiniz bir adla kurulum yapmayın (sahte paket riski).
npm install <dokumantasyondaki-paket-adi>

Anahtarlar kod dosyalarına ya da sürüm deposuna yazılmaz; sunucu ortam değişkenlerinde tutulur. Test ve canlı anahtarlar ayrı tutulmalı, canlı anahtarla test yapılmamalıdır. Kodunuzu canlıya almadan denemek için sandbox ortamı sayfasına bakabilir, akışı test anahtarlarıyla çalıştırabilirsiniz.

Ödemenin başarılı sayılması, tarayıcının döndüğü sayfaya değil sunucunuza gelen bildirime bağlıdır. Bildirim uç noktasında önce imza doğrulanır, sonra sipariş durumu güncellenir ve 200 yanıtı döndürülür; aksi hâlde bildirim yeniden gönderilebilir. Aynı olay iki kez gelebileceğinden kayıt idempotent güncellenmelidir. İade, iptal ve sipariş durumunun kendiliğinden güncellenmesi gibi işlemler seçilen çözüme göre sunulabilir.

Kod Örneği

Node.js ve Express ile ödeme başlatma örneği. Aşağıdaki akış, REST üzerinden basit bir ödeme isteği gönderir; uç nokta adresi, alan adları ve kimlik doğrulama biçimi hesabınız açıldığında iletilen dokümantasyonda belirtilir.

Kart numarasını kendi formunuzla alıp sunucunuzdan gönderirseniz kart verisi işleyen taraf olursunuz ve PCI DSS yükümlülüğünüz büyür; ödeme kuruluşunun ödeme sayfası ya da iframe’i kullanıldığında kart bilgisi sunucunuza ulaşmaz.

const express = require('express');
const app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: false })); // klasik form POST'u için

// Ödeme başlatma endpoint'i — kart bilgisi bu isteğe eklenmez;
// müşteri kartını ödeme kuruluşunun sayfasında ya da iframe'inde girer.
// Adres ve alan adları dokümantasyonunuzda.
app.post('/odeme-baslat', async (req, res) => {
  try {
    const siparis = await siparisiBul(req.body.siparisNo); // tutarı tarayıcıdan değil kendi kaydınızdan alın
    const response = await fetch('https://API_ADRESI/v1/payments', {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${process.env.SANALPOS_API_KEY}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        amount: siparis.tutar, // tutar biçimi (TL / kuruş) dokümantasyonunuzda
        currency: 'TRY',
        orderId: siparis.no,
        callbackUrl: 'https://siteadresiniz.com/odeme-sonuc'
      }),
      signal: AbortSignal.timeout(15000)
    });

    if (!response.ok) {
      console.error('odeme-baslat: HTTP', response.status);
      return res.status(502).json({ error: 'Ödeme başlatılamadı' });
    }
    const data = await response.json();
    // 3D Secure ya da ödeme sayfası gerekiyorsa müşteriyi yönlendirin.
    // res.redirect yalnız klasik form POST'unda tarayıcıyı yönlendirir;
    // istek fetch/XHR ile geldiyse adresi JSON'la dönün: res.json({ redirectUrl: data.redirectUrl })
    if (data.status === 'redirect') return res.redirect(data.redirectUrl);
    return res.json({ durum: data.status }); // doğrudan onay ya da başka durum: kendi akışınıza göre işleyin
  } catch (error) {
    console.error('odeme-baslat:', error.message); // kart verisi ve anahtar günlüğe yazılmaz
    res.status(500).json({ error: 'Ödeme başlatılamadı' });
  }
});

// Yer tutucu: siparişi kendi kaydınızdan okuyun. Sabit ya da 0 tutar döndürmeyin;
// bağlanmadan çalıştırılırsa hata versin.
async function siparisiBul(no) {
  throw new Error('siparisiBul kendi sipariş kaydınıza bağlanmadı');
}

Tutar, para birimi ve sipariş numarası her zaman sunucuda belirlenir; tarayıcıdan gelen değere güvenilmez. Hata durumlarında istisnalar yakalanır, kullanıcıya sade bir mesaj gösterilir, teknik ayrıntı yalnız günlüğe yazılır. Günlüklerde kart numarası, güvenlik kodu ve API anahtarı bulunmamalıdır.

Bu örnek temel bir REST çağrısını gösterir. Metot adları, alan yapısı ve hazır yardımcıların kapsamı için Node.js SDK sayfasına, uç nokta ve alan referansı için API dokümantasyonu sayfasına bakın.

Teknik gereksinimler

Node.js entegrasyonu için teknik gereksinimler
Gereksinim Detay
Node.js Destek süren LTS sürüm (nodejs.org sürüm takvimi)
npm veya yarn Paket yöneticisi
SSL Sertifikası Gerekli (HTTPS)
Ödeme kuruluşu hesabı Başvuru sonrası açılır (başvuru ücretsizdir)

Sürüm bilgileri genel çerçevedir; kesin gereksinimler ve desteklenen sürümler, hesabınız açıldığında iletilen dokümantasyonda belirtilir.

Ara WhatsApp Ücretsiz Başvur →