Lezzet35
Giriş yap

Rehber · SiparişMatik · WhatsApp / markalı site sistemi (akis: whatsapp) · sözleşme v2.0

WhatsApp / markalı site sistemi

Restoranın kendi sitesi {alt}.lezzet35.com (kanal = MARKA_SITESI) ve QR masa menüsü {kod}.xqr.com.tr (kanal = XQR) siparişleri. Bugünkü exe akışının kendisidir; pazaryeri siparişleri bu anahtarla görünmez (bkz. Pazaryeri sistemi). Ortak kurallar, webhook ve jeton otomasyonu giriş sayfasında.

SiparişMatik kasa yazılımı Lezzet35 kanalı için gömülü bir istemci taşır; kasa tarafında güncelleme gerekmez. Lezzet35 bu istemcinin beklediği /api/v1 yollarını, başlıklarını ve alanlarını birebir sunar. Aşağıdaki adımlar restoran onaylandıktan sonra uygulanır.

1. Ön koşullar

  • Restoran başvurusu onaylı; firma kaydında SiparişMatik firma numarası (kasa Ayarlar › Entegrasyon › Firma ID) girilmiş.
  • Kasa bilgisayarı internete çıkıyor ve Lezzet35 adresine HTTPS ile erişebiliyor.
  • Restoranın ödeme yöntemleri Lezzet35 kataloğundan seçilmiş (Nakit, Kapıda Kredi Kartı, Online Kart, yemek kartı markaları); kasa siparişteki odeme_turu + odendi alanlarıyla tahsilat tipini belirler, odeme_yontemi görünen ad / yemek kartı markasıdır.

2. Lezzet35 tarafı: bağlantıya hazırla (HAZIR penceresi)

Yönetim panelinde firma kartından Bağlantıya hazırla denir. Firma HAZIR durumuna geçer ve varsayılan 24 saat (POOL_HAZIR_PENCERE_SAAT) boyunca havuz listesinde görünür. Kasa bu sürede bağlanırsa BAGLI olur ve havuzdan düşer; bağlanmazsa pencere kapanır, yeniden hazırlanması gerekir. Böylece firma anahtarı yalnız o anda kurulan restoranlar için havuza çıkar (KARAR-9).

3. Kasa tarafı: kanalı aç

  1. Kasa yazılımında Ayarlar › Entegrasyon ekranında Lezzet35 kanalını aktif yap (entegrasyondurum = Y).
  2. Firma ID alanının başvurudaki numarayla aynı olduğunu doğrula; token alanı boş kalır — kasa açılışta havuzdan kendisi alır.
  3. Kasa hizmetini yeniden başlat. Açılışta havuz → bağlan → şubeler → menü sırası çalışır; 10 saniyelik zamanlayıcı sipariş ve ürün senkronunu sürdürür.
  4. Panelde firma kartı BAGLI ve “son senkron” zamanı güncel görünmeli.

4. Anahtarlar

  • X-Pool-Secret: tüm kurulumlarda ortak, kasaya gömülü; yalnız havuz uçlarında geçer. Değiştirilemez; bu yüzden havuz HAZIR penceresiyle daraltılır.
  • Authorization: Bearer: firma anahtarı. Sunucuda sha256 özeti saklanır; düz metin yalnız üretildiği anda görünür. Kasa bu anahtarı havuzdan aldıktan sonra değiştirmez (bağlantıda rotasyon yok); yeni anahtar gerekirse admin “bağlantıyı kopar” → yeniden hazırla → kasa yeniden açılış.
  • Kasadaki /panel/{token} düğmesi oturum açmaz: token firmayı tanır, kayıtlı telefona OTP gider, doğrulama sonrası restoran paneline geçilir (KARAR-11).

5. Akış ve zamanlama

#ÇağrıNe zamanAçıklama
1GET /api/v1/poolAçılış (yalnız yerelde Lezzet35 kaydı yokken)Exe X-Pool-Secret ile havuzu çeker; siparismatik_id eşleşen firmanın api_token’ını kaydeder.
2PUT /api/v1/pool/connectAçılışBearer ile bağlanır; firma BAGLI olur, firma.domain_id ana şube olarak yazılır.
3GET /api/v1/branchesAçılışAlt şubeler için ayrı entegrasyon kayıtları.
4POST /api/v1/branches/{id}/statusAçılış + 10 sn (değişince)Kasadaki açık/kapalı durumu vitrine yansır.
5GET /api/v1/menuAçılışKategori ve ürünler kasaya aynalanır; marka asla null.
6GET /api/v1/firma/siparisler10 snGünün aktif siparişleri tek yanıtta; siparis_no ile tekilleştirme.
7PUT /api/v1/firma/siparisler/{id}/durum10 sn (guncelle='Y')Kasadaki durum Lezzet35’e gider; geçersiz geçişte de success:true.
8POST /api/v1/pool/products/sync10 sn (guncelle='Y')Kasada değişen ürünler Lezzet35’e; yeni ürün PASIF + moderasyon.

6. Durum eşlemesi

Lezzet35 iç durum makinesi 7 durum tutar; kasaya giden görünüm 5 değere indirgenir (kasa HAZIRLANIYOR ve REDDEDILDI bilmez).

Lezzet35 → kasa (v1DurumEsle)
İç durumEtiketv1 görünümü
ALINDIAlındıBEKLEMEDE
ONAYLANDIOnaylandıONAYLANDI
HAZIRLANIYORHazırlanıyorONAYLANDI
YOLDAYoldaYOLDA
TESLIM_EDILDITeslim edildiTESLIM_EDILDI
IPTALİptalIPTAL
REDDEDILDIReddedildiIPTAL
Kasa → Lezzet35 (kuryeislem)
KasaGönderilen durumNot
BEKLIYORONAYLANDIKasa siparişi gördü ve kabul etti
ONAYYOLDAKurye çıktı
TESLIMTESLIM_EDILDITeslim tamamlandı
IPTAL / REDIPTALİç modelde restoran iptali; müşteri bildirimi tetiklenir

7. Biçim kuralları (kasa kırılganlıkları)

  • siparis_zamani tam dd.MM.yyyy HH:mm; başka biçim kasada istisna üretir ve sipariş sessizce kaybolur.
  • success JSON boolean (kasa "True" metniyle karşılaştırır); metin "true" kırar.
  • marka, kategori, menu.secilenler null yerine nesne/dizi.
  • Parametresiz GET /firma/siparisler günün tüm aktif siparişlerini tek sayfada döner (kasa yalnız ilk sayfayı işler).
  • Ürün senkronu idempotent; kasa bayrağı yanıt gelmeden temizlediği için kayıp güncelleme admin “tam senkron” komutuyla telafi edilir.
Örnek sipariş yanıtı (kısaltılmış)
{ "success": true, "data": [ { "id": 1042, "siparis_no": "L35-20260916-4F2A9C", "siparis_zamani": "16.09.2026 12:05", "teslim_tahmini": "12:45", "marka": { "id": 3, "marka_adi": "Alsancak Kumru Evi" } } ], "meta": { "current_page": 1, "last_page": 1 } }

7b. Sipariş yanıtı ekleri (24–26.10.2026)

  • Fiş: siparis_notu (müşteri notu) ve kalemde ozel_not; ürün indirimi için urunler[].liste_fiyat / indirim ve sipariş düzeyinde urun_indirimi — birim_fiyat ödenen fiyat olarak kalır, toplam_tutar değişmez.
  • Adres / karekod: musteri_enlem, musteri_boylam (müşterinin haritada onayladığı pin; yoksa null) ve musteri_adres_kisa (yalnız sokak/bina/kat/daire); musteri_adres tam metin olarak kalır.
  • Nakit: para_ustu — müşterinin vereceği tutar (TL), kurye para üstü hazırlar; yoksa null.
  • Durum: PUT …/durum gövdesinde tahmini_sure_dk; yanıtta teslim_tahmini, degisti, reddedildi. Tek sipariş: GET /firma/siparisler/{id}; süzgeçler ?durum=&tarih_baslangic=&tarih_bitis=.
  • Tam metin ve değişiklik günlüğü: docs/api/siparismatik.md (sürüm 1.2); OpenAPI /api/openapi.json.

8. Sorun giderme

  • Kasa havuzda firmayı bulamıyor: HAZIR penceresi dolmuş ya da Firma ID uyuşmuyor. Panelde yeniden “bağlantıya hazırla”.
  • Bağlantı koptu uyarısı: BAGLI firma 5 dk üst üste sipariş çekmezse panel uyarır. Kasa hizmetinin ve internetin açık olduğunu kontrol et.
  • 429: havuz 30/dk/IP, firma uçları 120/dk/token. Kasa 10 sn’de en fazla 4 çağrı yapar; aşım genelde ikinci bir kasa kurulumunun aynı token’ı kullanmasından kaynaklanır.
  • Sipariş kasada görünmüyor: IntegrationLog’da ilgili çağrının durum kodu ve alan doğrulaması görünür (Faz 6 admin ekranı).

Uç ayrıntıları için API belgesindeki SiparişMatik v1 bölümüne bak.

9. Bu akışa özgü kurallar (sözleşme v2.0 §4)

  • Sipariş gövdesinde akis: "whatsapp"; teslimat_tipi PAKET, GEL_AL ya da MASA (xQR masa siparişi, masa_no).
  • Menü senkronu: firmanın pazaryeri şubesi yoksa (WPSipariş’ten taşınan 201 firmanın tamamı) senkron kategori/ürün doğrudan AKTİF; pazaryeri şubesi de olan firmada admin moderasyonu.
  • POST /branches/{id}/status markalı siteyi açar/kapatır (“Şu an kapalı” sayfası).
  • xQR masa uçları (/xqr/*, /firma/masa-olaylari) yalnız bu akışta anlamlıdır.
  • 27.10.2026 öncesi tüm anahtarlar bu akıştadır; SiparişMatik sunucusundaki entegrasyontur = 'Lezzet35' satırlarının karşılığıdır.

10. Webhook ve jeton (bu akış)

  • Köprü adresi örneği (Güven belirler): https://lezzet35.siparismatik.net/whatsapp/order/{siparismatik_id}. Olaylar (siparis.olusturuldu, siparis.durum, siparis.iptal, test), JWT HS512 + X-Lezzet35-Signature, 10 deneme ≈ 24 sa: giriş §3.
  • Jeton: anahtar üretilince entegrasyontur: "Lezzet35" kaydı SiparişMatik sunucusuna itilir; exe mevcut SiparişMatik_Entegrasyon çekimiyle alır (giriş §4). HAZIR penceresi / havuz yedek olarak kalır.
  • Geri yön aynen PUT /firma/siparisler/{id}/durum; iptalde iptal_nedeni kodu (liste: GET /iptal-nedenleri). Exe bugün yalnız { durum } gönderiyor; iptalnedeni/iptalnot alanlarının gövdeye eklenmesi gerekir.