Ana içeriğe atla

C# İle HepsiBurada Web Servis (API Entegrasyon) İşlemleri

Merhabalar, bu ilk yazımızda özetle Hepsiburada Test Ortamında API üzerinden ürünlerin çekilmesi, ayrıca ürünlerin fiyat ve adet gibi kısımlarında değişiklik yapılması işlemlerine değineceğiz.

Öncelikle Hepsiburada kanalında yapılması gerekenleri yine Hepsiburada'dan alıntılayarak listeleyelim.

Hepsiburada'da entegrasyon süreci nasıl işler?
  1. Öncelikle mağazanıza ait tüm sözleşme ve diğer evrakların Hepsiburada.com'a iletilmiş, carinizin açılmış ve satıcı portal bilgilerinizin size iletilmiş olması gerekmektedir.
  2. Mağazanıza ait ürünlerin Hepsiburada.com kataloğuna eklenmiş ve satıcı portalınızda listelenmiş olması gerekmektedir.
  3. Daha sonra entegrasyon yapmak istediğiniz aracı firma bilgileri ve diğer bilgileri paylaşmanızı istiyoruz. Eğer entegrasyonu kendi teknik ekibinizle gerçekleştirecekseniz bize bildirmenizi rica ediyoruz.
  4. Gerekli teknik tanımlamalar IT departmanımız tarafından yapıldıktan sonra test ortamında entegrasyon işlemleriniz kontrol edilir.
  5. Entegrasyon testlerini bitirdikten sonra sistem canlıya alınır.
  6. Artık stok ve fiyat takibini daha kolay yapabilir ve operasyonel anlamda işlemlerinizi daha rahat takip edebilirsiniz.

Hepsiburada'da entegrasyon test sürecinde yapılması beklenen işlemler nelerdir?
  1. Öncelikle test ortamı için Hepsiburada tarafından oluşturulan 5 adet test ürününün listesini çekmeniz,
  2. Çektiğiniz bu ürünlerin adet, fiyat gibi bilgilerini değiştirerek Hepsiburada test ortamına yüklemeniz,
  3. Yine Hepsiburada tarafından test ortamınıza yüklenecek test siparişlerinin çekilmesi tarafınızca yapılması gereken işlemlerdir.

Öncelikle Hepsiburada'ya başvurup tarafınıza API Test Ortamınının açılmasını istediğinizi ve gerekli kullanıcı adı ve parolalarını temin ettiğinizi varsayıyoruz.

Gelelim kod tarafına...

Ürünlerin Listesinin Alınması


Öncelikle Projemize RestSharp dll'yi dahil ediyoruz.
Sonrasında usinglerimizi ekliyoruz.

using RestSharp;
using System;
using System.Net;
using System.Text;
using System.Windows;

ve yordamımız :

IRestResponse Urunlistegetir(string username, string password,string merchantId)
 {
var client = new RestClient("https://listing-external-sit.hepsiburada.com/listings/merchantid/"+merchantId);
string svcCredentials = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(username + ":" + password));
var request = new RestRequest(Method.GET);
request.AddHeader("merchantid", merchantId);
request.AddHeader("content-type", "application/xml");
request.AddHeader("Authorization", "Basic " + svcCredentials);
IRestResponse response = client.Execute(request) as RestResponse;
return response;
}


Yordamda neler oluyor ?


Hepsiburada bizden header'ında base64 formatında kullanıcı adı ve parolasını istiyor, ayrıca merchantId de header de olmalı. Yine header content-type application/xml tanımlamasını içermeli. Tüm bunları header'a ekleyip veriyi Hepsiburada'ya get metoduyla gönderiyoruz. Geriye dönen bilgiyi IRestResponse olarak yordamımızdan döndürüyoruz.


Şimdi Urunlistegetir Yordamımızı Çağıralım


void UrunListeGoster()
{
    string username="xx";
    string password="xx";
    string merchantId="xx";

      IRestResponse urunListe =Urunlistegetir(username,password,merchantId);
            //Durum Kodu 'Ok' ise
           if(urunListe.StatusCode == HttpStatusCode.OK)
            {
                MessageBox.Show(urunListe.Content);
            }
              //Durum Kodu 'Ok' değilse
            else
            {
                MessageBox.Show(urunListe.StatusCode.ToString());
            }
}


Ürünlerin Güncellenmesi


Hepsiburada üzerinde ürünlerin fiyat, stok adedi, bir defada maksimum satınalma miktarı gibi alanlar güncellenebiliyor.

Bu güncellemeyi aşağıda gösterilen string üzerinde yapıyoruz. Daha sonra upload yapıyoruz.

stringimiz
var strXml = @"<listings>
      <listing>
        <UniqueIdentifier></UniqueIdentifier>
        <HepsiburadaSku>OTYAGMBL0001</HepsiburadaSku>
        <MerchantSku>XX-1</MerchantSku>
        <ProductName>Mobil 1 Fuel Economy 0W-30 4lt Benzinli Dizel Motor Yağı(Üretim Yılı:2017)</ProductName>
        <Price>908</Price>
        <AvailableStock>100</AvailableStock>
        <DispatchTime>1</DispatchTime>
        <CargoCompany1>Yurtiçi Kargo</CargoCompany1>
        <CargoCompany2>Aras Kargo</CargoCompany2>
        <CargoCompany3>Horoz Lojistik</CargoCompany3>
        <MaximumPurchasableQuantity>4</MaximumPurchasableQuantity>
     </listing>
      <listing>
        <UniqueIdentifier></UniqueIdentifier>
        <HepsiburadaSku>ZYHPCOCACCOL055</HepsiburadaSku>
        <MerchantSku>COLA123</MerchantSku>
        <ProductName>Coca Cola Cam 200 Ml</ProductName>
        <Price>6000</Price>
        <AvailableStock>100</AvailableStock>
        <DispatchTime>1</DispatchTime>
        <CargoCompany1>Yurtiçi Kargo</CargoCompany1>
        <CargoCompany2>Aras Kargo</CargoCompany2>
        <CargoCompany3>Horoz Lojistik</CargoCompany3>
        <MaximumPurchasableQuantity>4</MaximumPurchasableQuantity>
    </listing>
<listing>
        <UniqueIdentifier></UniqueIdentifier>
        <HepsiburadaSku>HBV000004KBL9</HepsiburadaSku>
        <MerchantSku>TERLIK123</MerchantSku>
        <ProductName>Crocs Çocuk Terlik Çocuk Terlik</ProductName>
        <Price>6000</Price>
        <AvailableStock>100</AvailableStock>
        <DispatchTime>1</DispatchTime>
        <CargoCompany1>Yurtiçi Kargo</CargoCompany1>
        <CargoCompany2>Aras Kargo</CargoCompany2>
        <CargoCompany3>Horoz Lojistik</CargoCompany3>
        <MaximumPurchasableQuantity>4</MaximumPurchasableQuantity>
    </listing>
<listing>
        <UniqueIdentifier></UniqueIdentifier>
        <HepsiburadaSku>HBV0000060U33</HepsiburadaSku>
        <MerchantSku>MOUSE123</MerchantSku>
        <ProductName>Dalvey Mouse Ve Mouse Ped</ProductName>
        <Price>6000</Price>
        <AvailableStock>100</AvailableStock>
        <DispatchTime>1</DispatchTime>
        <CargoCompany1>Yurtiçi Kargo</CargoCompany1>
        <CargoCompany2>Aras Kargo</CargoCompany2>
        <CargoCompany3>Horoz Lojistik</CargoCompany3>
        <MaximumPurchasableQuantity>4</MaximumPurchasableQuantity>
    </listing>
<listing>
        <UniqueIdentifier></UniqueIdentifier>
        <HepsiburadaSku>HBV000003K29J</HepsiburadaSku>
        <MerchantSku>KUTU123</MerchantSku>
        <ProductName>Modahills Clariss Kutu Clariss Kutu</ProductName>
        <Price>6000</Price>
        <AvailableStock>100</AvailableStock>
        <DispatchTime>1</DispatchTime>
        <CargoCompany1>Yurtiçi Kargo</CargoCompany1>
        <CargoCompany2>Aras Kargo</CargoCompany2>
        <CargoCompany3>Horoz Lojistik</CargoCompany3>
        <MaximumPurchasableQuantity>4</MaximumPurchasableQuantity>
    </listing>
    </listings>";


 string UrunGuncelle(string username, string password, string merchantId,string strXml)
        {
            var uri = "https://listing-external-sit.hepsiburada.com/listings/merchantid/"+merchantId+"/inventory-uploads";
            var client = new RestClient(uri);
            var request = new RestRequest(Method.POST);
            string svcCredentials = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(username + ":" + password));

            request.AddHeader("merchantid", merchantId);
            request.AddHeader("Authorization", "Basic " + svcCredentials);

            request.RequestFormat = RestSharp.DataFormat.Xml;

            if (!string.IsNullOrEmpty(strXml))
                request.AddParameter("application/xml", strXml, ParameterType.RequestBody);

            var result = "";
            var response = client.Execute(request);

            if (response.StatusCode == HttpStatusCode.OK)
            {
                result = response.Content;
                Console.WriteLine(result);
            }
            else
            {
                result = response.StatusCode.ToString();
            }
            return result;

        }

Yorumlar

  1. Merhaba,
    C# ile entegrasyon yapmaya çalışıyorum. Yardımcı olabilir misiniz?

    YanıtlaSil
    Yanıtlar
    1. Merhabalar, ne yapmak istediğinizi yazarsanız bildiğimiz kadarıyla yardımcı olmaya çalışırız.

      Sil
  2. Merhaba ,

    Siparişleri çekme ile ilgili bir çalışmanız varmı ?

    YanıtlaSil
    Yanıtlar
    1. mail adresinizi yazar mısınız bir kaç sorum olacak size

      Sil
    2. Merhabalar, ne yapmak istediğinizi yazarsanız bildiğimiz kadarıyla yardımcı olmaya çalışırız.

      Sil
  3. Merhaba ürün eklemek istiyorum c# ve web servisle yardımcı olablir misiniz ?

    YanıtlaSil
  4. Mehraba,
    Ürün ekleme işlemleri hepsiburada ekibi tarafından yapılıyor. Herhangi bir api veya ekrandan yapılmıyor. Bu arada benim baska bir sorum var :)
    API üzerinden yapmış olduğum bir siparişi paketledikten sonra bunu teslimat belgesine nasıl çevirebilirim?

    YanıtlaSil
  5. Merhaba - aynı taktikle -orderlist i datagridview e çekmek istedim ama bir türlü olmadı - yardımcı olabilirmisiniz -
    https://oms-external.sit.hepsiburada.com/orders/merchantid/{merchantid}?begindate={yyyy-MM-dd HH:mm}&enddate={yyyy-MM-dd HH:mm}

    YanıtlaSil
    Yanıtlar
    1. Merhaba , aynı dert ten müzdaribim. Bana bu işi yapabilecek biri lazım , yapabilecek olan lütfen iletişime geçsin. acemioyuncuwolker@gmail.com

      Sil
    2. merhaba, c# ile hepsiburada'dan ürünleri çekip stokları güncelleyebiliyorum. Siparişlerimi de datagridview'e çekip kendi veritabanıma kaydediyorum. Yardımcı olabilirim. zkenarli@gmail.com

      Sil
  6. iyi günler zafer bey ben ürün yüklemek istiyorum hepsiburadaya ancak entegrasyon ile talimatları bilmiyorum yardımcı olabilir misiniz

    YanıtlaSil
  7. Merhaba , HB den siparişleri çekip datagridview de gösterecek bir procedure lazım Bana bu işi yapabilecek biri lazım , yapabilecek olan lütfen iletişime geçsin. ücreti her türlü anlaşırız . acemioyuncuwolker@gmail.com

    YanıtlaSil
    Yanıtlar
    1. merhaba aynı kod banada lazım. yardımcı olabilirmisiniz. by.tedirgin@gmail.com
      teşekkürler

      Sil
    2. Mail olarak dönüş yaptım. kurtomerfaruk@gmail.com

      Sil
    3. aynı kod bana da lazım ozandalbudak44@gmail.com

      Sil
    4. merhaba aynı kod banada lazım. yardımcı olabilirmisiniz

      Sil
    5. @ali yıldırım mail adresinden ulaşabilirsiniz..

      Sil
  8. Merhaba, HB üzerinde kategori özelliklerini alma ve ürün bilgisi gönderme işlemlerini yapamadım. Hangi url ye istek göndermem gerekiyor. Bu konuda yardımcı olabilir misiniz?

    YanıtlaSil
    Yanıtlar
    1. hocam merhaba bende yapamadım yardımcı olurmusunuz

      Sil
  9. merhaba. Ben daha token almada problem yaşıyorum ama bununla ilgili bir kod parçası var mıdır?

    YanıtlaSil
  10. merhaba. Ben daha token almada problem yaşıyorum ama bununla ilgili bir kod parçası var mıdır?

    YanıtlaSil
  11. merhaba. Ben daha token almada problem yaşıyorum ama bununla ilgili bir kod parçası var mıdır?

    YanıtlaSil
    Yanıtlar
    1. Merhaba, token almak için https://mpop-sit.hepsiburada.com/api/authenticate adresine
      body bilgisi olarak
      {
      "username": "hepsiburadadan_aldığınız_username",
      "password": "hepsiburadadan_aldığınız_password",
      "authenticationType": "INTEGRATOR"
      }
      bilgilerini göndererek alabilirsiniz.

      Sil
  12. Merhaba;

    İşlemde ürün adı gelmiyor. Nasıl getirebilirim ?

    YanıtlaSil
  13. Bu yorum bir blog yöneticisi tarafından silindi.

    YanıtlaSil
  14. Bu yorum bir blog yöneticisi tarafından silindi.

    YanıtlaSil
  15. hocam rica etsem bir iletişim bilgisi verirmisiniz saygılarımla

    YanıtlaSil
  16. Merhaba biraz eksik kodum var yardımcı olur musunuz? Çok ihtiyacım var E-posta nonenonenon7@gmail.com

    YanıtlaSil

Yorum Gönder