Dokümantasyon

Entegrasyon kodu

Aşağıdaki kodu backend projenize tek dosya olarak ekleyin. Touchque ile tüm iletişim bu dosya üzerinden yürür. Kendi dilinizi seçin.

Bu dosya 2 bölüm içerir:
1) requireTouchque middleware ile rota korunur — onaya kadar 202 döner
2) Handler çalıştığında onayı req.touchque üzerinden okuyun
Endpoint
Yolİşlev
POST /api/loginrequireTouchque('LOGIN') ile korunur
POST /api/transferrequireTouchque('SEND_MONEY') ile korunur
Onay tek bir kullanıcı + işlem + işlem detayına bağlıdır ve tam olarak bir kez tüketilebilir — token başka bir tutar, alıcı veya kullanıcı için tekrar kullanılamaz.
Express entegrasyon dosyası
const express = require('express');
const { requireTouchque } = require('@touchque/node');

const app = express();
app.use(express.json());

// ─── TQ_API_KEY / TQ_API_SECRET ortam değişkenlerinden okunur ───

// ═══════════════════════════════════════
// 1) Hassas İşlem Rotaları — Tek Satır Middleware!
// ═══════════════════════════════════════

// Giriş işlemi için 2FA onayı iste
app.post(
  '/api/login',
  requireTouchque('LOGIN', { user: (req) => req.session.passwordOk }),
  (req, res) => {
    // ✅ Buraya sadece kullanıcı telefonundan ONAYLADIKTAN sonra ulaşılır.
    res.json({ success: true, assurance: req.touchque.assurance });
  }
);

// Para transferi işlemi için 2FA onayı iste (işlem detaylarıyla)
app.post(
  '/api/transfer',
  requireTouchque('SEND_MONEY', {
    user: (req) => req.session.user?.email,
    details: (req) => ({ Amount: `${req.body.amount} EUR`, To: req.body.iban }),
  }),
  (req, res) => {
    res.json({ success: true, message: 'Transfer tamamlandı!' });
  }
);

// ═══════════════════════════════════════
// 2) Bu sırada gerçekte ne oluyor?
// ═══════════════════════════════════════
// a) İlk istek 202 { touchque: step, token } döner (henüz onay yok).
// b) Arayüzünüz step.number'ı (veya ilk bağlantı için step.enroll.qrCodeDataUrl) kendi
//    tasarımınızla gösterir, sonra aynı isteği X-Touchque-Token başlığıyla tekrar gönderir
//    (@touchque/web'in touchqueFetch()'i bu döngüyü sizin için halleder).
// c) Onaylandığında yukarıdaki handler TAM OLARAK BİR KEZ çalışır.

app.listen(3000, () => console.log('Server: http://localhost:3000'));