merhaba arkadaÅŸlar
hali hazırda jetteknoloji eticaret alt yapısını kullanıyoruz ve başbuğ oto api den gelen verileri XML e çevirip verileri çekiyorduk.
bu sene başında başbuğ api alt yapısını değiştirdiği için bizim entegrasyonda patladı tekrardan yazılması gerekiyor.
Swagger altyapısına geçmişler sanırım örnek veri setleride aşağıda linkde mevcut
https://api.basbug.com.tr/material/swagger/index.html
bu veri setlerini kullanarak XML bağlantısı oluşturup ürünleri çekmek ve stok fiyat güncellemesi yapmak istiyorum.
konu hakkında yardımcı olabilecek arkadaş varmıdır. Ücreti nedir
Not: jetteknoloji değişen altyapıyı tekrar yazmaya çalışıyor fakat geçen seneki yazılımcıları yok sanırım ve sürüncemede gidiyor şuan
o yüzden uygun bir fiyat olursa hiç uğraşmayayım istiyorum.
Başbuğ otomotiv Api to XML yazdırmak istiyorum
10
●468
- 21-03-2024, 14:13:35
- 21-03-2024, 14:22:45[TALİP DEĞİLİM]
Merhaba açıklayıp fikir vereyim dedim. Öncelikle "swagger altyapıs"ı diye birşey yok. Veri tipi json dur önceden xml alıyormusunuz bu sefer json. Yani tek yapmanız gereken xlmToXX yerine jsonToXX yapmanız. ve json verisi cekmeniz. Swagger dediğiniz bir api arayüzdür yani UI ( user interface ).
Sizin tarafta xml ile kayıt varsa ozaman bir ara katman koyarsınız yazdırırsınız oda json to xml olur böylelikle o xml den yine cekersiniz. Tabi hangi dili kullanıyorsanız yazılım olarak o dilde yazılması lazım.
İyi forumlar. - 21-03-2024, 14:28:50merhaba @ozzyozmen; evet daha önce de jsondu hala json fakat yılbaşından önce sistemi güncellemeden önce farklı bir authentication metod kullanıyordu token için şuan swagger uı ye geçmişler ve mevcut çalışan json to xml kodları çalışamaz hale geldi jetteknoloji bunu 3aydır düzeltemedi bende forumdan destek almak istedim.
sistem çalışmadığı için zaten şuan postman ile stok bilgisi çekip excel ile içeri atıyorum ama çok uğraştırıyor 250k ürün var - 21-03-2024, 14:32:11işte bu bağlamda bir ara api yazdırmak işinizi görecektir. Api karşıdan çekecek ( apiler arası iletişim ) ve belirledğiniz bir geçici yada asıl veritabanınıza kayıt edecek böylelikle sizde ordan cekmeyedevam edebilirsiniz.
Yolu neden uzattım diceksiniz çünkü mevcut sitenizdeki yapıyı değştirmek yerine bir ara katman kısa vadede uzatma gibi gelsede uzun vadede her değişiklikte sadece aa katmanı değiştirir güncelelrsiniz böylelikle asıl yazılımınız etkilenmez. - 21-03-2024, 14:42:57mevcutta da o şekilde ilerliyorduk zaten ara bir katman php sayfası yazılmıştı json ile çektiği verileri bana xml çıktısı olarak veriyordu fakat dediğim gibi bazı yazılımcıları çıktı her halde 3aydır hala şu kod yapısını swagger uı ye göre düzenleyemediler aradaki katmanın
sizin anlattığınız ile bizim kullandığımız sistem aynı ve istediğim sistemde aynı aslında oruçlu kafa biraz anlatım dağınık oldu sanırım ilk mesajda - 21-03-2024, 14:45:53Tamamda tekrar diyorum Swagger UI ile alakası yok. O bir interface yani postman gibi farkı yok. Sizi etkileyen şey Swagger UI a geçilmesi değil. Büyük ihtimal ile auth kısmı ve / veya verinin linki. Ama UI sadece onun bir web UI aracılığı ile kullanımını sağlıyor ve kolaylastırıyor.
Yani auth kısmı değişmiş olabilir. Yada oluşan enpoint linkleri ama bu swagger UI a geçtiklerinden kaynaklanmıyor. - 21-03-2024, 14:48:43bizi etkileyen şey birincisi auth kısmı değişti ikincisi veri sorgulama metodları değişti yani linki
- 21-03-2024, 14:53:20İŞte auth sorunu ve endpoint linkleri onlar.
Şöyle düşün baktığımda linkle aslında sorgularda kullanılan endpoint : https://api.basbug.com.tr/material/D...?FirmaAdi=Test
Ve dönen json verisine örnek :
{ "dovizListesi": [ { "alis": "string", "satis": "string", "dovizCinsi": "string" } ] }Sizin auth sorununu çözdükten sonra yapmanız gereken şey bu veriyi cekecek php kodu yazmak bunun gibi ( php bilmemde ama deniyim )
Tabi bunu siz kendi sisteminize göre değiştirip databaseninize insert / update yapmak için kod yazmanız gerek.
<?php class DovizAPI { private $endpoint = 'https://api.basbug.com.tr/material/DovizBilgisiGetir'; public function getDovizBilgisi($firmaAdi) { $response = file_get_contents($this->endpoint . '?FirmaAdi=' . urlencode($firmaAdi)); return json_decode($response, true)['dovizListesi'] ?? false; } } // Kullanım örneği: $dovizAPI = new DovizAPI(); if ($dovizListesi = $dovizAPI->getDovizBilgisi('Test')) { foreach ($dovizListesi as $doviz) { echo "Döviz Cinsi: {$doviz['dovizCinsi']}, Alış: {$doviz['alis']}, Satış: {$doviz['satis']} <br>"; } } else { echo "API'den veri alınamadı."; } ?> - 21-03-2024, 15:00:26Farzetki sen veriyi bu apiden cektin ve json yapısı aldın onuda xml dönüştürmek istersen oda böyle birşey deneyebilirsin. Yani çıktısını xml olarak alabilirsin böylelikle xml yapıan devam edersin.
<?php // JSON verisi $json_data = '{ "dovizListesi": [ { "alis": "1.23", "satis": "1.25", "dovizCinsi": "USD" }, { "alis": "7.50", "satis": "7.55", "dovizCinsi": "EUR" } ] }'; // JSON verisini diziye çevir $data = json_decode($json_data, true); // XML oluştur $xml = new SimpleXMLElement('<root/>'); foreach ($data['dovizListesi'] as $item) { $currency = $xml->addChild('currency'); $currency->addChild('alis', $item['alis']); $currency->addChild('satis', $item['satis']); $currency->addChild('dovizCinsi', $item['dovizCinsi']); } // XML çıktısını al $xml_output = $xml->asXML(); // XML çıktısını ekrana yazdır echo $xml_output; ?>
Neyse fikir vermek için yazmıştım.
İyi forumlar...