Rehber · sözleşme v2.0 (27.10.2026) · OpenAPI 1.0.0
SiparişMatik entegrasyonu
Lezzet35’te SiparişMatik’e bağlanan iki ayrı sistem vardır. İkisi de aynı /api/v1 yollarını kullanır; farkı anahtar belirler: her anahtar bir akışa bağlıdır ve yalnız o akışın siparişlerini görür. Webhook, jeton ve sipariş listesi akış başına ayrıdır.
1. İki sistem
| Sistem | akis | Lezzet35 kanal | Sipariş nereden gelir | SiparişMatik tarafı |
|---|---|---|---|---|
| WhatsApp / markalı site | MARKA_SITESI, XQR | Restoranın kendi sitesi {alt}.lezzet35.com ve QR masa menüsü {kod}.xqr.com.tr | Bugünkü Lezzet35 entegrasyonu (exe “WhatsApp Sipariş” olarak basar) | |
| Pazaryeri | pazaryeri | WEB | lezzet35.com pazaryeri (OTP girişli müşteri) | Yeni entegrasyon türü: ayrı köprü, ayrı anahtar, ayrı fiş başlığı |
- Bir firma yalnız birinde ya da ikisinde birden olabilir; her sistem kendi anahtarıyla bağlanır. Çapraz erişim (pazaryeri anahtarıyla markalı site siparişi) 404 döner.
- 27.10.2026 öncesi üretilmiş tüm anahtarlar whatsapp akışındadır; bugünkü exe değişiklik olmadan çalışmaya devam eder.
- Firma düzeyi uçlar (menü, senkron, şube durumu, xQR, iptal nedenleri) her iki anahtarla çalışır. Sipariş gövdesinde
akisalanı vardır. - Kasa kanalı (Beta Poss / CTR POS,
/api/kasa) bu belgenin dışındadır.
2. Ortak kurallar
- Taban adres
https://lezzet35.com/api/v1/; yanıt zarfı{ success: boolean, message?, … }; hata kodları 401 / 403 / 404 / 405 / 422 / 429 / 503 (ayrıntı: API belgesi). - Kimlik:
Authorization: Bearer <anahtar>(firma, 120 istek/dk); havuz uçlarındaX-Pool-Secret(30/dk/IP). Lezzet35 anahtarın yalnız sha256 özetini saklar. - Durum makinesi: ALINDI → ONAYLANDI → HAZIRLANIYOR → YOLDA → TESLIM_EDILDI; her aşamadan IPTAL. Geçersiz geçişte de
success:true(exe yinelemesin), yanıttareddedildi:true. - Ödeme: kasa
odeme_turu+odendiokur;odeme_yontemigörünen ad / yemek kartı markası; nakittepara_ustu. - Çekme (
GET /firma/siparisler, 10 sn) her iki sistemde yedek olarak kalır; webhook gelmese de sipariş kaybolmaz.
3. Webhook (Lezzet35 → SiparişMatik köprüsü, akış başına)
Yemeksepeti köprüsüyle aynı kalıp: Lezzet35 olayı köprüye POST eder, köprü kaydeder, exe kendi sunucusundan alır. Firma + akış başına köprü adresi ve gizli anahtar Lezzet35 admin panelinde tanımlanır; sır jeton otomasyonuyla köprüye iletilir.
| olay | Ne zaman | Ek alan |
|---|---|---|
| siparis.olusturuldu | Sipariş kaydedildiğinde (ALINDI) | — |
| siparis.durum | Lezzet35 tarafında durum değişince (restoran paneli, admin, kasa, müşteri iptali). Köprünün kendi PUT yazımı yankılanmaz | degisiklik { onceki_durum, yeni_durum, kaynak, aciklama } |
| siparis.iptal | Durum IPTAL/REDDEDILDI olunca (siparis.durum’a ek) | degisiklik + iptal_nedeni, iptal_metni |
| test | Admin “Webhook testi” düğmesi | siparis: null |
{ "olay_id": "cmv…", "olay": "siparis.olusturuldu", "akis": "whatsapp", "zaman": "2026-10-27T15:48:04Z", "sira": 1,
"firma": { "siparismatik_id": 756, "lezzet35_id": "cmv…" },
"siparis": { "…": "GET /firma/siparisler/{id} yanıtındaki data nesnesiyle birebir aynı" },
"degisiklik": null }- Kimlik ve imza (iki katman):
Authorization: Bearer <JWT>— HS512, payload{ service:"lezzet35", akis, siparismatik_id, olay_id, iat, exp }(5 dk), sır = firma+akışınwebhook_gizli’si (YemeksepetiBearerTokenControlmantığıyla doğrulanır). Ek olarakX-Lezzet35-Signature: sha256=<hex HMAC-SHA256(ham gövde, sır)>. Başlıklar:X-Lezzet35-Olay,X-Lezzet35-Akis,X-Lezzet35-Teslim(deneme no). - Teslim ve yeniden deneme: zaman aşımı 10 sn.
2xxteslim;409/422kalıcı ret (tekrar denenmez);429,5xx, ağ hatası → 1 dk, 2 dk, 5 dk, 15 dk, 30 dk, 1 sa, 2 sa, 4 sa, 8 sa, 8 sa (10 deneme ≈ 24 saat); sonra admin “yeniden gönder”.olay_idtekildir: aynı olay ikinci kez gelirse köprü 200 dönüp yok saymalı.sirasipariş başına artar. - Geri yön: onay / ret / teslim / iptal bugünkü gibi
PUT /firma/siparisler/{id}/durumile; iptaldeiptal_nedeni+durum_aciklama. Köprünün kendi yazımı webhook olarak geri dönmez.
4. Jeton (anahtar) otomasyonu
- Lezzet35 admin’de anahtar üretilince (whatsapp ya da pazaryeri) SiparişMatik sunucusuna imzalı kayıt itilir:
{ siparismatik_id, akis, entegrasyontur: "Lezzet35" | "Lezzet35Pazaryeri", api_token, webhook_gizli, webhook_url, firma_adi, subeler[], iptal }; kimlikX-Pool-Secret+X-Lezzet35-Signature. Hata olursa 10 deneme. - SiparişMatik sunucusu kaydı
sip_tblfirmaentegrasyon’a yazar (entegrasyonguncelle = 'Y'); exe mevcutSiparişMatik_Entegrasyonçekimiyle alır — exe’de yeni kod gerekmez. - Yedek yol: SiparişMatik sunucusu imzalı
GET /pool?akis=…ile çeker. HAZIR penceresi exe çağrıları için kalır. - Anahtar iptali aynı kayıtla (
iptal: true); eski anahtar hemen 401.
5. İptal nedenleri
GET /api/v1/iptal-nedenleri (Bearer, her iki akış) → data:[{ kod, metin, aciklama_zorunlu }]. Liste Lezzet35 admin panelinden yönetilir; exe/köprü kodları gömmez. PUT …/durum gövdesinde durum: "IPTAL" + iptal_nedeni (+ isteğe bağlı durum_aciklama); bilinmeyen kod 422, DIGER açıklamasız 422. Neden metni müşterinin sipariş sayfasında görünür.
PUT /api/v1/firma/siparisler/24048/durum
{ "durum": "IPTAL", "iptal_nedeni": "URUN_YOK", "durum_aciklama": "Kumru ekmeği bitti" }6. Sistem rehberleri
- WhatsApp / markalı site sistemi — bugünkü exe akışı: havuz, HAZIR penceresi, menü senkronu, siparişler, xQR, webhook, jeton.
- Pazaryeri sistemi — ayrı anahtar, moderasyon kuralı, online ödeme, webhook.
- API belgesi (OpenAPI) — uç uç alanlar; Markdown sözleşme
docs/api/siparismatik.mdv2.0.