Ürün8 Eki 2026 · 7 dk

WooCommerce İadeleri API: Kurulum ve Hook'lar

DA
Defne Aksoy
Çözüm Mühendisi

WooCommerce, mağazalara vitrinleri üzerinde tam kontrol sağlar, ancak bu kontrol neredeyse hiç iade süreçlerine yansımaz. Kutudan çıktığı haliyle bir WooCommerce mağazasında sipariş durumları, wp-admin'de bir iade butonu vardır ve fazlası yoktur — self-servis iade portalı, otomatik uygunluk kuralları, kargo etiketi oluşturma ya da iade kararını stoğa geri yazacak yapılandırılmış bir yöntem bulunmaz. Haftada birkaç düzine siparişi olan bir mağaza için bu boşluk manuel e-posta yazışmalarıyla idare edilebilir. Ayda birkaç yüz siparişi geçtiğinde ise bu, her gün saatler yiyen ve iadeler geciktiğinde müşteri güvenini sessizce aşındıran bir destek darboğazına dönüşür.

Çözüm daha büyük bir destek ekibi değil — WooCommerce'in REST API'sini ve WordPress action hook'larını özel bir iade sistemine bağlamaktır. Bu rehber pratik kurulumu adım adım anlatır: WooCommerce REST API'ye karşı kimlik doğrulama, iade olaylarını tetiklemek için sipariş ve refund hook'larının kullanımı ve vitrin ile iade platformunuz arasında iade durumunu senkron tutmak. Bunu daha geniş bir entegrasyon perspektifinden değerlendiriyorsanız, iade API entegrasyon rehberimiz aynı mimarinin platform bağımsız versiyonunu ele alır; eklenti bazlı anlatım için WooCommerce iade kurulumu yazısı yönetim paneli tarafındaki yapılandırmaya daha derinlemesine iner.

WooCommerce neden harici bir iade API'sine ihtiyaç duyar

WooCommerce, ücretsiz, genişletilebilir olması ve mağazaları tek bir barındırma sağlayıcısına kilitlememesi sayesinde hâlâ dünya genelinde self-hosted çevrimiçi mağazaların büyük bir kısmını çalıştırıyor — bu, ecommerce platform kullanım raporlarında iyi belgelenmiş yapısal bir fark. Bu esneklik, tam olarak iadelerin bu kadar tutarsız olmasının nedenidir: her WooCommerce mağazası eklentiler, özel alanlar ve ödeme mantığının farklı bir kombinasyonudur, bu yüzden Shopify'ın App Store'unun üçüncü taraf iade uygulamalarını standartlaştırdığı gibi herkese uyan tek bir 'iade modülü' yoktur. API öncelikli bir iade katmanı bunu çözer çünkü temanızı ya da ödeme özelleştirmelerinizi umursamaz — yalnızca sipariş verisine, iade olaylarına ve bir webhook kanalına ihtiyaç duyar.

Adım 1: WooCommerce REST API'ye karşı kimlik doğrulama

WooCommerce'in REST API'si, WooCommerce > Ayarlar > Gelişmiş > REST API'den oluşturulan OAuth 1.0a tarzı consumer key/secret çiftlerini kullanır. Okuma/Yazma yetkisine sahip, iade platformunuzun hareket edeceği belirli kullanıcı hesabına özel — tam yönetici hesabına değil — bir anahtar oluşturun. Bu anahtar çifti, bir iade API entegrasyonunun GET /wp-json/wc/v3/orders ve GET /wp-json/wc/v3/orders/{id}/refunds üzerinden sipariş geçmişini, sipariş kalemlerini ve mevcut iade kayıtlarını çekmek için kullandığı şeydir.

  • API anahtarını yalnızca Okuma/Yazma ile sınırlayın; iş akışınız açıkça iptal işlemleri yapmadığı sürece asla Okuma/Yazma/Silme vermeyin.
  • Consumer secret düz metin olarak loglanmışsa mutlaka döndürün — WooCommerce oluşturulduktan sonra bunu tekrar göstermez.
  • Yalnızca HTTPS kullanın; sertleştirilmiş çoğu yapılandırmada REST API düz HTTP üzerinden anlamlı kimlik doğrulamayı reddeder.
  • Webhook kullanmıyorsanız polling'i hız sınırına tabi tutun — WooCommerce'de yerleşik bir hız sınırlayıcı yoktur ve yoğun bir döngü gerçek alışveriş yapan kullanıcılar için site performansını düşürebilir.

Adım 2: İade olaylarını tetiklemek için WordPress action hook'larını kullanın

REST API talep üzerine veri çekmek için iyidir, ancak duyarlı bir iade iş akışı push olaylara ihtiyaç duyar — burada WordPress ve WooCommerce action hook'ları devreye girer. Polling yapmak yerine, hafif bir özel eklenti (ya da tema güncellemelerine karşı daha güvenli olmasa da temanızın functions.php dosyasında birkaç satır) sipariş yaşam döngüsü olaylarına bağlanabilir ve ilgili bir şey olduğu anda iade platformunuza bir webhook gönderebilir.

HookNe zaman tetiklenirTipik iade API aksiyonu
woocommerce_order_status_completedSipariş Tamamlandı olarak işaretlenirİade uygunluk geri sayımını başlat
woocommerce_order_status_refundedTam veya kısmi iade işlenirİade onayını iade platformuna gönder
woocommerce_order_refundedBir WC_Order_Refund nesnesi oluşturulurİade edilen kalemleri ve tutarları senkronize et
woocommerce_order_status_changedHerhangi bir durum geçişiİptallerde iade penceresi mantığını güncelle
woocommerce_new_orderYeni sipariş oluşturulurGelecekteki iade sorguları için sipariş + kalemleri önbelleğe al

Minimal bir hook uygulaması şöyle görünür: woocommerce_order_status_completed üzerine sipariş ID'sini okuyan, SKU'lar, adetler ve sipariş tarihiyle bir payload oluşturan ve bunu iade platformunuzun alım (ingestion) uç noktasına POST eden bir callback kaydedin. Bu, yeniden deneme ve idempotency işlemenin daha derinlemesine ele alındığı iade API webhook'ları yazısında anlatılan aynı desendir.

Çoğu WooCommerce mağazasının yaptığı hata, iadeyi sürecin ortası yerine sonu gibi ele almaktır. İade sadece birkaç webhook olayından biridir — onay, etiket oluşturma, depoya teslim alma ve iadenin kendisi ayrı birer sinyale ihtiyaç duyar.

Adım 3: İade durumunu her iki yönde de senkron tutun

Bir iade API entegrasyonu, WooCommerce harici bir sistemi bilgilendirebildiğinde tamamlanmış sayılmaz — aynı zamanda geriye talimat kabul etmesi de gerekir. Müşterinin iadesi iade portalında onaylandığında ya da iade platformunun kendi hesabından bir iade işlendiğinde, bu karar WooCommerce'e geri yazılmalıdır ki mağaza personeli birbiriyle çelişen iki kayda bakmasın. Bu, WooCommerce REST API'nin gelen (inbound) tarafının uygulanması anlamına gelir: iade kaydını oluşturmak için POST /wp-json/wc/v3/orders/{id}/refunds, ve 'stoğa geri ekle' işaretliyse envanter ayarlamalarının otomatik gerçekleşmesi için hangi SKU ve adetlerin iade edildiğini belirten line_items.

  1. 1Müşteri self-servis portal üzerinden bir iade talebi gönderir.
  2. 2İade platformu, REST API üzerinden çekilen sipariş verisine göre uygunluğu doğrular.
  3. 3Onay, WooCommerce'e geri bir webhook tetikler ve isteğe bağlı olarak sipariş meta verisini bir iade referans numarasıyla günceller.
  4. 4İade edilen ürün depoya ulaştığında, iade platformu /orders/{id}/refunds'a bir iade nesnesi gönderir.
  5. 5WooCommerce'in yerleşik iade hook'ları tetiklenir, sipariş durumunu günceller ve yapılandırılmışsa envanteri stoğa geri ekler.

Bu kapalı döngü, gerçek bir iade API entegrasyonunu tek yönlü bir bildirim eklentisinden ayıran şeydir. McKinsey'nin perakende operasyonları üzerine araştırmasına göre, birbirine bağlı olmayan sistemlerden kaynaklanan operasyonel sürtünme, satış sonrası hizmette en büyük gizli maliyetlerden biridir — ve iadeler genellikle sipariş yaşam döngüsündeki en kopuk adımdır çünkü iadeler, envanter ve müşteri iletişimi genellikle birbiriyle otomatik olarak konuşmayan üç ayrı sistemde yaşar.

Uç durumları ele almak: kısmi iadeler, değişimler ve misafir siparişler

Kısmi iadeler en yaygın entegrasyon hatasıdır. WooCommerce tek tek kalemlerin ya da rastgele tutarların iade edilmesine izin verir ve webhook payload'ınızın 'tüm sipariş iade edildi' ile 'üç üründen biri iade edildi' arasındaki farkı ayırt etmesi gerekir — her woocommerce_order_status_refunded olayını tam iade olarak ele almak, iade metriklerini sessizce şişirir ve fraud tespitinde yanlış pozitifler yaratır. Değişimler daha da zordur: WooCommerce'in yerleşik bir değişim nesnesi yoktur, bu yüzden çoğu entegrasyon bir değişimi iade artı yeni sipariş olarak modeller ve bunları özel sipariş meta verisiyle bağlayarak destek ekibi ve analitiğin ilişkiyi takip edebilmesini sağlar. Misafir checkout siparişleri self-servis tarafında kimlik doğrulamayı zorlaştırır — giriş yapılacak bir müşteri hesabı olmadığından, iade portalı genellikle misafir iadelerini sipariş numarası artı fatura e-postası ya da posta koduyla doğrular ve bunu WooCommerce kullanıcı ID'si yerine REST API'den çekilen sipariş kaydıyla eşleştirir.

Webhook güvenilirliği ve yeniden denemeler

WordPress barındırması güvenilirlik açısından ciddi şekilde değişkendir — paylaşımlı barındırma ortamları yavaş giden webhook çağrılarında zaman aşımına uğrayabilir ve gerçek bir sistem cron'u yerine WP-Cron tabanlı zamanlama, woocommerce_order_status_completed üzerinde tetiklenen hook'ların düşük trafikli sitelerde gece boyunca gecikmesine neden olabilir. Entegrasyonunuzu, webhook'ların zaman zaman başarısız olacağını ya da geç geleceğini varsayarak kurun: sipariş ID'si artı olay tipi üzerinde idempotency anahtarları kullanın ve bir webhook'un kaçırdığı her şeyi yakalamak için REST API'ye karşı periyodik bir mutabakat işi çalıştırın.

Hata türüNedenÖnlem
Webhook hiç tetiklenmiyorDüşük trafik nedeniyle WP-Cron çalışmadıGerçek sistem cron'u ya da zamanlanmış mutabakat çekimi
Yinelenen webhook olaylarıEklenti çakışmaları aynı hook'u yeniden tetikliyorSipariş ID + olay tipi üzerinde idempotency anahtarı
Senkronizasyon sırasında kimlik doğrulama hatalarıDöndürülen consumer secret her yerde güncellenmediKimlik bilgilerini merkezileştirin, 401 yanıtlarında uyarı verin
Kısmi iade tam iade olarak okunuyorPayload kalemleri ayırmıyorİade payload ayrıştırmasında her zaman line_items'ı dahil edin

İyi enstrümante edilmiş bir iade sürecine sahip perakendeciler tutarlı biçimde hem daha düşük destek talebi hacmi hem de daha yüksek tekrar satın alma oranları bildiriyor; bu örüntü, iade deneyiminin müşteri yaşam boyu değerini nasıl etkilediğine dair NRF'in daha geniş sektör verilerinde de gözlemleniyor. Burada anlatılan teknik altyapı, bu deneyimi WooCommerce'e özgü olarak mümkün kılan temeldir — hiçbir şeyin hazır gelmediği, ancak doğru hook'lar ve doğru API disipliniyle her şeyin doğru şekilde inşa edilebileceği bir platform.

WooCommerce'in yerleşik bir iade API'si var mı?

Hayır. WooCommerce sipariş ve iadeler için bir REST API ile gelir, ancak özel bir iade nesnesi, iade durumu iş akışı ya da self-servis portal yoktur. Bir WooCommerce iade API entegrasyonu, REST API'yi action hook'ları ve harici bir iade platformuyla birleştirerek kurulur.

Hangi WooCommerce hook'u iade uygunluk kontrolünü tetiklemeli?

woocommerce_order_status_completed standart tetikleyicidir, çünkü çoğu mağaza iade penceresini satın alma tarihi yerine teslimat ya da sipariş tamamlanmasından başlatır. Bazı mağazalar kargoyu ayrı takip ediyorsa özel bir 'teslim edildi' durumunu da dinler.

Bir iade platformu WooCommerce'de doğrudan iade işleyebilir mi?

Evet, Okuma/Yazma yetkili bir REST API anahtarı kullanarak /wp-json/wc/v3/orders/{id}/refunds'a POST istekleri üzerinden. Payload'a line_items dahil etmek, iade edilen spesifik SKU'lar için envanter stoğa ekleme kurallarının doğru uygulanmasını sağlar.

Misafir checkout siparişleri self-servis iade portalıyla nasıl çalışır?

Misafir siparişlerinde WooCommerce kullanıcı hesabı olmadığından, iade portalı genellikle sipariş numarası artı fatura e-postası ya da posta koduyla kimlik doğrular, ardından bunu REST API'den çekilen sipariş kaydıyla çapraz kontrol eder.

Bir WooCommerce iade entegrasyonundaki en büyük teknik risk nedir?

Webhook güvenilirliği. Birçok WooCommerce sitesi gerçek bir sistem cron'u yerine WP-Cron'a dayandığından, hook tetikli webhook'lar düşük trafikli mağazalarda gecikebilir ya da kaybolabilir. Sessiz boşlukları önlemek için webhook'ları periyodik bir REST API mutabakat işiyle eşleştirin.

Kendi iadelerinizde görün.

Ücretsiz başlayın