• Çar. May 27th, 2026

Fatih ŞAHİN

Not defterim.

Firmamıza ait trendyol yemek te 5 adet mağaza bulunmaktadır. Bu mağazalar ile farklı konumlarda unlu mamul ürünlerinin satışı yapılmaktadır. Genelde belirli bir sayının üzerinde mağazası bulunan işletmeler için yemek sepeti trendyol gibi sistemlerin doğrudan müşteri desteği çok iyi ama orta yada biraz daha küçük boyutta bir işletme iseniz bazı konuları sizin halletmeniz gerekmektedir. Örneğin bizim firmamızda trendyol yemek sisteminde 5 adet mağaza ve her mağazada 100′ ün üzerinde ürün bulunmaktadır. Hal böyle olunca ülkenin ekonomik durumu da göz önüne alındığında fiyat geçişleri ciddi bir iş yükü ve hata yapmaya müsait hale gelmektedir. Genel de işletmelerin bel kemiği olan kutsal excel ile hazırlanan fiyat listelerinin Python aracılığıyla trendyol api sistemini kullanarak toplu fiyat güncellemelerinin nasıl yapılacağını anlatacağım.

https://partner.trendyol.com/account/info

Bu adresten “Entegrasyon Bilgileri” başlığı altında api bilgilerimiz mevcuttur.

Şimdi gelelim api ile iletişim kısmına.

https://developers.trendyol.com/

Bu adreste trendyol api hakkında dokümantasyon mevcut. Fakat bana kalırsa çokta yeterli ve açıklayıcı bir dokümantasyon bilgisi içermiyor. Öncelikle trendyol da ki ürünlerimizin bilgilerini almamız gerekiyor. Benim tüm mağazalarımdaki ürünler aynı o yüzden herhangi bir mağazaya ait ürünlerin id kategori ve fiyat bilgisini bir excel e aktaracağım.

import requests
from trendyol_grup import urun_detay_getir
# Trendyol API bilgileri

supplierid = '99999999' # Satıcı Cari id mizi buraya yazıyoruz. 
token = 'd3djA8RKDVTYxWGA9YU6TSEQL6eWV0M0X5vSTRNSjRVmaTk='
restaurantid = '111111' # Restourant id niz. 
# API Endpoint ve parametreleri

url = f'https://api.trendyol.com/mealgw/suppliers/{supplierid}/restaurants/{restaurantid}/products'

headers = {
'Authorization': f'Basic {token}',
'Content-Type': 'application/json',
}

res = requests.get(url, headers=headers)

products = res.json()["products"]

from dataclasses import dataclass
@dataclass
class Product:
id: int
price: int | float
title: str

_products = []
for pd in products:
product = Product(id=pd.get("id"), price=pd.get("sellingPrice"), title=pd.get("name"))

p = [product.id, product.title, product.price]
urun_detaylari = urun_detay_getir(res)
sonuclar = list(filter(lambda data: data["id"] == product.id, urun_detaylari))
if not sonuclar:
print("Kategori bulunamadı.")
else:
print(sonuclar[-1].get("kategori"), product.id, product.title, product.price)
_products.append(product)

import pandas

ids = list(map(lambda p: p.id, _products))
titles = map(lambda p: p.title, _products)
prices = map(lambda p: p.price, _products)

kategoriler = []

for id in ids:
urun = list(filter(lambda urun: urun.get("id") == id, urun_detaylari))
if urun:
kategoriler.append(urun[-1].get("kategori"))


df = pandas.DataFrame({"kategori":kategoriler, "id": ids, "title": titles, "price": prices})
df = df.sort_values("kategori")
df.to_excel("111111.xlsx")

Evet artık elimde “111111.xlsx” isimli restourant ürünlerinin bilgisini içeren bir excel var. Bunu kendi sisteminizdeki ürünler ile id ile birleştirebilirsiniz. İleride tek tek bu işlemi yapmak yerine mevcuttaki sisteminizde kayıtlı kalır.

Şimdide hazırladığımız excel dosyası ile tüm mağazalar için fiyat geçiş işlemini yapalım. Trenyol bizden güncelleme yapmak için aşağıdaki gibi bir json datası göndermemizi istiyor. Burada sadece belirli bir restoran için fiyat geçişi yapacaksanız <span class="token-line"><span class="token string-property property">restaurantId</span></span>sini de belirtmeniz isteniyor. Fakat biz tüm restoranlarımızda fiyat geçişi yapacağımız için trendyol api ye <span class="token-line"><span class="token string-property property">productId</span></span>ve <span class="token-line"><span class="token string-property property">sellingPrice</span></span>bilgilerini içeren bir json datası ileteceğiz ve tüm restoranlar için fiyat geçişi gerçekleşecek.

Örnek Servis İsteği

<span class="token-line"><span class="token punctuation">{</span><span class="token plain"></span>
</span><span class="token-line"><span class="token plain">  </span><span class="token string-property property">"items"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation">[</span><span class="token plain"></span>
</span><span class="token-line"><span class="token plain">    </span><span class="token punctuation">{</span><span class="token plain"></span>
</span><span class="token-line"><span class="token plain">      </span><span class="token string-property property">"restaurantId"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token number">100</span><span class="token punctuation">,</span><span class="token comment">// Restoran id'si (zorunlu değil)</span><span class="token plain"></span>
</span><span class="token-line"><span class="token plain">      </span><span class="token string-property property">"productId"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token number">1</span><span class="token punctuation">,</span><span class="token plain"> </span><span class="token comment">// Ürün id'si</span><span class="token plain"></span>
</span><span class="token-line"><span class="token plain">      </span><span class="token string-property property">"sellingPrice"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token number">15.50</span><span class="token plain"> </span><span class="token comment">// Ürün satış fiyatı</span><span class="token plain"></span>
</span><span class="token-line"><span class="token plain">    </span><span class="token punctuation">}</span><span class="token plain"></span>
</span><span class="token-line"><span class="token plain">  </span><span class="token punctuation">]</span><span class="token plain"></span>
</span><span class="token-line"><span class="token plain"></span><span class="token punctuation">}</span></span>

Öncelik “trendyol_fiyat_gecis.xlsx” isimli bir excel dosyası hazırladım ve bu dosyada fiyat geçişi yapacağım ürünün id si ve yeni fiyat bilgisi var. Dosya ismi sütun ismi vs. bunların hepsini siz kendinize göre uyarlayınız.  IDve PRICEisimli iki sütunumda bilgiler mevcut. Öncelikle excel dosyasını python ile okuyup bu id ve price bilgilerini içeren sütundaki verileri json datası haline getiriyoruz. Çünkü trendyol bizden json olarak gönderim sağlamamızı istiyor.

import requests
import pandas as pd
import json

# Trendyol API bilgileri
supplierid = '99999999' # Satıcı Cari id mizi buraya yazıyoruz. 
token = 'd3djA8RKDVTYxWGA9YU6TSEQL6eWV0M0X5vSTRNSjRVmaTk='

# API Endpoint ve parametreleri
url = f'https://api.trendyol.com/mealgw/suppliers/{supplierid}/products/price'

# Excel dosyasını okuma
excel_file = 'trendyol_fiyat_gecis.xlsx' # Excel dosyasının adını güncelleyin
sheet_name = 'tablo' # Urun sayfasının adını güncelleyin
df = pd.read_excel(excel_file, sheet_name=sheet_name)

# JSON verisi oluşturma
products_to_update = []

for index, row in df.iterrows():
product_id = row['ID'] # Sütun ismini doğru şekilde güncelleyin
new_price = row['PRICE'] # Sütun ismini doğru şekilde güncelleyin

product_info = {
"productId": int(product_id),
"sellingPrice": float(new_price)
}

products_to_update.append(product_info)
headers = {
'Authorization': f'Basic {token}',
'Content-Type': 'application/json',
}

# JSON verisi
request_data = {
"items": products_to_update
}

# API çağrısı
response = requests.post(url, json=request_data, headers=headers)
if response.status_code == 200:
print("Ürün fiyatları güncellendi.\n")
print(f"batchRequestId: {response.text}")
else:
print(f"API çağrısı başarısız. Hata kodu: {response.status_code}")

Evet artık fiyat geçişimiz sağlandı. Burada amaç hem zamandan kazanmak hem de hata ihtimalini ortadan kaldırmak. Gündelik işlerimin tamamında bu mantık ile hareket edip acaba bunun böyle yapılanı var mıdır diyerek yola çıkıyorum ve hem güzel bir hobi hem de kendimi geliştirmem için güzel fırsatlar buluyorum.

Aslında bu sistemi direk excel vba ile de yapabiliriz. Ama hem python bilgimi geliştirmek istediğimden hem de performansından dolayı python ile yapmayı tercih ettim. Bir sonraki paylaşımda bunu excel vba ile nasıl yapabileceğimizi yazmış olacağım.

 

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir