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 Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. 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ı: 25)
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ı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.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 Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. 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ı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.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ı  >>> Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.


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


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Datasnap server üzerinden client bağlantısı sonlandırma seci20 13 1.388 15-03-2019, Saat: 09:10
Son Yorum: Tuğrul HELVACI
  Mysql database bağlantısı serhat 3 1.009 31-03-2018, Saat: 08:36
Son Yorum: klavye
  IdHTTPServer ve PHP bağlantısı esistem 5 1.410 01-02-2017, Saat: 09:26
Son Yorum: esistem



Konuyu Okuyanlar: 1 Ziyaretçi