Skip to main content

Başlangıç — FirsatGO POS Entegrasyon Geliştirici Rehberi

Model: FirsatGO platform/talep ağıdır (Getir / Trendyol GO konumu); siz (POS/entegratör) bu sözleşmeye uyum sağlarsınız. Kanonik sözleşmeyi FirsatGO belirler ve sürümler. Tam alan-bazlı referans: POSYOU_INTEGRATION_SPEC.md.

Bu portal sektör-bazlıdır: önce bu sayfayı (ortak çekirdek) okuyun, sonra işletmenizin sektörüne ait sayfayı: Yemek · Market · Petshop · Çiçek · Hizmet.


1. Üç entegrasyon yüzeyi

YüzeyYönKim çağırırAmaç
AFG → POS (REST)FirsatGOSipariş gönder, katalog çek/gönder, mağaza durumu
BPOS → FG (REST)SizSipariş çek (pull/reconcile), durum sür, ürün uygunluk/fiyat
CPOS → FG (webhook)SizOlay-bazlı bildirim (durum/iade/mağaza-aç-kapa/stok)

Gerçek-zamanlı çift-yön için A + C önerilir; B opsiyonel reconcile/yedektir.


2. Kimlik & güvenlik

İşletme başına FirsatGO panelinden iki sır üretilir:

SırKullanım
api_keyREST kimlik: header X-Api-Key (A yönü) / X-API-Key (B yönü)
webhook_secretHMAC imza (A ve C yönü)

HMAC imza şeması (A ve C):

signature = "sha256=" + HMAC_SHA256(webhook_secret, "{timestamp}.{rawBody}")
  • timestamp = Unix milisaniye (string), X-FirsatGo-Timestamp header'ında.
  • rawBody = gövdenin birebir ham hali (yeniden serialize etmeyin — byte-byte aynı string imzalanır).
  • İmza X-FirsatGo-Signature header'ında, timing-safe karşılaştırılır.

Zorunlu header'lar: X-FirsatGo-Timestamp, X-FirsatGo-Signature, X-FirsatGo-Event (olay tipi), X-FirsatGo-Delivery-Id (idempotency), X-Store-Id (varsa). Replay penceresi: ±5 dakika (dışı 401).

Fail-closed: Geçersiz imza/secret/zaman → 401, işlenmez. Siz de kendi tarafınızda aynı sıkılıkta doğrulayın.


3. İdempotency & güvenilirlik

  • İdempotency: Her olay benzersiz X-FirsatGo-Delivery-Id (ve gövdede event_id) taşır. Aynı kimliği iki kez İŞLEMEYİN (en-az-bir-kez teslim — tekrarlar olabilir).
  • Retry/backoff (FG→POS): Üstel; 6 denemede dead-letter. 2xx dönmeniz beklenir; 5xx/timeout → FG yeniden dener.
  • Sıra: Her durum geçişi ayrı olaydır (_ts ile sıralanır). İleri-atlanan durumda FG ara geçişleri sırayla uygular.
  • Tenant-izolasyon: Tüm çözümleme işletme-kapsamlıdır (IDOR-güvenli) — bir işletmenin anahtarı başka işletmeye dokunamaz.

4. Olay türleri (X-FirsatGo-Event)

OlayAnlam
order.createdYeni sipariş (tam kasa-fişi payload)
order.updatedDurum değişimi
order.cancelledİptal (ayrı kanonik olay; cancellation_reason payload'da)
refund.created / order.refundedİade → FG settlement ters-kaydı (refund_amount(_minor) → kısmi; yoksa tam)
store.open / store.closeMağaza aç/kapat → FG kapalıyken yeni sipariş almaz
catalog.product.upserted / stock.* / inventory.*Katalog/stok senkronu

POS→FG durum (inbound C): confirmed/preparing/ready/on_the_way/delivered/completed/cancelled. Siparişi FG order_id veya kendi external_order_id'nizle referanslayabilirsiniz (tenant-scoped eşleme).


5. Para birimi & finansal alanlar

TRY. Tutarlar hem major (TL, ondalıklı) hem *_minor (kuruş, tam sayı) gönderilir. Sipariş finansal değişmezi: original_subtotal − discount_amount + (delivery+service+tip+tax) = total; discount_amount = item_discount + additional_discount. Detay: POSYOU_INTEGRATION_SPEC §6.


6. Sektör farkları (neden sektör-bazlı?)

FirsatGO 18 sektör / 5 fulfillment-engine destekler. Ortak sözleşme (auth, finansal, durum) aynıdır; ama sipariş yaşam-döngüsü semantiği ve fulfillment{} alanları sektöre göre değişir:

EngineSektörlerÖne çıkan fark
foodrestaurant, cafe, fast_food, bakeryMenü + malzeme modifier (eklenen/çıkarılan); preparing = mutfak
retailmarket, alcohol_shop(tekel), houseware, hardware, lighting, building_materials, general_retailSKU/barkod/stok; substitution; age_verified; preparing = toplama/paketleme
petpetshopretail + lot/SKT (FEFO); mama aboneliği (is_repeat)
flowerflorist, flower_arrangement, event_flowerrecipient/sender/card_note/delivery_slot/delivery_proof; preparing = atölye
servicefield_service, professional_service, hybrid_serviceSipariş değil İŞ-EMRİ (ayrı akış); randevu-tabanlı

→ İşletmenizin sektör sayfasına geçin: sektör sayfaları.


7. Go-live

  1. Onboarding: FG panelinden bağlantı → api_key + webhook_secret + endpoint_url + external_store_id.
  2. Uygula: Yüzey A uçlarını yayına al + HMAC doğrula; Yüzey C webhook üreticini hazırla.
  3. Smoke (uçtan-uca): test siparişi → A POST /orders düştü mü (imza geçerli, {id} döndü mü)? → C order.preparing → FG durumu güncellendi mi? → store.close → FG sipariş reddediyor mu? → menü düzenle → catalog.product.upserted?
  4. İzleme: FG outbox delivered/failed/dead; inbox processed/ignored; hata → last_error.

Tam checklist: POSYOU_INTEGRATION_SPEC §9.