Güvenlik

Partner API sunucudan sunucuya çalışır. Api-Key veya webhook sırrı sızarsa bağlı restoranın stoğu, kasası ve ürün listesi yazılabilir. Aşağıdakiler hem sizin yazılımınız hem Restroid tarafı için zorunludur.

Anahtarı tarayıcıya, kasiyer uygulamasına, APK’ya, git deposuna, destek kaydına veya sunucu loguna yazmayın. Sızdıysa süper adminden hemen döndürün. İstekler yalnız sizin backend’inizden çıkmalıdır.

Api-Key

  • Yalnız Api-Key, X-Api-Key veya Authorization: Bearer başlığı. Query string (?apiKey=) kabul edilmez; URL loglarına düşmesin.
  • Anahtar rkp_ ile başlar. Döndürülünce eski değer hemen 401 olur.
  • Eksik ve yanlış anahtar aynı 401 metnini döner; anahtar denemesi IP başına hız sınırlıdır.
  • Kapsamı ihtiyacınız kadar isteyin. products_inbound ve sales_inbound yazma yetkisidir.

Sizin webhook uç noktanız

Restroid’in size attığı POST’u imza doğrulamadan işlemeyin. İmza yoksa, yanlışsa veya zaman damgası 5 dakikadan eskiyse 401/400 dönün ve stoğu değiştirmeyin.
  • Adres genel HTTPS olmalı. localhost, iç ağ (10.x, 192.168.x, 169.254.x) ve metadata adları Restroid tarafından reddedilir.
  • URL’de kullanıcı:şifre olamaz. Restroid yönlendirmeyi (redirect) takip etmez.
  • Gövdeyi JSON.parse etmeden önce ham metin üzerinden HMAC-SHA256 doğrulayın. timingSafeEqual kullanın.
  • X-Restroid-Delivery aynı id tekrar gelirse yok sayın. Replay için timestamp penceresi şarttır.
  • İmza anahtarını (rwh_…) Api-Key’den ayrı saklayın; loglamayın.
const crypto = require("crypto");

function verify(secret, timestamp, rawBody, headerSig) {
  const age = Math.abs(Date.now() / 1000 - Number(timestamp));
  if (!Number.isFinite(age) || age > 300) return false;
  const expected = crypto
    .createHmac("sha256", secret)
    .update(timestamp + "." + rawBody)
    .digest("hex");
  const given = String(headerSig || "").replace(/^sha256=/, "");
  if (expected.length !== given.length) return false;
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(given));
}

Başlık listesi: Webhook. İmza formülü: Yetkilendirme.

Restroid’in uyguladığı sınırlar

KontrolNe olur
Restoran bağıBağlı olmayan restaurantId 403.
Kapsamİşaretlenmeyen okuma/yazma 403.
Gövde boyutu256 KB üzeri 413.
Hız sınırıAşım 429 + Retry-After. Yanlış anahtar daha sıkı sayılır.
Satış tutarı / kalemNegatif tutar, 10 milyon üzeri, 80’den fazla kalem 400.
externalIdAynı fiş ikinci kez 202 duplicate. Eşzamanlı çift yazım kilitlenir (409).
Webhook çıkışıHTTPS + genel IP. Boş/kısa imza anahtarı ile gönderim yapılmaz.
PersonelPIN, IBAN, telefon ve e-posta dönmez.

Sizin yazılımınızda dikkat

  • API sunucudan sunucuya. Tarayıcıdan CORS ile çağrı tasarlanmamıştır; anahtarı frontende koymayın.
  • restaurantId’yi kullanıcıdan serbest metin almayın; GET /restaurants yanıtını kaydedin.
  • total ve qty’yi kasiyer ekranından olduğu gibi değil, sizin kapanmış fiş kaydınızdan gönderin.
  • Başarısız sale-created için otomatik sınırsız retry yapmayın; 400/403’ü düzeltin, 429’da bekleyin, 202 duplicate’i başarı sayın.
  • Üretim ve geliştirme anahtarlarını ayırın. Geliştirme anahtarını canlı restorana bağlamayın.
  • Personel ve kasa bakiyesi yanıtlarını gerekmedikçe loglamayın.
Başvuru ve anahtar süreci: Entegrasyon başvurusu. Uygulama sırası: Kontrol listesi.

Restoranınızı dijitalleştirin, büyümeye odaklanın

14 gün ücretsiz deneyin. Kredi kartı bilgisi gerektirmez. İstediğiniz zaman iptal edin.

0 (212) 951 02 21info@restroid.com

100+

Aktif Restoran

20M+

İşlenen Sipariş

8+

Platform Entegrasyonu

11+

Yıllık Deneyim