İçeriğe atla
M. Fehmi ToktayYazılım ve Shopify geliştiricisi

Geliştirme

Shopify entegrasyon ve toplu veri işleri

Mağazanın dışarıyla konuştuğu taraf. Muhasebe, kargo, ERP ve pazaryeri bağlantıları; bir de kimsenin görmediği ama katalog kalitesini belirleyen toplu veri işleri.

Buradaki asıl risk hata değil, sessiz hata: bir alan yanlış yazılır, kimse fark etmez, aylar sonra Google eşleştirmesi tutmaz. Bu yüzden her toplu iş loglanır ve geri alınabilir kurulur.

Neleri kapsıyor

Dış sistem bağlantısı

Muhasebe, e-fatura, kargo, ERP ve pazaryeri entegrasyonları. Webhook kurulumu, imza doğrulama, hata durumunda tekrar deneme, kuyruk ve log.

Toplu ürün ve fiyat işleri

Binlerce kayıtta başlık, açıklama, etiket, fiyat, varyant ve metafield güncellemesi. İş gruplar hâlinde, log dosyasına yazarak yürür; yarıda kalırsa kaldığı yerden devam eder.

Platform geçişi

Başka bir platformdan Shopify'a taşıma. Geçişte asıl mesele veri değil yönlendirme haritası — eski adresler yenisine bağlanmazsa arama sıralaması gider.

Katalog ve veri düzeni

Ürün türü, kategori, etiket ve koleksiyon kuralları. Kopya içerik üreten koleksiyonların temizlenmesi, görsel alt metinleri, ürün künyesinin metaveriye bağlanması. Bir katalogda ürün türü alanında 71 farklı değer bulmuştum; sayılar gramaj değil sıra numarasıydı ve katalog eşleştirmesini kırıyordu.

Admin GraphQL APIBulk OperationsWebhookURL RedirectMetafieldCSV / feed

Webhook imzası doğrulanmadan hiçbir şey işlenmez

entegrasyon js
const gelen = req.get('X-Shopify-Hmac-Sha256') || '';
const hesaplanan = crypto
  .createHmac('sha256', process.env.SHOPIFY_API_SECRET)
  .update(hamGovde, 'utf8')
  .digest('base64');

const a = Buffer.from(hesaplanan, 'base64');
const b = Buffer.from(gelen, 'base64');

// uzunluk farkliysa timingSafeEqual firlatir, once onu ele
if (a.length !== b.length || !crypto.timingSafeEqual(a, b)) {
  return res.status(401).send();
}

İmza doğrulanmayan bir webhook ucu, herkesin veri yazabildiği açık bir kapıdır. Ayrıca aynı olay birden çok kez gelebilir — işlem idempotent yazılır, ikinci sefer bir şey değiştirmez.

Nasıl yürüyor

  1. 01

    Ne olduğunu ölçerim

    İlk iş mevcut durumu rakamla tespit etmek. Hangi sayfada, hangi adımda, kaç kayıtta sorun var — bu bilinmeden yazılacak kod tahmine dayanır.

  2. 02

    Kapsamı yazılı veririm

    Ne yapılacağı, neyin dışarıda kaldığı ve teslim biçimi baştan yazılır. Sonradan büyüyen iş ikimize de pahalıya patlar.

  3. 03

    Ayrı temada geliştiririm

    Tema işleri yayınlanmamış bir kopyada yazılır, önizleme adresiyle doğrulanır, sonra canlıya alınır. Uygulama işlerinde geliştirme mağazası kullanılır.

  4. 04

    Ölçerek teslim ederim

    Teslimde “yapıldı” demek yetmez; öncesi ve sonrası aynı yöntemle ölçülür. Toplu veri işlerinde eski değerlerin yedeği ve geri alma script'i bırakılır.

Teknik yaklaşım →

Sık sorulanlar

Kaç ürüne kadar çalışıyor?

Sayı sınırı yok. Binlerce kayıtlık işlerde tek tek istek yerine toplu işlem uçları kullanılıyor, sorgu maliyeti ve hız limiti yönetimi baştan kuruluyor.

Bir şey yanlış giderse geri alınabilir mi?

Evet. Değiştirilen alanların eski değerleri kimlikleriyle birlikte dosyaya yazılır ve geri yükleme script'i teslim edilir. Yedek almadan toplu iş başlatmam.

Koleksiyon veya sayfa silinecekse ne oluyor?

Önce 301 yönlendirmesi kurulur, sonra silinir, sonra yönlendirmenin çalıştığı doğrulanır. Shopify bir yönlendirmeyi yalnız o adres başka türlü açılmadığında devreye sokar; sıra bozulursa yönlendirme uyur ya da adres bir süre 404 verir.

Entegrasyonun çalıştığını nasıl takip ediyoruz?

Her iş log tutar. Hata durumunda tekrar deneme ve bildirim kurulur; sessizce duran entegrasyon en pahalı hatadır.

Bu işin sizdeki karşılığı ne?

Mevcut durumu anlatın; ölçüp ne gerektiğini söyleyeyim.