Entegrasyon

Dijital Ürün Scripti Tedarikçi API Hatası Veriyor: Para Çekildi Kod Gelmedi Krizinin Arkasındaki 6 Katmanı Kimse Sana Açıkça Söylemiyor

Dijital ürün satış scriptinde tedarikçi API hatası veriyorsa suçlu tedarikçi olmayabilir. 401, 429, zaman aşımı ve stok senkron sorunlarını çöz.

Dijital Ürün Scripti Tedarikçi API Hatası Veriyor: Para Çekildi Kod Gelmedi Krizinin Arkasındaki 6 Katmanı Kimse Sana Açıkça Söylemiyor

Çoğu kişi tedarikçi API hatası gördüğünde suçluyu hemen tedarikçide arar. Panelde kırmızı bir satır, yanında "API hatası" yazan tek cümlelik bir mesaj ve arkada bekleyen bir sipariş. Telefon açılır, tedarikçiye "sizin sistem çöktü" denir, tedarikçi "bizde sorun yok" der ve iş orada kilitlenir. Oysa bu mesaj bir teşhis değil, teşhis eksikliğinin itirafıdır.

Gerçek şu: "API hatası" tek bir arıza değil, en az altı farklı katmanın konuşabileceği bir başlıktır. Kimlik doğrulama, yetkilendirme, ağ, hız limiti, iş kuralı ve mutabakat. Hangisinin konuştuğunu bilmeden yapılan her müdahale ya hiçbir şeyi düzeltmez ya da çift teslimat gibi daha pahalı bir hataya yol açar. Bu yazıda katmanları tek tek ayıralım.

%34entegrasyon hatası kimlik ve IP izni katmanından geliyor
%19zaman aşımı vakasında sipariş aslında karşıda oluşmuş
7 sngüvenli üst sınır olarak önerilen istek zaman aşımı
2 katyedek tedarikçisi olanlarda tamamlanma oranı avantajı

API hatası tek bir şey değildir: hangi katman konuşuyor?

Her entegrasyon çağrısı dört aşamadan geçer: isteği kur, bağlantıyı aç, yanıtı al, yanıtı yorumla. Hata bu aşamaların hangisinde çıktıysa çözüm tamamen farklıdır. Bağlantı hiç açılmadıysa ağ veya IP izni meselesi vardır. Açıldı ama HTTP 4xx döndüyse senin isteğinde bir sorun var demektir. 5xx döndüyse gerçekten karşı taraf sıkıntıdadır. Yanıt geldi ama yorumlanamadıysa sözleşme değişmiştir.

Bu yüzden bir dijital ürün satış scriptinin entegrasyon kaydı en az beş alan tutmalıdır: gönderilen istek gövdesi, HTTP durum kodu, ham yanıt gövdesi, geçen süre ve deneme sırası. Bu beş alan varsa arızayı beş dakikada sınıflandırırsın; yoksa tedarikçiyle karşılıklı suçlama döngüsüne girersin ve müşteri beklemeye devam eder.

Ham yanıt gövdesini saklamayan bir entegrasyon, teşhis edilemez bir entegrasyondur. Çoğu tedarikçi hatanın gerçek nedenini yanıt gövdesindeki mesaj alanında açıkça yazar; yazılım o gövdeyi atıp yerine kendi genel cümlesini koyduğunda en değerli bilgi çöpe gider.

401 ve 403 aldığında ilk bakacağın yer token değil, IP listesi olabilir

Kimlik doğrulama hataları iki gruba ayrılır. 401 "seni tanımıyorum" demektir: anahtar yanlış, süresi geçmiş veya yanlış başlıkta gönderiliyor. 403 ise "seni tanıdım ama bu işi yapamazsın" demektir ve burada en sık sebep anahtar değil, IP kısıtlamasıdır. Tedarikçilerin büyük kısmı bayi anahtarını belirli IP adresleriyle eşler.

Bu yüzden sunucu taşıdığında, bulut güvenlik katmanı ekledğinde veya barındırma sağlayıcın çıkış IP'sini değiştirdiğinde entegrasyon hiçbir kod değişmeden çöker. Belirti kafa karıştırıcı biçimde "dün çalışıyordu" şeklinde gelir. Kontrol yöntemi basit: sunucunun dışarıya çıkarken kullandığı gerçek IP'yi öğren ve tedarikçi panelindeki izin listesiyle karşılaştır.

İkinci yaygın tuzak jeton yenilemesidir. Süreli erişim jetonu kullanan tedarikçilerde jeton dolduğunda yazılım onu otomatik yenilemeli; yenileme mantığı yoksa entegrasyon her gün aynı saatte kendiliğinden bozulur ve elle müdahaleyle düzelir. Bu belirtiyi görüyorsan sorunun tamamı jeton ömrüdür. Pinova'nın tedarikçi katmanında jeton yenilemesi ve IP değişikliği uyarısı ayrı ayrı izlenir; ayrıntıları özellikler bölümünde bulabilirsin.

Durum koduGerçek anlamıEn sık kök nedenDoğru davranış
401Kimlik doğrulanamadıSüresi geçmiş jeton, yanlış başlıkJetonu yenile, tekrar deneme yapma
403Yetki yokIP izin listesi uyuşmazlığıÇıkış IP'sini güncelle, yöneticiye bildir
404Ürün veya uç nokta yokTedarikçi ürün kodu değişmişÜrün eşlemesini yeniden kur
409ÇakışmaAynı referansla ikinci istekMevcut siparişi sorgula, yeni açma
422İş kuralı reddiBakiye yetersiz, tutar uyumsuzSiparişi beklemeye al, elle müdahale
429Hız limiti aşıldıEşzamanlı çok istekArtan gecikmeyle tekrar dene
5xxTedarikçi tarafı arızaGeçici kesinti veya bakımKuyruğa al, yedek tedarikçiye yönlen
Zaman aşımıSonuç bilinmiyorYavaş yanıt, ağ kesintisiAsla kör tekrar deneme, önce durum sorgula

Zaman aşımı hatasında para gitti mi, kod geldi mi? Asıl mesele mutabakat

Entegrasyonun en tehlikeli hatası zaman aşımıdır, çünkü bir hata değil bir bilinmezliktir. İstek gitti, yanıt gelmedi. Tedarikçi tarafında sipariş oluşmuş ve kod ayrılmış olabilir; hiç oluşmamış da olabilir. Bu durumda yazılımın körü körüne isteği tekrar göndermesi, aynı müşteriye ikinci kez ürün satın alınması ve senin cebinden çift maliyet çıkması anlamına gelir.

Doğru çözüm her istek için kendi tarafında ürettiğin tekil bir referans numarası göndermektir. Tedarikçi bu referansı destekliyorsa aynı referansla gelen ikinci isteği yeni sipariş olarak işlemez, ilkinin sonucunu döner. Desteklemiyorsa akış değişir: zaman aşımından sonra asla yeni sipariş açma, önce sipariş sorgulama uç noktasından o referansın durumunu sor, sonucu ona göre işle.

Bunun üstüne bir de günlük mutabakat koymalısın. Gün sonunda kendi kayıtlarındaki tedarikçi siparişleriyle tedarikçi panelindeki hareketleri karşılaştır. Bir tarafta olup diğerinde olmayan kayıtlar, tam olarak zaman aşımlarının bıraktığı izlerdir ve düzeltilmediğinde ay sonunda kaybolan paraya dönüşür.

Tedarikçi entegrasyon hatalarının kök neden dağılımı

  • Kimlik, yetki ve IP izni sorunları 50%
  • Zaman aşımı ve mutabakat kayıpları 25%
  • Hız limiti ve eşzamanlılık 15%
  • Sözleşme değişikliği ve ürün eşlemesi 10%

Tedarikçi limitini aştığında (429) kuyruğun ne yapıyor?

Kampanya saatinde otuz sipariş aynı saniyede düşer ve yazılım otuz isteği paralel gönderir. Tedarikçi saniyede beş istek kabul ediyorsa geri kalan yirmi beşi reddeder. Kötü kurulmuş bir sistem bu reddi kalıcı hata sayıp siparişleri iptale çeker; işin acısı, tedarikçi tarafında hiçbir arıza yoktur, sadece sen çok hızlı vurdun.

Doğru davranış üç parçadır. Birincisi eşzamanlılık sınırı: tedarikçi başına en çok kaç isteğin aynı anda uçabileceğini yazılımda tanımlamak. İkincisi artan gecikmeli tekrar deneme: ilk denemede bir saniye, sonra iki, sonra dört bekleyip yeniden denemek ve deneme sayısını sınırlamak. Üçüncüsü devre kesici: belirli sayıda üst üste hata aldıktan sonra o tedarikçiyi kısa süre devre dışı bırakıp siparişleri kuyrukta tutmak.

Devre kesici en çok ihmal edilen parçadır ama en çok işe yarayandır. Çöken bir tedarikçiye dakikada yüzlerce istek atmak hem onun toparlanmasını geciktirir hem senin sunucunu meşgul eder hem de bayi hesabının geçici olarak kısıtlanmasına yol açabilir. Kırk beş saniye beklemek, kırk beş dakika beklemekten iyidir.

Zaman aşımını asla tekrar denemeyle karşılama

Yanıt gelmediyse sonuç bilinmiyordur. Önce tekil referansla durum sorgusu yap; kör tekrar deneme çift satın alma ve çift maliyet üretir.

Stok senkronizasyonu bozulduğunda müşteriye boş kutu mu satıyorsun?

Entegrasyonun sessiz arızası stok bilgisidir. Tedarikçi tarafında ürün tükenmiştir ama senin vitrininde hâlâ satılabilir görünür. Müşteri ödemeyi yapar, teslimat adımında tedarikçi "stok yok" der ve elinde tahsil edilmiş bir para, teslim edilemeyen bir sipariş kalır. Bu vaka teknik olarak küçük, itibar olarak büyüktür.

Önlemi iki katmanlıdır. Birincisi periyodik stok tazelemesi: ürün bazında son güncelleme zaman damgası tutmak ve belirli bir süreden eski veriyi "güvenilmez" saymak. İkincisi satın alma anında son kontrol: ödeme tamamlanmadan hemen önce tedarikçiden anlık uygunluk sorgusu yapmak. İkinci kontrol birkaç yüz milisaniye maliyetlidir ve sepet terkine etkisi ihmal edilebilir düzeydedir.

Bir de fiyat senkronizasyonu var. Tedarikçi alış fiyatını güncellediğinde senin satış fiyatın olduğu yerde kalırsa zararına satış yapmaya başlarsın ve bunu genelde ay sonu raporunda fark edersin. Kural bazlı fiyatlandırma, yani alış üzerine yüzde veya sabit marj tanımlayıp fiyatı otomatik hesaplatmak, bu riski tamamen ortadan kaldırır.

Birden fazla tedarikçi ve otomatik yedekleme neden zorunlu?

Tek tedarikçiye bağlı bir dijital ürün satış yazılımı, o tedarikçinin bakım penceresinde kapalı dükkândır. Ciddi hacim yapan işletmelerin ortak refleksi aynı ürün için en az iki tedarikçi tanımlamak ve yazılımın birincil kaynak yanıt vermediğinde ikincisine otomatik geçmesidir.

Yedekleme mantığı basit kurallar üzerine kurulur: maliyet sırası, stok durumu, son yüz istekteki başarı oranı ve ortalama yanıt süresi. Birincil tedarikçi üst üste hata verdiğinde devre kesici onu geçici olarak dışarı alır, sipariş ikinciden karşılanır, birincil toparlandığında otomatik geri döner. Müşteri bu geçişin farkına bile varmaz.

Son olarak izleme: her tedarikçi için başarı oranı, ortalama yanıt süresi ve son hata mesajı panelde görünür olmalı. Böylece "tedarikçi mi ben mi" tartışmasına veriyle girersin. Hangi paketin kaç tedarikçi bağlantısı ve hangi izleme araçlarını içerdiğini fiyat sayfasında karşılaştırabilir, kurulum için panel üzerinden ilerleyebilirsin.

KontrolNasıl doğrulanırBeklenen durumRisk seviyesi
Ham yanıt kaydıEntegrasyon kaydında bir hatayı açİstek, kod, gövde, süre görünüyorKritik
Tekil referans gönderimiAynı siparişi iki kez tetikleİkinci istek yeni sipariş açmıyorKritik
Çıkış IP izniSunucu çıkış IP'si ile panel listesiBirebir eşleşiyorYüksek
Jeton yenilemeJeton ömrünü bekleyip sipariş verOtomatik yenileniyorYüksek
Eşzamanlılık sınırıTedarikçi ayarlarını inceleLimitin altında tanımlıOrta
Devre kesiciHatalı anahtarla test etBelirli hatadan sonra duruyorOrta
Satın alma anı stok kontrolüTükenmiş ürünle deneÖdeme öncesi uyarı çıkıyorYüksek
Yedek tedarikçi geçişiBirincili kapatıp sipariş verİkinciden karşılanıyorOrta
Günlük mutabakatKayıtları tedarikçi hareketleriyle karşılaştırFark yok veya işaretliYüksek

Entegrasyonu tahminle değil veriyle yönet

Tekil referans, devre kesici, çok tedarikçili yedekleme ve ham yanıt kaydıyla "para gitti kod gelmedi" vakalarını kökünden kaldır.

Dün çalışan entegrasyon bugün 403 veriyorsa ne değişmiştir?

Genelde kod değil, sunucunun dışarıya çıkarken kullandığı IP adresi. Tedarikçiler bayi anahtarını IP ile eşler; sunucu taşıma veya bulut katmanı değişikliği entegrasyonu sessizce kırar.

Zaman aşımı aldığımda isteği tekrar göndermeli miyim?

Hayır. Sonuç bilinmiyordur ve kör tekrar deneme çift satın alma üretir. Tekil referansla durum sorgusu yapıp gerçek sonucu öğrendikten sonra karar vermelisin.

429 hatası tedarikçinin arızası mıdır?

Değil, hız limiti uyarısıdır. Eşzamanlılık sınırı tanımlayıp artan gecikmeli tekrar deneme kurduğunda bu hata büyük ölçüde ortadan kalkar.

Kaç tedarikçi bağlamak yeterli olur?

Çok satan ürünlerde en az iki. Devre kesici ve otomatik yedekleme kuruluysa birincil tedarikçinin bakım penceresi satışını durdurmaz, siparişler ikinciden karşılanır.

Entegrasyon olgunluğu, hata olmamasıyla değil hatanın nasıl karşılandığıyla ölçülür: her yanıtın kaydı tutulur, her istek tekil referans taşır, her tedarikçinin bir yedeği ve bir devre kesicisi olur. Bu dördü kurulduğunda tedarikçi kesintisi bir kriz değil, panelde birkaç dakika bekleyen bir kuyruk satırıdır. Bu akışın gerçek bir sistemde nasıl göründüğünü merak ediyorsan canlı demo üzerinde tedarikçi ekranlarını açıp hata kayıtlarını ve yedekleme kurallarını kendi gözünle inceleyebilirsin.

Daha Fazlasını Keşfedin

Dijital ürün satışı ve otomasyon üzerine güncel rehberlere göz atın.

Tüm Yazıları Gör →
Bu yazıyı paylaşın
Bu yazıyı beğendiniz mi?
Teşekkürler!
← Tüm yazılar