Görünüm
Canlıya geçiş
Sandbox nereye kadar yeter
Test ortamı entegrasyonunuzun sözleşme tarafını kapsar: alan okuma, external_id eşlemesi, imza doğrulama ve durum zinciri. Onu orada bitirebilirsiniz.
⚠️ Para tarafını kapsamaz. Sentetik sipariş, sipariş satırını doğrudan yazdığı için fiyatlama, platform bedeli, kampanya, kupon, indirim, ödeme ve iade akışı o yolda koşmaz. Platform kurye eşleştirmesi de koşmaz.
Planınızı şöyle kurun: sözleşme sandbox'ta, para canlıda.
Para tarafının provası için işe yarayan yol:
- Bir test restoranı açın. Gerçek bir restoran kaydı, gerçek bir menü, ama siparişi siz verirsiniz. (Sandbox restoranı bunun yerine geçmez — orada ödeme hiç çalışmaz.)
- Küçük tutarlarla çalışın. Ödeme akışını deneyecekseniz en düşük tutarlı bir ürün üzerinden.
- Webhook'u önce bir toplayıcıya bağlayın. Gelen isteğin baytlarını ve başlıklarını görün, imzayı orada doğrulayın, sonra gerçek adresinize geçin.
- Deneme olayını kendiniz gönderin.
POST /api/v1/restaurants/me/webhooks/{id}/testaboneliğe gerçek imza yolundan sentetik birwebhook.pingyollar; gövdesinde"test": truevardır ve iş mantığınıza girmemelidir. Saatte 10 deneme hakkı var. Ayrıntı: webhook yönetim uçları.
Canlıya almadan önce
Webhook alıyorsanız:
- [ ] İmzayı ham gövde üzerinden doğruluyorum; gövdeyi yeniden serileştirmiyorum.
- [ ]
X-Veni-Signaturebaşlığını boşluktan bölüyorum; biri tutuyorsa kabul ediyorum. - [ ] Karşılaştırmayı sabit zamanlı yapıyorum (
timingSafeEqual/compare_digest). - [ ]
X-Veni-Deliverydeğerini kalıcı olarak kaydedip tekrarı atlıyorum. - [ ] İşi yapmadan önce hızlıca
2xxdönüyorum; ağır iş kendi kuyruğumda. - [ ] Bilinmeyen alanı ve bilinmeyen olay adını yok sayıyorum, hata vermiyorum.
- [ ] Teslimat geçmişini izleyecek bir yerim var (uç, panel ya da teslimat günlüğü bağlantısı).
- [ ] Sırrı ortam değişkeninde/sır yöneticisinde tutuyorum; depoda değil.
İstek gönderiyorsanız:
- [ ] Anahtarı sunucu tarafında saklıyorum; istemciye göndermiyorum.
- [ ]
429aldığımdaRetry-Afterkadar bekliyorum. - [ ] Teslimat açarken
Idempotency-Keygönderiyorum; değeri kendi sipariş numaram. - [ ] ⚠️ Zaman aşımında körlemesine yeniden göndermiyorum: başlık teslimatı tekilleştirmiyor, yalnız ödeme adımını. Önce
GET /api/v1/b2b/deliveriesile bakıyorum (ayrıntı). - [ ] Hata yanıtındaki
meta.request_id/request_iddeğerini logluyorum — destek istediğimde ilk sorulacak şey bu.
İlk gün nelere bakılır
- Teslimat geçmişi:
statusdeğerlerideliveredmı, yoksafailedbirikiyor mu. - Yanıt süreniz: zaman aşımına uğrayan teslimat gereksiz yeniden denemeye yol açar.
- İmza reddi: doğrulayıcınızdaki bir hata bütün teslimatları reddettirir. Üst üste 20 başarısız denemede abonelik otomatik kapanır — bir teslimat 6 deneme yaptığı için bu 4 olay, yaklaşık 3 saat. İlk olayların gerçekten işlendiğini gözle doğrulayın.
- Hız sınırı: POS anahtarında dakikada 120 istek var. ⚠️ Ayrıca kaynak IP başına dakikada ~320 isteklik ikinci bir kova var ve
/posile/b2btrafiğinizin tamamı onu paylaşır (ayrıntı).
Sorun çıkarsa
Destek isterken şunları verin: ucun adı, isteğin yaklaşık zamanı (saat dilimiyle), yanıttaki request_id ve webhook tarafında X-Veni-Delivery değeri. Bu dördüyle kaydı doğrudan buluruz.
İletişim: veni.com.tr/iletisim.