WooCommerce
Veri modeli: WordPress/WooCommerce ürün, taxonomy, attribute ve variation modeli
Yaklaşım: XML kaynağı özel kod veya uygun entegrasyon katmanıyla eşleştirilebilir
Tedarikçinizden aldığınız XML ürün kaynağını mevcut e-ticaret yazılımınıza uyarlıyoruz. Ürün adı, kategori, marka, stok, fiyat, KDV, açıklama, görseller, özellikler ve varyantlar eşleştirilir; yeni ürün ekleme ve mevcut ürün güncelleme süreçleri ihtiyaca göre otomatikleştirilir.
E-ticaret yazılımınızı Eka Sunucu veya Eka Yazılım'dan satın almış olmanız gerekmez. Kaynak koduna erişilebilen veya uygun API / entegrasyon imkanı bulunan sistemleri inceleyerek mevcut altyapınıza özel çözüm geliştirebiliriz.
<products>
<product>
<name>EKA Pro Oyuncu Bilgisayarı</name>
<category>Bilgisayarlar > Masaüstü Bilgisayarlar</category>
<productCode>EKA-PC-001</productCode>
<barcode>8690000000001</barcode>
<brand>EKA Teknoloji</brand>
<quantity>25</quantity>
<price>34999.90</price>
<tax>20</tax>
<description>EKA Pro serisi yüksek performanslı oyuncu bilgisayarı.</description>
<images>
<image>https://ornek.com/eka-pc-001-1.webp</image>
<image>https://ornek.com/eka-pc-001-2.webp</image>
</images>
<variants>
<variant>
<option name="RAM">32 GB</option>
<sku>EKA-PC-001-32</sku>
<stock>12</stock>
</variant>
</variants>
</product>
<product>
<name>EKA Mekanik Oyuncu Klavyesi</name>
<category>Bilgisayar Aksesuarları > Klavye</category>
<productCode>EKA-KLV-002</productCode>
<barcode>8690000000002</barcode>
<brand>EKA Teknoloji</brand>
<quantity>80</quantity>
<price>2499.90</price>
<tax>20</tax>
<description>RGB aydınlatmalı EKA mekanik oyuncu klavyesi.</description>
<image1>https://ornek.com/eka-klv-002-1.webp</image1>
<image2>https://ornek.com/eka-klv-002-2.webp</image2>
</product>
</products>
Tedarikçinin XML kaynağı okunur, ürün düğümleri belirlenir ve XML alanları e-ticaret sisteminizdeki ürün alanlarıyla eşleştirilir. SKU, barkod veya tedarikçi ürün kimliği üzerinden ürünün daha önce eklenip eklenmediği kontrol edilir. Yeni ürün oluşturulur; mevcut ürünlerde ise istenen kurala göre stok, fiyat, açıklama, görsel veya diğer bilgiler güncellenir. İşlem cron veya kuyruk sistemiyle düzenli aralıklarla otomatik çalıştırılabilir.
XML ürün yükleme; bir tedarikçi, üretici, distribütör veya başka bir veri kaynağında bulunan ürün kataloğunun e-ticaret sistemine toplu ve kurallı şekilde aktarılmasıdır. XML dosyasında ürün adı, ürün kodu, barkod, kategori, marka, açıklama, alış veya satış fiyatı, stok, KDV, görsel adresleri, teknik özellikler ve varyantlar gibi alanlar bulunabilir.
İşin kritik kısmı XML dosyasını yalnızca açmak değildir. Gerçek entegrasyon; XML'deki alanların hedef yazılımın veri modeline doğru eşleştirilmesini, daha önce aktarılmış ürünlerin tekrar oluşturulmamasını, fiyat ve stok değişikliklerinin güvenli şekilde güncellenmesini, kategori ve varyantların korunmasını ve hataların kayıt altına alınmasını gerektirir.
Bu nedenle 'XML yükleme' ile 'XML entegrasyonu' aynı kapsamda olmayabilir. Tek seferlik yükleme yalnızca mevcut katalogu içeri alabilir. Entegrasyon ise belirlenen aralıklarla kaynağı tekrar kontrol edip yeni ürünleri ekleyebilir, mevcut ürünleri güncelleyebilir ve tedarikçi verisi değiştiğinde mağazanın buna göre davranmasını sağlayabilir.
Eka Sunucu tarafında çalışma, müşterinin kullandığı yazılıma göre planlanır. Hazır bir modülün yeterli olmadığı durumlarda açık kaynak veya müdahale edilebilir kod tabanına özel aktarım katmanı geliştirilebilir. Kapalı SaaS sistemlerinde ise kaynak koda müdahale yerine platformun izin verdiği API, uygulama veya içe aktarma imkanları değerlendirilir.
Her tedarikçinin XML şeması farklı olabilir. Aşağıdaki örnek yalnızca bir ürün kataloğunun hangi mantıkla düzenlenebileceğini göstermek için hazırlanmıştır. Gerçek XML'inizde alan adları tamamen farklı olabilir; önemli olan hangi düğümün hangi veriyi temsil ettiğini doğru belirlemektir.
Örnekte iki EKA ürünü bulunuyor. Kök düğüm products, her ürün product düğümünde ve ürünün temel alanları alt düğümlerde tutuluyor. Bir entegrasyon geliştirirken önce tekrar eden ürün düğümü belirlenir, daha sonra her alt alan hedef sistemdeki karşılığına bağlanır.
<products>
<product>
<name>EKA Pro Oyuncu Bilgisayarı</name>
<category>Bilgisayarlar > Masaüstü Bilgisayarlar</category>
<productCode>EKA-PC-001</productCode>
<barcode>8690000000001</barcode>
<brand>EKA Teknoloji</brand>
<quantity>25</quantity>
<price>34999.90</price>
<tax>20</tax>
<description>EKA Pro serisi yüksek performanslı oyuncu bilgisayarı.</description>
<images>
<image>https://ornek.com/eka-pc-001-1.webp</image>
<image>https://ornek.com/eka-pc-001-2.webp</image>
</images>
<variants>
<variant>
<option name="RAM">32 GB</option>
<sku>EKA-PC-001-32</sku>
<stock>12</stock>
</variant>
</variants>
</product>
<product>
<name>EKA Mekanik Oyuncu Klavyesi</name>
<category>Bilgisayar Aksesuarları > Klavye</category>
<productCode>EKA-KLV-002</productCode>
<barcode>8690000000002</barcode>
<brand>EKA Teknoloji</brand>
<quantity>80</quantity>
<price>2499.90</price>
<tax>20</tax>
<description>RGB aydınlatmalı EKA mekanik oyuncu klavyesi.</description>
<image1>https://ornek.com/eka-klv-002-1.webp</image1>
<image2>https://ornek.com/eka-klv-002-2.webp</image2>
</product>
</products>
XML'de 'ürün adı mutlaka name olmalıdır' gibi evrensel bir kural yoktur. Bir tedarikçi ürün adını name, diğeri title, başka biri urun_adi, ProductName veya model_name olarak gönderebilir. Aynı durum stok, fiyat, barkod ve kategori alanları için de geçerlidir.
Entegrasyon sırasında yapılan iş, kaynak alan ile hedef sistem alanı arasında açık bir eşleştirme oluşturmaktır. Örneğin XML'deki salePrice hedef sistemde satis_fiyati alanına, stock miktarı stok kolonuna, sku ise urun_kodu alanına bağlanabilir.
Bu eşleştirme kod içinde sabit olabilir veya yönetim panelinden değiştirilebilir bir alan eşleştirme ekranı geliştirilebilir. Birden fazla tedarikçi kullanılacaksa panelden eşleştirme yapabilmek bakım maliyetini düşürebilir; tek bir sabit XML kaynağında ise daha sade bir entegrasyon yeterli olabilir.
Aynı veri farklı tedarikçilerde farklı düğüm adlarıyla gelebilir. Entegrasyon katmanı kaynak alanı hedef sistemdeki doğru alana bağlar.
| XML alanı | E-ticaret alanı | Entegrasyon notu |
|---|---|---|
name / title / urun_adi |
Ürün adı | Metin temizleme, HTML çözme ve dil alanı ihtiyaca göre |
category / categoryPath |
Kategori | Mevcut kategoriyle mapping veya kontrollü otomatik oluşturma |
productCode / sku |
Ürün kodu / SKU | Duplicate kontrolünde anahtar olarak kullanılabilir |
barcode / ean |
Barkod / EAN | Tekillik kontrolü ve varyant eşleştirme için kullanılabilir |
brand / manufacturer |
Marka | Mevcut marka ile eşleştirme veya yeni marka oluşturma |
quantity / stock |
Stok | Tampon stok, minimum stok ve maksimum gösterim kuralları uygulanabilir |
price / salePrice |
Fiyat | Kâr, KDV, döviz ve yuvarlama formülünden geçirilebilir |
tax / vat |
KDV | XML dahil/hariç modeline göre hesaplanır |
description |
Ürün açıklaması | HTML/CDATA içeriği güvenli biçimde işlenir |
image1...imageN |
Ürün görselleri | Uzak URL veya yerel medya kaydı olarak yönetilebilir |
color / size / options |
Varyant / özellik | Hedef platformun varyant modeline dönüştürülür |
Aşağıdaki iki örnek aynı mantıktaki ürün verisinin farklı isimlerle sunulabileceğini gösterir. Bu nedenle entegrasyon şablon ezberine değil, gerçek XML yapısına göre hazırlanır.
<urun>
<urun_adi>EKA Kablosuz Mouse</urun_adi>
<stok_kodu>EKA-MOU-003</stok_kodu>
<stok>150</stok>
<satis_fiyati>899.90</satis_fiyati>
</urun>
<item>
<title>EKA 27 İnç Gaming Monitör</title>
<sku>EKA-MON-004</sku>
<stock>32</stock>
<salePrice>7499.90</salePrice>
</item>
Sağlıklı bir aktarım doğrudan canlı veritabanına binlerce kayıt basmakla başlamaz. Önce XML kaynağı doğrulanır, örnek ürünler incelenir ve hangi alanların zorunlu olduğu belirlenir. Hedef mağazadaki kategori, marka, varyant ve ürün tabloları analiz edilir.
Ardından bir pilot aktarım yapılır. Az sayıda ürünle ürün oluşturma, görsel indirme, kategori bağlama, fiyat hesaplama, stok güncelleme ve tekrar çalıştırıldığında duplicate oluşmaması test edilir. Pilot başarılıysa işlem batch veya kuyruk mantığıyla tüm kataloğa genişletilir.
Canlıya geçişte entegrasyonun hangi alanları güncelleyebileceği net olmalıdır. Örneğin mağaza yöneticisi ürün açıklamasını elle düzenleyecekse senkronizasyon sırasında açıklamanın tekrar XML'den ezilmemesi istenebilir. Bu nedenle stok, fiyat, başlık, açıklama, kategori ve görseller için ayrı güncelleme politikaları tanımlamak önemlidir.
XML entegrasyonunda en kritik tasarım kararlarından biri benzersiz ürün anahtarıdır. Ürün adı benzersiz anahtar olarak güvenilir değildir; tedarikçi ürün başlığını değiştirebilir veya aynı başlıkta birden fazla ürün olabilir. Mümkünse tedarikçinin değişmeyen ürün ID'si, SKU'su veya barkodu kullanılmalıdır.
Her senkronizasyonda önce bu anahtar üzerinden hedef mağazada kayıt aranır. Kayıt bulunmuyorsa yeni ürün eklenir. Bulunuyorsa yeni ürün oluşturmak yerine güncellenmesine izin verilen alanlar değiştirilir. Böylece cron her çalıştığında katalog şişmez.
Tedarikçi ürün kodunu sonradan değiştirebiliyorsa ikinci bir eşleştirme tablosu tutulması gerekebilir. Özellikle birden fazla tedarikçide aynı barkodun bulunması, varyantların ayrı SKU taşıması veya barkodsuz ürünler olması halinde eşleştirme stratejisi projeye özel belirlenmelidir.
İlk aktarım tamamlandıktan sonra en sık ihtiyaç duyulan işlem stok ve fiyat senkronizasyonudur. Tedarikçinin XML'i güncellendiğinde entegrasyon kaynağı tekrar okur, ilgili ürünü benzersiz anahtarla bulur ve belirlenen alanları günceller.
Güncelleme sıklığı her proje için aynı olmamalıdır. Hızla değişen stoklarda daha sık çalışma gerekebilir; büyük ve seyrek değişen kataloglarda gereksiz yere her birkaç dakikada tüm XML'i taramak sunucu ve tedarikçi kaynağı üzerinde yük oluşturabilir. En doğru periyot katalog boyutu, tedarikçi güncelleme sıklığı ve satış riskine göre belirlenir.
Stok yönetiminde tampon kural uygulanabilir. Örneğin tedarikçi stoku 3 adedin altına düştüğünde mağazada 0 göstermek overselling riskini azaltmak için tercih edilebilir. Aynı şekilde tedarikçi 100 adet gönderse bile mağazada maksimum 20 gösterme veya belirli depoları toplama gibi kurallar uygulanabilir.
Fiyat güncellemesi ise yalnızca XML fiyatını doğrudan kopyalamak zorunda değildir. Kâr yüzdesi, sabit ücret, kategori veya marka bazlı marj, KDV, döviz kuru ve yuvarlama politikaları birlikte uygulanabilir.
Site adresinizi, XML URL'nizi veya örnek XML dosyanızı ve hangi alanların aktarılmasını istediğinizi iletin. Ürün sayısı, kategori-varyant yapısı, güncelleme sıklığı ve fiyat kurallarına göre entegrasyon kapsamını netleştirip fiyat teklifi sunalım.
Evet. XML'den gelen fiyat ham veri olarak kabul edilip satış fiyatı bir kurallar zincirinden geçirilebilir. Örneğin 1.000 TL alış fiyatına yüzde 25 kâr eklemek, ardından KDV hesaplamak ve sonucu .90 ile biten bir satış fiyatına yuvarlamak mümkündür.
Tek bir yüzde her ürün için uygun değilse fiyat aralıkları kullanılabilir. 0-500 TL ürünlerde yüzde 40, 500-2.000 TL aralığında yüzde 30, daha yüksek fiyatlarda yüzde 20 gibi farklı marjlar uygulanabilir. Benzer şekilde marka, kategori veya tedarikçi bazında farklı formüller tanımlanabilir.
Dövizli XML'lerde kurun nereden alınacağı ve ne zaman güncelleneceği ayrıca belirlenmelidir. Tedarikçinin kendi TL fiyatı varsa onu kullanmak, fiyat yalnızca USD/EUR ise belirlenen kur kaynağına göre çevirmek mümkündür. Kur değişimi çok sık çalıştırılıyorsa fiyat dalgalanmasının operasyonel etkisi de hesaba katılmalıdır.
satış fiyatı = (kaynak fiyat × kâr katsayısı) + sabit tutar + vergi kuralı
Ürün adı ve fiyatı aktarmak genellikle kolay bölümdür; gerçek entegrasyon zorluğu kategori ağacı ve varyantlarda ortaya çıkar. Tedarikçinin kategori isimleri hedef mağazayla aynı olmayabilir. Örneğin XML'deki 'Bilgisayar > Çevre Birimleri > Klavye' kategorisi mağazada 'Teknoloji > Oyuncu Ekipmanları > Klavyeler' olarak bulunabilir.
Bu durumda mapping tablosu oluşturularak kaynak kategori hedef kategoriye bağlanır. İstenirse XML'de yeni görülen kategoriler otomatik oluşturulabilir, ancak kontrolsüz otomatik kategori üretimi mağazada yüzlerce gereksiz veya tekrar eden kategori oluşturabileceği için çoğu projede kontrollü mapping daha sağlıklıdır.
Varyantlarda renk, beden, numara, kapasite veya başka seçenekler parent ürünün altında kombinasyonlar halinde tutulabilir. Her varyantın ayrı SKU, barkod, fiyat ve stok bilgisi varsa hedef sistemin varyant modeline uygun biçimde kaydedilmesi gerekir. WooCommerce, OpenCart, PrestaShop ve özel PHP yazılımlarının veri modelleri aynı değildir; bu nedenle varyant aktarımı altyapıya göre uyarlanır.
XML çoğu zaman görsel dosyasını değil görsel URL'sini taşır. Entegrasyon bu URL'yi doğrudan uzak görsel olarak kullanabilir veya görseli hedef sunucuya indirip ürün medyasına kaydedebilir. Hangi yöntemin uygun olduğu yazılımın medya sistemi, tedarikçinin hotlink politikası ve performans beklentisine göre seçilir.
Yerel indirme yapılacaksa dosya uzantısına güvenmek yerine içerik türünün doğrulanması, maksimum dosya boyutu sınırı, zaman aşımı ve başarısız indirme kayıtları önemlidir. Aynı görselin her senkronizasyonda tekrar indirilmemesi için URL/hash eşleştirmesi yapılabilir.
Birden fazla görselde ana görsel sırası korunabilir; image1 ana görsel, image2-imageN galeri olarak atanabilir. XML yapısı görselleri ayrı <image> düğümleri veya tek bir ayraçlı alan içinde veriyorsa parser buna göre uyarlanır.
Büyük XML kataloglarında tüm dosyayı belleğe alıp dev bir diziye dönüştürmek sunucunun RAM tüketimini yükseltebilir. Küçük ve orta boy dosyalarda SimpleXML pratik olabilirken büyük kataloglarda XMLReader gibi akış tabanlı okuma yöntemleriyle ürün düğümlerini sırayla işlemek daha kontrollü bir yaklaşım sağlar.
Aktarım tek HTTP isteğinin bitmesini bekleyen bir işlem olmamalıdır. Binlerce ürün için batch, CLI, cron veya queue yaklaşımı kullanılarak örneğin her çalışmada belirli sayıda ürün işlenebilir. İşlem imleci veya son işlenen ürün bilgisi tutulursa aktarım yarıda kalınca sıfırdan başlatmak yerine devam ettirilebilir.
Performans yalnız XML boyutuna bağlı değildir. Her ürün için yapılan veritabanı sorgusu, kategori kontrolü, görsel indirme, varyant oluşturma ve uzak servis çağrıları toplam süreyi belirler. Doğru indeksler, toplu sorgular, tekrar kullanılabilir mapping önbelleği ve kontrollü eşzamanlılık ciddi fark yaratabilir.
Amaç memory_limit değerini sınırsız yükseltmek değil, entegrasyonu kaynakları ölçülü kullanacak şekilde tasarlamaktır. Hosting kısıtlıysa cron parçalama; VPS veya özel sunucuda ise CLI worker/kuyruk sistemi gibi daha esnek yöntemler değerlendirilebilir.
Site adresinizi, XML URL'nizi veya örnek XML dosyanızı ve hangi alanların aktarılmasını istediğinizi iletin. Ürün sayısı, kategori-varyant yapısı, güncelleme sıklığı ve fiyat kurallarına göre entegrasyon kapsamını netleştirip fiyat teklifi sunalım.
Cron, sunucuda belirlenen zaman planına göre entegrasyon komutunu otomatik çalıştırmak için kullanılabilir. Örneğin her 15 dakikada stok kontrolü, saatte bir fiyat kontrolü veya geceleri kapsamlı katalog güncellemesi yapılabilir.
Tek cron içinde her şeyi yapmak zorunlu değildir. Stok ve fiyat hızlı değişiyorsa hafif bir görev sık çalıştırılabilir; görsel ve açıklama gibi daha ağır işlemler daha seyrek ayrı bir göreve bırakılabilir. Bu ayrım özellikle büyük kataloglarda daha dengeli kaynak kullanımı sağlar.
Cron görevinde kilit mekanizması önemlidir. Önceki senkronizasyon bitmeden yenisi başlarsa aynı ürünler eşzamanlı güncellenebilir. Bu nedenle tek çalışma kilidi, job durumu veya kuyruk tabanlı kontrol kullanılabilir. Her koşuda başlangıç-bitiş zamanı, işlenen ürün sayısı, hata sayısı ve XML erişim durumu loglanabilir.
Evet, teknik olarak birden fazla XML kaynağı aynı mağazaya bağlanabilir. Ancak aynı barkod veya SKU'nun birden fazla tedarikçide bulunması halinde hangi kaynağın fiyat ve stok açısından öncelikli olduğuna karar verilmelidir.
Bazı projelerde öncelikli tedarikçi sırası kullanılır. Bazılarında stokta olan tedarikçi seçilir, bazılarında en düşük maliyetli kaynak tercih edilir. Daha gelişmiş senaryolarda birden fazla tedarikçinin stokları toplanabilir fakat sipariş yönlendirme süreci de buna uygun tasarlanmalıdır.
Her tedarikçinin XML alanları farklı olabileceğinden her kaynak için ayrı mapping profili oluşturmak mantıklıdır. Böylece A tedarikçisindeki ProductCode ile B tedarikçisindeki sku aynı iç ürün koduna bağlanabilir.
Entegrasyonun yapılabilirliği marka isminden çok teknik erişime bağlıdır. Kaynak koduna ve veritabanına erişilebilen özel PHP veya Laravel projelerinde sistemin ürün modeli analiz edilip doğrudan özel entegrasyon geliştirilebilir. WooCommerce, OpenCart ve PrestaShop gibi müdahale edilebilir altyapılarda platformun ürün, taksonomi ve varyant yapısına göre entegrasyon uygulanabilir.
Yazılım kapalı SaaS modelindeyse kaynak koduna müdahale edilemez. Bu durumda platformun resmi API, uygulama mağazası, webhook veya içe aktarma imkanları değerlendirilir. Platform gerekli erişimi sunmuyorsa dışarıdan yapılabilecek işlemler doğal olarak sınırlı olabilir.
Bu nedenle 'hangi dil olursa olsun kesin bağlarız' şeklinde teknik inceleme yapılmadan söz vermek doğru değildir. Ancak kaynak koduna veya yeterli API erişimine sahip olduğunuz sürece kullandığınız yazılımı bizden almış olmanız gerekmez; mevcut sisteminizi inceleyip uygulanabilir yöntemi belirleyebiliriz.
WooCommerce ürünleri WordPress post/taxonomy/meta yapısı ile birlikte yönetir ve varyasyonlar parent ürün ilişkisi taşır. OpenCart ürün, kategori, seçenek, dil ve mağaza ilişkilerini ayrı tablolarda yönetir. PrestaShop'un kombinasyon ve özellik modeli farklıdır. Özel PHP projelerinde ise tablo ve servis yapısı tamamen geliştiriciye özgü olabilir.
Bu yüzden aynı XML'i dört sisteme bağlamak dört farklı veri katmanına uyarlama anlamına gelebilir. Entegrasyonda hedef platformun kendi servis veya model katmanı kullanılabiliyorsa tercih edilir; doğrudan veritabanına yazmak yalnızca veri bütünlüğü ve yan etkiler iyi analiz edildiğinde uygulanmalıdır.
Eka Sunucu bağımsız teknik destek ve geliştirme hizmeti sunar; WooCommerce, OpenCart veya PrestaShop'un resmi destek ekibi ya da yetkili temsilcisi değildir.
Veri modeli: WordPress/WooCommerce ürün, taxonomy, attribute ve variation modeli
Yaklaşım: XML kaynağı özel kod veya uygun entegrasyon katmanıyla eşleştirilebilir
Veri modeli: Ürün, kategori, seçenek, dil ve mağaza ilişkileri
Yaklaşım: Sürüm ve eklenti yapısına göre veri modeli analiz edilir
Veri modeli: Ürün, combination, feature ve category modeli
Yaklaşım: Kombinasyon ve çoklu dil yapısına göre uyarlanır
Veri modeli: Projeye özel model, servis ve veritabanı şeması
Yaklaşım: Kaynak kod erişimiyle en uygun katmana entegrasyon geliştirilir
Veri modeli: Kaynak kod / veritabanı / API imkanına göre
Yaklaşım: Teknik inceleme sonrası uygulanabilirlik belirlenir
Veri modeli: Kaynak kod müdahalesi mümkün değildir
Yaklaşım: Resmi API, uygulama veya import imkanları varsa değerlendirilir
Eka Sunucu bağımsız geliştirme ve teknik destek hizmeti sunar. Üçüncü taraf platformların resmî destek ekibi veya yetkili temsilcisi değildir.
Tedarikçi XML'i herkese açık bir HTTPS URL'sinde olabilir veya Basic Auth, token, query parameter ya da IP kısıtlaması ile korunabilir. Erişim modeli entegrasyona eklenebilir; kimlik bilgileri kaynak kodda düz metin bırakılmak yerine güvenli yapılandırmada saklanmalıdır.
Bazı tedarikçiler büyük katalogu gzip sıkıştırılmış dosya olarak sunabilir. Bazıları UTF-8 dışı karakter kodlaması kullanabilir veya açıklama alanlarını CDATA içinde gönderir. Namespace kullanan XML'lerde düğümlere erişim farklılaşabilir. Bunların her biri parser katmanında ele alınabilecek teknik ayrıntılardır.
Entegrasyonda uzak XML kaynağına güvenli zaman aşımı, HTTP durum kodu kontrolü, TLS doğrulaması ve maksimum indirme boyutu gibi sınırlar koymak gerekir. Kaynak o anda erişilemiyorsa mağazadaki tüm stokları yanlışlıkla sıfırlamak yerine senkronizasyonu başarısız kabul edip mevcut veriyi korumak daha güvenli olabilir.
XML entegrasyonu ilk testte çalışsa bile gerçek katalogda veri kalitesi problemleri ortaya çıkabilir. Boş SKU, tekrar eden barkod, eksik kategori, virgüllü fiyat, HTML içeren açıklama, erişilemeyen görsel ve beklenmeyen varyant kombinasyonları sık görülen örneklerdir.
İyi bir entegrasyon hatayı sessizce yutmaz. Hangi ürünün neden atlandığını kayıt altına alır, mümkünse aktarımı diğer ürünlerle sürdürür ve tekrar denenebilir hataları ayırır. Böylece tek bozuk ürün tüm 50.000 ürünlük senkronizasyonu durdurmaz.
Kaynak XML yapısı tedarikçi tarafından haber verilmeden değiştirilebilir. Örneğin price alanı sale_price olarak değiştirilirse entegrasyonun fiyatı 0 kabul etmemesi, zorunlu alan kaybolduğunda uyarı üretmesi gerekir. Şema değişikliği kontrolleri bakım sürecinin önemli bölümüdür.
| Sorun | Olası neden | Çözüm yaklaşımı |
|---|---|---|
| Aynı ürün tekrar ekleniyor | Benzersiz anahtar yanlış veya kullanılmıyor | SKU/barkod/tedarikçi ID eşleştirmesi ve unique kontrolü |
| Fiyat 0 veya yanlış geliyor | Virgül-nokta, KDV veya döviz biçimi farklı | Normalize edilmiş fiyat parser'ı ve doğrulama kuralları |
| Kategori çoğalıyor | Her senkronizasyonda otomatik kategori açılıyor | Kalıcı kategori mapping tablosu |
| Varyantlar ayrı ürün oluyor | Parent-child ilişkisi çözümlenmemiş | Varyant grup anahtarı ve seçenek kombinasyonu mapping'i |
| Görseller yüklenmiyor | URL erişilemiyor, hotlink engeli veya timeout | HTTP kontrolü, retry ve yerel indirme politikası |
| Cron üst üste biniyor | Önceki görev bitmeden yeni görev başlıyor | Lock/job durumu ve kuyruk kontrolü |
| Büyük XML sunucuyu yoruyor | Tüm dosya RAM'e alınıyor veya tek istekte işleniyor | XMLReader, batch, CLI/queue ve indeks optimizasyonu |
| Türkçe karakterler bozuluyor | Kaynak encoding hedefle uyuşmuyor | Encoding tespiti/dönüşümü ve UTF-8 normalizasyonu |
| Tedarikçi erişilemiyor ve stoklar sıfırlanıyor | Hatalı fallback kuralı | Kaynak başarısızlığında mevcut veriyi koruma |
| Elle düzenlenen açıklamalar siliniyor | Senkronizasyon tüm alanları körlemesine eziyor | Alan bazlı güncelleme politikası |
XML import dışarıdaki veriyi mağazaya alma işlemidir. XML export ise mağazadaki ürünleri başka bir sistemin okuyabileceği XML formatında dışarı verme işlemidir. İkisi aynı proje içinde birlikte de kullanılabilir.
Tedarikçi XML veriyor fakat hedef sistem yalnız CSV kabul ediyorsa XML → CSV dönüştürme katmanı geliştirilebilir. Benzer şekilde XML → JSON, API → XML veya mağaza → özel XML feed üretimi mümkündür. Gereken dönüşüm hedef sistemin beklediği veri şemasına göre hazırlanır.
API gerçek zamanlı veya işlem bazlı iletişim için daha uygun olabilir; XML feed ise katalog paylaşımında hâlâ yaygın bir yöntemdir. Bir sistem API sunuyorsa her durumda XML'i zorlamak yerine hangi yöntem daha güvenli ve sürdürülebilir ise o seçilmelidir.
XML dış bir veri kaynağı olduğu için güvenilmeyen girdi gibi ele alınmalıdır. Parser ayarları, uzak varlık çözümleme davranışı, dosya boyutu ve ağ erişimi kontrollü tutulmalıdır. Hedef veritabanına yazılan metinler uygun doğrulama ve parametreli sorgularla işlenmelidir.
Görsel URL'leri ve uzak dosyalar için yalnız beklenen protokoller kabul edilmeli, yerel ağ adreslerine istek yapılmasını engelleyen SSRF kontrolleri düşünülmelidir. Yönetim panelinde XML URL'si tanımlanabiliyorsa yetkilendirme ve CSRF koruması önemlidir.
Canlı sisteme entegrasyon eklenmeden önce veritabanı ve kritik dosyaların yedeği alınmalı, mümkünse staging ortamında test yapılmalı ve geri dönüş planı bulunmalıdır. Büyük güncellemelerde kaç ürünün değişeceği önceden raporlanabiliyorsa yanlış mapping kaynaklı toplu veri kaybı riski azalır.
XML entegrasyonunda tek fiyat vermek her proje için doğru değildir. 500 basit ürünü tek sefer aktarmak ile 75.000 varyantlı ürünü birden fazla tedarikçiden çekip dakikalık stok güncellemek aynı iş değildir. Bu nedenle önce kaynak XML ve hedef yazılım incelenir.
Fiyatlandırmayı etkileyen başlıca unsurlar ürün sayısı, XML karmaşıklığı, varyant yapısı, kategori mapping ihtiyacı, görsel işleme, fiyat formülleri, güncelleme sıklığı, mevcut yazılımın kod kalitesi, API kısıtları, birden fazla tedarikçi ve özel yönetim paneli gereksinimleridir.
En hızlı ön inceleme için XML URL'nizi veya örnek dosyanızı, site adresinizi ve beklentinizi WhatsApp üzerinden iletebilirsiniz. Kaynak erişimi gerekiyorsa ilk aşamada hassas şifre paylaşmadan örnek XML ve site bilgisiyle kapsam değerlendirmesi yapılabilir.
Bunların tamamını ilk mesajda göndermeniz şart değildir. XML URL'si ve site adresi çoğu zaman ön değerlendirmeyi başlatmak için yeterlidir.
Site adresinizi, XML URL'nizi veya örnek XML dosyanızı ve hangi alanların aktarılmasını istediğinizi iletin. Ürün sayısı, kategori-varyant yapısı, güncelleme sıklığı ve fiyat kurallarına göre entegrasyon kapsamını netleştirip fiyat teklifi sunalım.
İlk adım teknik ön incelemedir. XML kaynağının yapısı, hedef e-ticaret sisteminin altyapısı ve aktarılacak alanlar belirlenir. Sonrasında yapılacak iş ve sınırlar yazılı hale getirilir.
Geliştirme sırasında mümkünse test veya staging ortamı kullanılır. Örnek ürünlerle mapping, kategori, varyant, fiyat ve stok kuralları doğrulanır. Canlıya geçiş öncesi yedek alınır ve ilk tam aktarım kontrollü çalıştırılır.
Teslimde otomasyon zamanları, güncellenen alanlar ve varsa yönetim paneli seçenekleri açıklanır. Tedarikçi XML yapısını ileride değiştirirse entegrasyonun yeniden uyarlanması ayrı bakım ihtiyacı doğurabilir; bu nedenle log ve hata bildirimlerinin görünür olması önemlidir.
Sayfadaki genel teknik yaklaşım; XML standardı, PHP XML araçları ve ilgili platform dokümantasyonu dikkate alınarak hazırlanmıştır.
Tedarikçinin XML kaynağı okunur, ürün düğümleri belirlenir ve XML alanları e-ticaret sisteminizdeki ürün alanlarıyla eşleştirilir. SKU, barkod veya tedarikçi ürün kimliği üzerinden ürünün daha önce eklenip eklenmediği kontrol edilir. Yeni ürün oluşturulur; mevcut ürünlerde ise istenen kurala göre stok, fiyat, açıklama, görsel veya diğer bilgiler güncellenir. İşlem cron veya kuyruk sistemiyle düzenli aralıklarla otomatik çalıştırılabilir.
Tedarikçi veya başka bir kaynaktaki ürün verilerinin XML dosyasından okunup e-ticaret sistemindeki ürün alanlarına toplu olarak aktarılmasıdır.
Evet. Kaynak koduna erişilebilen veya yeterli API/entegrasyon imkanı bulunan sistemleri inceleyerek projeye özel çözüm geliştirebiliriz. Yazılımı bizden satın almış olmanız şart değildir.
Hayır. Düğüm adları, kategori yapısı, varyant modeli, fiyat biçimi ve görsel alanları tedarikçiden tedarikçiye değişebilir. Bu nedenle önce örnek XML incelenir.
Olabilir. urun_adi, name, title veya ProductName aynı hedef alana eşleştirilebilir. Alan adı tek başına engel değildir.
Evet. Senkronizasyon sırasında benzersiz ürün anahtarına göre mağazada bulunmayan kayıtlar otomatik oluşturulabilir.
Doğru eşleştirme yapılırsa eklenmemelidir. SKU, barkod veya sabit tedarikçi ID'si üzerinden mevcut kayıt bulunup güncellenir.
Evet. Entegrasyon yalnız stok, yalnız fiyat veya seçilen alanları güncelleyecek şekilde sınırlandırılabilir.
Evet. Minimum stok tamponu tanımlanabilir. Örneğin kaynak stok 0-2 ise mağaza stoku 0, 3 ve üzeriyse gerçek stok gösterilebilir.
Evet. Yüzde, sabit tutar, fiyat aralığı, kategori, marka veya tedarikçi bazlı formüller uygulanabilir.
Evet. Belirlenecek kur kaynağı ve güncelleme periyoduna göre döviz dönüşümü yapılabilir.
Evet. Kaynağın fiyat modeline göre KDV ekleme, çıkarma veya oran bazlı hesaplama yapılabilir.
Evet. Psikolojik fiyat veya belirli basamaklara yuvarlama kuralları uygulanabilir.
XML'deki kaynak kategorinin mağazanızdaki hedef kategoriye bağlanmasıdır. Böylece tedarikçi kategori adı mağaza kategorinizle aynı olmak zorunda değildir.
Teknik olarak evet. Ancak kontrolsüz kategori çoğalmasını önlemek için çoğu projede mapping veya onaylı otomatik oluşturma tercih edilir.
XML gerekli varyant verisini sağlıyorsa ve hedef yazılım destekliyorsa renk, beden, numara, kapasite gibi varyantlar aktarılabilir.
Evet. Kaynak XML varyant bazında SKU, stok ve fiyat veriyorsa hedef sistemin varyant modeline göre işlenebilir.
Çoğu XML görsel URL'leri taşır. Bu adresler ürüne bağlanabilir veya görseller hedef sunucuya indirilebilir.
Evet, fakat yöntem önemlidir. Büyük kataloglarda akış tabanlı okuma, batch, cron/CLI veya queue ve veritabanı optimizasyonu gerekebilir.
Genellikle hayır. Uzun süreli işi tek HTTP isteğine bağlamak yerine parçalara bölmek daha güvenlidir.
Tedarikçinin XML'i ne sıklıkta güncellediğine, katalog boyutuna ve stok hassasiyetine göre belirlenir. Her proje için aynı süre doğru değildir.
Evet. Basic Auth, token veya benzeri erişim yöntemleri entegrasyona eklenebilir; erişim bilgileri güvenli yapılandırmada tutulmalıdır.
Sağlıklı tasarımda kaynak erişim hatası ile gerçek stok 0 birbirinden ayrılır. XML erişilemiyorsa mevcut veriyi koruyup hata kaydı üretmek tercih edilebilir.
Evet. Her kaynak için ayrı mapping ve aynı ürün birden çok kaynakta varsa öncelik/maliyet/stok kuralı tanımlanabilir.
İş kuralı gerekir. Öncelikli tedarikçi, en düşük maliyet, stokta olan kaynak veya başka bir seçim mantığı uygulanabilir.
Proje politikasına göre pasife alınabilir, stoku 0 yapılabilir, silinebilir veya olduğu gibi bırakılabilir. Otomatik fiziksel silme genellikle dikkatle kullanılmalıdır.
Hayır. Senkronizasyon alan bazlı sınırlandırılabilir; örneğin yalnız stok ve fiyat güncellenirken açıklama mağaza yöneticisinin kontrolünde kalabilir.
WooCommerce ürün ve varyasyon modeline uygun özel entegrasyon geliştirilebilir. Önce kullanılan tema, eklentiler ve özel ürün alanları incelenir.
Evet, sürüm ve kullanılan modifikasyonlara göre ürün, kategori, seçenek, dil ve mağaza ilişkileri analiz edilerek uyarlanabilir.
Evet, sürüm ve kombinasyon/özellik yapısı incelenerek entegrasyon uygulanabilir.
Kaynak kod ve veri modeli erişilebilirse çoğu özel projede entegrasyon katmanı geliştirilebilir. Önce mevcut kod ve veritabanı yapısı incelenir.
Kapalı sistemlerde kaynak kod yerine platformun resmi API ve import imkanları belirleyicidir. Yeterli erişim yoksa bazı işlemler mümkün olmayabilir.
Evet. Hedef sistemin beklediği şemaya göre XML → CSV, XML → JSON, API → XML veya özel feed dönüşümleri geliştirilebilir.
İhtiyaca göre mağazanızdaki ürünlerden başka sistemlerin okuyacağı özel XML feed üretimi de geliştirilebilir.
Çoğu encoding problemi kaynak karakter seti belirlenip UTF-8'e normalize edilerek çözülebilir. Bozuk kaynak verinin niteliği ayrıca incelenmelidir.
İyi tasarımda mümkün olduğunca ürün bazlı hata kaydı tutulur ve kritik olmayan tek ürün hatası kalan katalogun işlenmesini durdurmaz.
Alan veya düğüm yapısı değişirse mapping/parser güncellemesi gerekebilir. Zorunlu alan kontrolleri değişikliği erken fark etmeye yardımcı olur.
İlk fiyatlandırma için her zaman şart değildir; örnek XML ve site bilgisiyle ön inceleme yapılabilir. Geliştirme ve kurulum aşamasında uygun kaynak kod/hosting/API erişimi gerekir.
XML URL'si veya örnek dosya, site adresi, kullanılan altyapı, yaklaşık ürün sayısı ve istediğiniz stok/fiyat/kategori/varyant kurallarını iletmeniz yeterli bir başlangıçtır.
Süre; XML yapısı, ürün sayısı, varyantlar, hedef yazılım ve otomasyon kapsamına göre değişir. İnceleme yapılmadan sağlıklı sabit süre vermek doğru değildir.
Tek bir sabit fiyat yoktur. Basit tek seferlik aktarım ile çok tedarikçili, varyantlı ve sürekli senkron çalışan entegrasyonların kapsamı farklıdır. XML'inizi inceleyerek teklif sunuyoruz.
Site adresinizi, XML URL'nizi veya örnek XML dosyanızı ve hangi alanların aktarılmasını istediğinizi iletin. Ürün sayısı, kategori-varyant yapısı, güncelleme sıklığı ve fiyat kurallarına göre entegrasyon kapsamını netleştirip fiyat teklifi sunalım.