Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
n11.com Api Bağlantısı
#1
Merhaba arkadaşlar,

Bir arkadaşımın n11.com da mağazası var.
apikey ve apisecret olarak şifre gönderdi.

Bu konuda çalışan arkadaşlar var ise, bağlantıyı nasıl sağlıyorsunuz bilgi aktarabilirmisiniz lütfen.

WSDL Import ile https://api.n11.com/ws/CategoryService.wsdl Unit oluşturdum. (Dosyayı ek'te gönderdim.) Fakat bir türlü basit de olsa
kategori listeleyemedim.

var
authentication_   : Authentication;
request              : GetTopLevelCategoriesRequest;
port                   : CategoryServicePort;
category_           : CategoryService.TopCategoryList;
begin
     authentication_:=Authentication.Create;
     authentication_.appKey:='*db*****-****';
     authentication_.appSecret:='***z******';

     port:=CategoryService.GetCategoryServicePort(True,'',HTTPRIO1);

     request:=GetTopLevelCategoriesRequest.Create();
     request.auth:=authentication_;

    category_:=proxy.GetTopLevelCategories(request).categoryList;

Bu aşamadan sonra yapılması gerekenleri çözümleyemedim. Kategorileri listeleyip almam gerekli.

n11.com RestAPI özelliği varmı ?
Sizler bu bağlantıları nasıl hangi yönetim ile bağlıyorsunuz.

Paylaşımda bulunursanız çok sevinirim.

Teşekkürler.


Ek Dosyalar
.txt   CategoryService.pas.txt (Dosya Boyutu: 41,35 KB / İndirme Sayısı: 55)
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#2
(29-06-2018, Saat: 10:01)hi_selamlar Adlı Kullanıcıdan Alıntı: Merhaba arkadaşlar,

Bir arkadaşımın n11.com da mağazası var.
apikey ve apisecret olarak şifre gönderdi.

Bu konuda çalışan arkadaşlar var ise, bağlantıyı nasıl sağlıyorsunuz bilgi aktarabilirmisiniz lütfen.

WSDL Import ile https://api.n11.com/ws/CategoryService.wsdl Unit oluşturdum. (Dosyayı ek'te gönderdim.) Fakat bir türlü basit de olsa
kategori listeleyemedim.

var
authentication_   : Authentication;
request              : GetTopLevelCategoriesRequest;
port                   : CategoryServicePort;
category_           : CategoryService.TopCategoryList;
begin
     authentication_:=Authentication.Create;
     authentication_.appKey:='*db*****-****';
     authentication_.appSecret:='***z******';

     port:=CategoryService.GetCategoryServicePort(True,'',HTTPRIO1);

     request:=GetTopLevelCategoriesRequest.Create();
     request.auth:=authentication_;

    category_:=proxy.GetTopLevelCategories(request).categoryList;

Bu aşamadan sonra yapılması gerekenleri çözümleyemedim. Kategorileri listeleyip almam gerekli.

n11.com RestAPI özelliği varmı ?
Sizler bu bağlantıları nasıl hangi yönetim ile bağlıyorsunuz.

Paylaşımda bulunursanız çok sevinirim.

Teşekkürler.


Merhaba , 

Bağlantıyı sağlama ve fonksiyonu çalıştırma kısmınız da pek sorun yok görünüyor ; sadece önerim 
port:=CategoryService.GetCategoryServicePort(True,'',HTTPRIO1);
kısmında ki ilk parametre yani UseWSDL  i çok özel bir nedeniniz yoksa  varsayılan da da olduğu gibi FALSE geçmelisiniz.

Sonrasında ;

 category_:=proxy.GetTopLevelCategories(request).categoryList;
burada PROXY isimli nesne sanırım "PORT"  olmalı 

GetTopLevelCategories  in döndürdüğü nesne TopCategoryList   ye baktığımızda 


  TopCategoryList = array of SubCategory;

Şeklinde görünüyor , yani hata oluşmazsa  sizin kategoriler 
  SubCategory = class(TRemotable)
  private
   Fid: Int64;
   Fname_: string;
 published
   property id:    Int64   Index (IS_UNQL) read Fid write Fid;
   property name_: string  Index (IS_UNQL) read Fname_ write Fname_;
 end;

"id" ve "name_"  özelliklerini barındıran bir nesne dizisi olarak gelecek aşağıda ki gibi bir yapıyla hepsi içinde dönebilirsiniz.

    for i := 0 to Length( category_ ) - 1 do
      begin
         Memo1.Lines.Add( Format('%d nolu nesne id:%d , name_:%s' , [i,category_[i].id , category_[i].name_]) );
     end;

İyi çalışmalar.
Cevapla
#3
Merhabalar
Geç dönüş yaptım bu arada bende çözümü sizin yöntem gibi yaptım.  Teşekkür ederim.

Merak ettiğim bir konuda n11.com  RestApi desteği varmı acaba?

Wsdl bağlantı baya meşakatli bir iş. 
Wsdl ağır veri çekiyor. En azından benim gördüğüm.

Tekrar teşekkür ederim.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#4
Tekrar merhabalar,

Deneme amaçlı Kategori listesi ve Ürün listesini almak istedim.

Kategori getir tuşuna basıyorum. Kategoriler başarılı şekilde geliyor.
İşlem bitince arkasından Ürün listesi getir tuşuna basıyorum işlem yapmıyor ve "Interface not supported." hatası veriyor. Sad

Bu hatayı nasıl geçebilirim. Nerede hata yapıyor olabilirim.

Kategori ve ürün listeleme tuşlarında her defasında oluşturuyorum. Burada mı bir hata yapıyorım acaba.   
authentication_:=Authentication.Create;
authentication_.appKey:='*db*****-****';
authentication_.appSecret:='***z******';

Teşekkürler.

(29-06-2018, Saat: 14:46)hi_selamlar Adlı Kullanıcıdan Alıntı: Tekrar merhabalar,

Deneme amaçlı Kategori listesi ve Ürün listesini almak istedim.

Kategori getir tuşuna basıyorum. Kategoriler başarılı şekilde geliyor.
İşlem bitince arkasından Ürün listesi getir tuşuna basıyorum işlem yapmıyor ve "Interface not supported." hatası veriyor. Sad

Bu hatayı nasıl geçebilirim. Nerede hata yapıyor olabilirim.

Kategori ve ürün listeleme tuşlarında her defasında oluşturuyorum. Burada mı bir hata yapıyorım acaba.   
authentication_:=Authentication.Create;
authentication_.appKey:='*db*****-****';
authentication_.appSecret:='***z******';

Teşekkürler.

Merhaba arkadaşlar,

RIO create etmiyordum. Formda bulunan component üzerinden işlem yapıyordum. Smile
İptal edip her defasından create ediyorum.

Teşekkürler.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#5
Tekrar merhabalar herkese,

n11 api kullanarak gelen siparişi onaylamam gerekli. Fakat bir türlü başaramadım.

Örnek bir java kod buldum. Onun üzerinden hareket ederek kodu düzenledim.

JAVA KOD

      String strAppKey = "***";
       String strAppSecret = "***";
      long orderItemIdVal = 18675501;

      Authentication authentication = new Authentication();
      authentication.setAppKey(strAppKey);
      authentication.setAppSecret(strAppSecret);

      OrderItemDataRequest orderItemDataRequest = new OrderItemDataRequest();
      orderItemDataRequest.setId(orderItemIdVal);

      OrderItemDataListRequest orderItemDataListRequest = new OrderItemDataListRequest();
      orderItemDataListRequest.getOrderItem().add(orderItemDataRequest);

      OrderItemAcceptRequest request = new OrderItemAcceptRequest();
      request.setAuth(authentication);
      request.setOrderItemList(orderItemDataListRequest);

      OrderServicePort port = new OrderServicePortService().getOrderServicePortSoap11();
      OrderItemAcceptResponse response = port.orderItemAccept(request);

      List<OrderItemData> itemDataList = response.getOrderItemList().getOrderItem();
          


DELPHI KODU

var
      Rio : THTTPRIO;

    authentication_                     : OrderService.Authentication;
    orderItemDataRequest          : OrderService.OrderItemDataRequest;
    orderItemDataListRequest      : OrderService.OrderItemDataListRequest;
    request                                : OrderService.OrderItemAcceptRequest;
    port                                     : OrderService.OrderServicePort;
    response                              : OrderService.OrderItemAcceptResponse;
begin


    Rio:=THTTPRIO.Create(self);
    try

          authentication_:=OrderService.Authentication.Create;
          authentication_.appKey:='6************';
          authentication_.appSecret:='4**********';


          orderItemDataRequest:=OrderService.OrderItemDataRequest.Create;
          orderItemDataRequest.id:=1645987;

          /////////////////////////////////////////////////////////////
          >>> bu kodu bir türlü çalıştırımadım. <<<

          orderItemDataListRequest:=OrderService.OrderItemDataListRequest;
          orderItemDataListRequest.OrderItem:=orderItemDataListRequest;
           
         /////////////////////////////////////////////////////////////

          request:=OrderService.OrderItemAcceptRequest.Create;
          request.auth:=authentication_;
          request.orderItemList:=orderItemDataListRequest;


          port:=OrderService.GetOrderServicePort(False,'',Rio);

          response:=OrderService.OrderItemAcceptResponse.Create;
          response:=port.OrderItemAccept(request);



          ShowMessage(Response.result.status);


    finally
         rio:=nil;
         rio.Free;
    end;


n11.com WSDL "OrderSevice.pas" Dosyası  >>> https://hastebin.com/igubegugub.md


Kod hakkında bir yorum yaparsanız çok sevinirim. Çıkamadım işin içinden. Teşekkürler.

Saygılar.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#6
Merhabalar Biraz geç bir cevap olacak ama bende aynı sorunu yaşadım çözüm ararken sizin yazışmaları gördüm. Sitede ilk yorumum bir şeyleri yanlış yazarsam kusuruma bakmayın. Bir süredir kendi kullanımım için hobi olarak yazdığım muhasebe programıma pazaryerlerini entegre etmeye karar verdim ve bununla uğraşıyorum n11 den başladım order service deki hemen hemn bana lazım olan her şeyi tamamladım (yardım isteyen olursa yardımcı olmaktan memnuniyet duyarım). Sevgili kardeşim sipariş onaylamadaki ana sorun şu aslında wsdl import sırasında bu classta bir kaç procedure ve function import edilmiyor. yani senin sorunu kendi kodunda araman nihayetsiz bir arama aşağıdaki procedureve functionları alacak sekilde import edersen sorunun çözülür.

Doğru import edildiğinde

OrderItemAcceptRequest = class(TRemotable)
  private
   Fauth: Authentication;
   ForderItemList: OrderItemDataListRequest;
   function  Getauth(Index: Integer): Authentication;
   procedure Setauth(Index: Integer; const AAuthentication: Authentication);
   function  GetorderItemList(Index: Integer): OrderItemDataListRequest;
   procedure SetorderItemList(Index: Integer; const AOrderItemDataListRequest: OrderItemDataListRequest);
 public
   constructor Create; override;
   destructor Destroy; override;
 published
   property auth:          Authentication            Index (IS_UNQL) read Getauth write Setauth;
   property orderItemList: OrderItemDataListRequest  Index (IS_UNQL) read GetorderItemList write SetorderItemList;
 end;


bu şekilde olmalı senin orderservice.pas dosyanda ise  şu şekilde gözüküyor

OrderItemAcceptRequest = class(TRemotable)
  private
   Fauth: Authentication;
   ForderItemList: OrderItemDataListRequest;
 public
   constructor Create; override;
   destructor Destroy; override;
 published
   property auth:          Authentication            Index (IS_UNQL) read Fauth write Fauth;
   property orderItemList: OrderItemDataListRequest  Index (IS_UNQL) read ForderItemList write ForderItemList;
 end;
Cevapla
#7
Merhaba,

Biraz eski konu ama çalışan basit bir örnek proje paylaşma imkanınız var mı?
Cevapla
#8
@hi_selamlar Hocam, sanırım siz böyle bir proje yaptınız, Bu linkte yaptığımız gibi sizde bunu içinde test projesi ve kullanımı olan bir kaynak kodlu proje haline getirirseniz, DelphiCanlar ile ücretli olarak satışını yapsanız, hem sizin hemde bizim için çok faydalı olacaktır. Sizin geçmişte yapmak istediğiniz projeler bu gün olmazsa olmaz olmuş.

*Projeye diğer pazar yerleri de eklenirse bambaşka projeler için hepimizin ufku açılır ve satılabilir projeler ortaya çıkmış olur. 
*Konuyla ilgili bir ekip oluşturulabilir.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Google firebase bağlantısı Husv 12 3.179 10-03-2023, Saat: 10:16
Son Yorum: nguzeller
  Firebird Uzak Veritabanı Bağlantısı MEDCEZİR 4 1.858 11-09-2021, Saat: 08:42
Son Yorum: MEDCEZİR
  İdeasoft api bağlantısı klavye 4 3.977 16-10-2020, Saat: 00:05
Son Yorum: delphicim
  DELPHİ İLE SUNUCU BAĞLANTISI / ACİL byraymond42 2 2.011 28-02-2020, Saat: 21:04
Son Yorum: nguzeller
  Datasnap server üzerinden client bağlantısı sonlandırma seci20 13 8.639 15-03-2019, Saat: 09:10
Son Yorum: Tuğrul HELVACI



Konuyu Okuyanlar: 1 Ziyaretçi