
Çok az şirket tek bir sistemle çalışır. Odoo temel ERP olduğunda bile genellikle bir ödeme altyapısı, bir kargo firması, bir banka, bir çevrim içi mağaza, bir yoklama cihazı veya eski bir uygulamayla iletişim kurması gerekir. Bu bağlantıların kalitesi, verilerinizin güvenilir olup olmadığını ya da ekibinizin her ay farkları elle mutabık kılmakla mı uğraşacağını belirler.
Odoo 19 Enterprise katmanlı bir araç kutusu sunar: uygulamalardan yapılandırılan yerleşik bağlayıcılar, geliştiriciler için harici bir API, webhook alıp gönderebilen otomasyon kuralları ve canlı bağlantının mümkün olmadığı durumlar için dosya içe aktarma. Birçok sistem arasında orkestrasyon gerektiğinde ara yazılım araçları bunların üzerine konumlanır.
Kaynaklar hakkında bir not: Bu makale, Odoo'nun 19.0 sürümüne ait resmi dokümantasyonunu (odoo/documentation deposu) esas alır. Menüler, seçenekler ve plan koşulları sürümler ve barındırma türleri arasında değişebilir; bu nedenle her adımı üretimde uygulamadan önce mutlaka bir test veya çoğaltılmış veritabanında doğrulayın.

Doğru entegrasyon modelini seçin
Teknolojiden değil, iş ihtiyacından başlayın. Hangi verinin, hangi yönde, ne kadar hızlı taşınması gerektiğini ve ana kaydın sahibinin kim olduğunu sorun. Ardından ihtiyacı karşılayan en hafif seçeneği seçin.
- Odoo sağlayıcıyı zaten destekliyorsa yerleşik bir bağlayıcı kullanın; örneğin listelenen bir ödeme sağlayıcısı, kargo firması, banka senkronizasyonu sağlayıcısı veya Amazon bağlayıcısı.
- Başka bir uygulamanın Odoo kayıtlarını kendi zamanlamasıyla okuması veya yazması gerektiğinde harici API'yi kullanın.
- Harici bir sistemin bir olayı gerçekleştiği anda Odoo'ya iletmesi gerektiğinde gelen webhook kullanın.
- Odoo'nun bir değişiklikten sonra, örneğin bir kayıt oluşturulduğunda veya bir alan güncellendiğinde başka bir sistemi bilgilendirmesi gerektiğinde giden webhook kullanın.
- Birden fazla sistem söz konusu olduğunda, verilerin yoğun dönüşüm gerektirdiğinde veya merkezi yeniden deneme ve izleme ihtiyacınız olduğunda ara yazılım kullanın.
- Karşı taraf yalnızca dosya sağlıyorsa, örneğin CAMT.053, OFX, QIF, CSV veya XLSX biçimindeki banka ekstreleri, dosya içe aktarmayı kullanın.
Odoo 19'da harici API: JSON-2 ve API anahtarları
Odoo 19, ORM'nin bir bölümünü HTTP üzerinden sunan JSON-2 API'yi tanıtır. Her çağrı, /json/2/ ve ardından model adı ile yöntem adından oluşan bir uç noktaya yapılan bir POST isteğidir; örneğin res.partner modelinin search_read yöntemi. İstek gövdesi, yöntem argümanlarını JSON olarak taşır.
Kimlik doğrulama, Authorization başlığında bearer token olarak gönderilen bir API anahtarıyla yapılır. Kullanıcı ID'si ve parolayla ayrı bir oturum açma adımı yoktur; anahtar kullanıcıyı tanımlar ve entegrasyon o kullanıcının erişim haklarıyla çalışır.
Manuel olarak anahtar oluşturmak için kullanıcı Tercihlerinizi açın, Hesap Güvenliği bölümüne gidin ve Yeni API Anahtarı'nı seçin. Bir açıklama ve süre zorunludur; anahtar değeri yalnızca bir kez gösterilir, bu yüzden onu hemen güvenli bir gizli bilgi kasasında saklayın. Dokümantasyon, anahtarların üç aydan uzun süreli oluşturulamayacağını belirtir; bu nedenle en baştan bir anahtar yenileme rutini planlayın.
Tek bir sunucu birden fazla veritabanını barındırdığında, isteğe bağlı X-Odoo-Database başlığı Odoo'ya çağrının hangi veritabanını hedeflediğini bildirir. Bir ters vekil sunucunun (reverse proxy) arkasında, Host başlığının Odoo'ya doğru şekilde ulaştığından emin olun.
Her JSON-2 çağrısı kendi veritabanı işleminde (transaction) çalışır: Başarılı olduğunda kaydedilir, hata durumunda geri alınır. Birden fazla çağrıyı tek bir işlemde zincirleyemezsiniz; bu nedenle verileri yarım güncellenmiş bırakabilecek çok sayıda küçük çağrı yerine, ilgili işi yapan tek bir yöntemi, örneğin search_read veya bir iş yöntemini tercih edin.
Hatalar, 4xx veya 5xx HTTP durum koduyla ve bir ad ile mesaj içeren bir JSON gövdesiyle döndürülür. İstemci kodunuz her ikisini de okumalı ve günlüğe kaydetmelidir.
Eski XML-RPC ve JSON-RPC: Geçişinizi planlayın
Mevcut birçok entegrasyon eski XML-RPC uç noktalarını veya JSON-RPC uç noktasını kullanır. Odoo 19'da bunlar kullanımdan kaldırılmış (deprecated) durumdadır ve resmi dokümantasyon, Odoo 22'de tamamen kaldırılmalarının planlandığını belirtir. Bugün hâlâ çalışırlar; ancak yeni projeler JSON-2 üzerine kurulmalı, mevcut olanlar ise listelenip yükseltme yol haritanızın bir parçası olarak taşınmalıdır.
- Eski uç noktaları çağıran tüm betiklerin, bağlayıcıların ve üçüncü taraf araçların envanterini çıkarın.
- Kullanıcı adı ve parolayla kimlik doğrulamayı, her entegrasyon için ayrılmış API anahtarlarıyla değiştirin.
- Çağrı başına tek işlem davranışı nedeniyle, mümkün olduğunda çok adımlı dizileri tek çağrılar hâlinde yeniden yazın.
- Üretim trafiğini geçirmeden önce taşınan sürümü çoğaltılmış bir veritabanında test edin.
Plan uygunluğu da önemlidir. Dokümantasyon, harici API üzerinden verilere erişimin One App Free veya Standard planlarda değil, yalnızca Custom Odoo fiyatlandırma planlarında mümkün olduğunu belirtir. Odoo Online üzerinde API tabanlı bir entegrasyon tasarlamadan önce aboneliğinizi kontrol edin.
Webhook'lar ve otomasyon kuralları
Otomasyon kuralları, Odoo'nun özel modüller olmadan olaylara tepki vermesini sağlar. Odoo 19 Enterprise'da bunları Studio'dan Otomasyonlar menüsüyle yönetirsiniz; gelen webhook'ların da Studio'da kendi Webhook'lar girişi vardır. Geliştirici modu, hedef model seçimi dahil daha fazla kontrol sağlar.
Gelen bir webhook için Webhook ile tetikleyicisine sahip bir kural oluşturun. Odoo URL'yi otomatik olarak oluşturur; harici sistem bu URL'ye JSON yükü içeren bir POST isteği gönderir. Hedef kayıt kodu, Odoo'ya yükün hangi kayda ait olduğunu bildirir; Yapılacak Eylemler sekmesi ise sonrasında ne olacağını tanımlar. Bir kaydı güncellemek yerine kayıt oluşturmanız gerektiğinde bu genellikle bir Kodu Çalıştır eylemidir.
Geliştirme ve sorun giderme sırasında Çağrıları Günlüğe Kaydet seçeneğini etkinleştirin. Bu seçenek URL'ye yapılan isteklerin geçmişini kaydeder; bu geçmişi kuraldaki Günlükler akıllı düğmesinden açabilirsiniz.
Webhook URL'sini gizli bir bilgi olarak ele alın. Dokümantasyon, URL'nin paylaşılmasının veritabanına istenmeyen erişim sağlayabileceği konusunda uyarır. URL açığa çıkarsa yeni bir URL oluşturmak için Gizli Anahtarı Yenile seçeneğini kullanın ve harici sistemi güncelleyin.
Giden bildirimler için bir kurala Webhook Bildirimi Gönder eylemini ekleyin. Bu eylem, seçtiğiniz alanların değerlerini belirttiğiniz URL'ye bir POST isteğiyle gönderir; örnek bir yük de canlıya geçmeden önce yapıyı kontrol etmenize yardımcı olur.
Kodu Çalıştır eylemleri yazarken, hataların yalnızca sunucu günlüklerinde değil fonksiyonel kullanıcılara da görünür olması için mesajları veritabanı günlük tablosuna yazan log fonksiyonunu kullanın.
Studio, Odoo Enterprise'ın bir parçasıdır. Community'de Studio arayüzü bulunmaz; bu nedenle aynı ihtiyaçlar genellikle geliştirici modundaki yapılandırmayla veya bir geliştiricinin bakımını yaptığı küçük özel modüllerle karşılanır.
Yaygın entegrasyonlar için yerleşik bağlayıcılar
Kod yazmadan önce Odoo'nun sağlayıcıyı zaten destekleyip desteklemediğini kontrol edin. Yerleşik bağlayıcıların bakımı her sürümle birlikte yapılır ve genellikle en güvenli seçenektir.
- Ödeme altyapıları: Bunları Muhasebe, Web Sitesi veya Satış uygulamasında Yapılandırma > Ödeme Sağlayıcıları menüsünden yapılandırın. Listelenen sağlayıcılar arasında Stripe, Adyen, PayPal, Paymob, Mollie, Razorpay ve diğerleri bulunur. Kimlik bilgilerini Kimlik Bilgileri sekmesine girin ve önce sandbox kimlik bilgileriyle Test modunu kullanın; fatura numaralandırmasını korumak için bunu ideal olarak çoğaltılmış bir veritabanında yapın. Ödeme yevmiye defteri Banka türünde olmalıdır.
- Kargo firmaları: Bunları Envanter ayarlarındaki Kargo Bağlayıcıları bölümünden etkinleştirin. Desteklenen bağlayıcılar arasında DHL Express, FedEx, UPS, Sendcloud, EasyPost ve diğerleri bulunur. Her kargo yöntemi bir test ortamında başlar; üretime geçmek, kargo firmasının faturalandırabileceği gerçek etiketler oluşturur, bu yüzden önce ücretleri ve etiketleri doğrulayın. Hata Ayıklama İstekleri seçeneği, karşılıklı gönderilen mesajları günlüğe kaydeder.
- Bankalar: Banka senkronizasyonu, işlemleri Plaid, Yodlee, Salt Edge, Ponto, Enable Banking ve Basiq gibi üçüncü taraf sağlayıcılar aracılığıyla içe aktarır ve geçerli bir Enterprise aboneliği gerektirir. Bankanız kapsam dışındaysa ekstre dosyalarını Muhasebe panosundaki Banka yevmiye defterinden içe aktarın.
- E-ticaret ve pazar yerleri: Odoo'nun kendi e-Ticaret uygulaması aynı veritabanını kullanır, dolayısıyla bağlayıcıya gerek yoktur. Amazon için Amazon Bağlayıcısı, siparişleri satış siparişlerine senkronize eder ve ürünleri dahili referansa göre eşleştirir.
- Yoklama cihazları: Yoklamalar uygulaması, ayrılmış bir cihazda kiosk modunu ve arka uçtan giriş kaydını destekler. Diğer üreticilerin biyometrik terminalleri resmi dokümantasyon kapsamında değildir; bu nedenle genellikle girişleri Odoo'ya aktaran özel bir modül veya ara yazılım aracılığıyla bağlanırlar.
n8n gibi ara yazılımlar
n8n gibi ara yazılım platformları Odoo ile diğer sistemler arasında konumlanır. Bunlar Odoo'nun parçası değil, üçüncü taraf araçlardır ve Odoo ile yukarıda açıklanan aynı harici API ve webhook'lar aracılığıyla iletişim kurarlar.
Tek bir olayın birden fazla sistemi güncellemesi gerektiğinde, alan eşleştirmesi karmaşık olduğunda veya merkezi hata yönetimi ve yeniden denemelerle görsel bir akış istediğinizde faydalıdırlar. Bunun bedeli; barındırılması, güvence altına alınması, izlenmesi ve yükseltilmesi gereken bir bileşen daha olmasıdır; API erişimine ilişkin aynı plan koşulları da geçerliliğini korur.
Tasarım kuralları: idempotency, hata yönetimi ve günlük kaydı
Entegrasyon sorunlarının çoğu tekrarlanan mesajlardan, kısmi hatalardan ve sessiz hatalardan kaynaklanır. İlk günden bunlara göre tasarım yapın.
- Her yazma işlemini idempotent yapın: Harici referansı Odoo kaydında saklayın ve oluşturmadan önce kontrol edin; böylece yeniden gönderilen bir webhook veya tekrarlanan bir çağrı mükerrer sipariş veya ödeme oluşturmaz.
- Her alanın sahibinin kim olduğuna karar verin ve iki sistemin aynı değerin üzerine yazmasına asla izin vermeyin.
- Her JSON-2 çağrısı kendi işlemi olduğundan, mümkün olduğunda bir iş operasyonunu tek bir çağrıda tutun.
- Yalnızca geçici hatalarda, giderek artan bekleme süreleriyle yeniden deneyin ve kalıcı hataları bir inceleme kuyruğuna gönderin.
- Çağrıları Günlüğe Kaydet, Hata Ayıklama İstekleri veya ara yazılımınızın geçmişini kullanarak her alışveriş için isteği, yanıtı ve Odoo kayıt referansını günlüğe kaydedin.
- İlk haftalarda hacimleri ve hataları her gün izleyin; ödemeler, sevkiyatlar ve banka bakiyeleri gibi toplamları sistemler arasında mutabık kılın.
Güvenlik kontrol listesi
- Yalnızca entegrasyonun ihtiyaç duyduğu erişim haklarına sahip ayrılmış bir entegrasyon kullanıcısı oluşturun ve API anahtarını bu kullanıcıdan üretin.
- Her entegrasyon için bir anahtar kullanın, amacını açıklamaya yazın, kısa bir süre seçin ve süresi dolmadan önce yenileyin.
- Anahtarları ve webhook URL'lerini asla elektronik tablolarda, sohbet mesajlarında veya kaynak kodda değil, bir gizli bilgi yöneticisinde saklayın.
- Bir tedarikçi ilişkisi sona erdiğinde veya bir sızıntıdan şüphelenildiğinde anahtarları derhal iptal edin ve webhook gizli anahtarlarını yenileyin.
- Her zaman HTTPS kullanın ve her entegrasyonu üretimde etkinleştirmeden önce çoğaltılmış bir veritabanında oluşturup test edin.
1CBMS nasıl yardımcı olabilir?
1CBMS, Mısır ve Irak'taki şirketler için Odoo 19 entegrasyonları tasarlar ve uygular: ödeme sağlayıcılarının, kargo firmalarının ve banka akışlarının yapılandırılmasından JSON-2 API ve webhook entegrasyonları geliştirmeye, eski XML-RPC betiklerinin taşınmasına ve yoklama cihazlarının ve şirket içi sistemlerin özel modüller veya ara yazılımlar aracılığıyla bağlanmasına kadar. Veri sahipliği ve akışlarının haritasıyla başlar, her şeyi çoğaltılmış bir veritabanında test eder ve ekibinizin rakamlara güvenebilmesi için açık bir dokümantasyon ve izleme düzeni teslim ederiz. Entegrasyon yapınızı gözden geçirmek için www.1cbms.com üzerinden bizimle iletişime geçin.