Najlepsze rozwiązania do sprzedaży w internecie
Narzędzia dla Developerów
IdoSell

Testując zapytanie API natrafiłem na błąd lub mam pytanie dotyczące funkcjonowania bramki - jak to zgłosić?

Wszelkie zgłoszenia dotyczące funkcjonowania API Panelu Administracyjnego IdoSell, w szczególności zgłoszenia dotyczące błędów zwracanych przez bramki, należy zgłaszać za pomocą komunikatów w BOK.

Analizując tego typu zgłoszenia, jako absolutne minimum potrzebujemy następujących informacji:

  • Dane zapytania (request):
    • Adres URL bramki, na którą wysłane zostało zapytanie (wraz z domeną sklepu)
    • Pełny XML / JSON zapytania (można zamaskować parametr system_key, potrzebna jest natomiast nazwa użytkownika - system_login)
  • Dane odpowiedzi z serwera sklepu (response):
    • Status HTTP odpowiedzi (np. 200, 500, itp.)
    • Pełny XML / JSON odpowiedzi z serwera

Jest to podstawowy kontekst, którego potrzebujemy aby odpowiedzieć na jakiekolwiek pytanie dotyczące funkcjonowania bramki API, lub generowanego błędu.

W sieci dostępnych jest wiele narzędzi (również darmowych) pozwalających na wykonanie nasłuchu zapytań do API, m. in.:

  • Wireshark
  • Telerik Fiddler
  • Charles Proxy

Niezależnie od wybranej aplikacji, należy się jedynie upewnić że dostępne są wymagane informacje. Przykład danych o zapytaniu i odpowiedzi uzyskanych za pomocą Wireshark:

Tak, lub podobnie sformatowane pliki najlepiej przesłać jako załączniki do komunikatu zgłoszeniowego.

Brak udostępnienia tych niezbędnych informacji podczas przesyłania zgłoszenia może znacznie przedłużyć, lub wręcz uniemożliwić nam jego analizę!

Jaki jest dopuszczalny maksymalny rozmiar żądania wysyłanego do API?

Maksymalny rozmiar żądania do API nie może przekroczyć 10 MB.

Jaka jest zasada generowania klucza, który wysyła się w polu system_key?

Składowe parametru system_key:
sha1(date('Ymd') . sha1('hasło użytkownika panelu'))
date('Ymd') jest datą wygenerowaną według następującego formatu: RRRRMMDD

Przykład użycia w języku C#:

using System;
using System.Collections.Generic;
using System.Text;

namespace WebApiTest
{
  class Session
  {
    /// 
    /// Generates SHA1 session key string
    /// 
    /// SHA1 hashed password
    /// SHA1 hash string
    public static string GenerateKey(string hashedPassword)
    {
      System.Security.Cryptography.HashAlgorithm hash = System.Security.Cryptography.SHA1.Create();
      string date = System.String.Format("{0:yyyyMMdd}", System.DateTime.Now);
      string strToHash = date + hashedPassword;
      byte[] keyBytes, hashBytes;
      keyBytes = System.Text.Encoding.UTF8.GetBytes(strToHash);
      hashBytes = hash.ComputeHash(keyBytes);
      string hashedString = string.Empty;
      foreach (byte b in hashBytes)
      {
        hashedString += String.Format("{0:x2}", b);
      }
      return hashedString;
    }
    /// 
    /// Hashes specified password with SHA1 algorithm
    /// 
    /// User password
    /// SHA1 hash  string
    public static string HashPassword(string password)
    {
      System.Security.Cryptography.HashAlgorithm hash = System.Security.Cryptography.SHA1.Create();
      byte[] keyBytes, hashBytes;
      keyBytes = System.Text.Encoding.UTF8.GetBytes(password);
      hashBytes = hash.ComputeHash(keyBytes);
      string hashedString = string.Empty;
      foreach (byte b in hashBytes)
      {
        hashedString += String.Format("{0:x2}", b);
      }
      return hashedString;
    }
  }

  class Test
  {
    public static ApiGetCategories.responseType GetCategories(string url, string login, string pass)
    {
      var authenticate = new WebApiTest.ApiGetCategories.authenticateType();
      var request = new WebApiTest.ApiGetCategories.requestType();
      var service = new WebApiTest.ApiGetCategories.getCategoriesService();
      service.Url = url;
      authenticate.system_login = login;
      authenticate.system_key = WebApiTest.Session.GenerateKey(Session.HashPassword(pass));
      request.authenticate = authenticate;
      return service.getCategories(request);
    }
  }
}

Dlaczego w AWStats nie mogę znaleźć liczby zapytań do API mojego własnego skryptu?

Zapytania do API tworzone przez użytkownika trafiają w AWStats na listę botów i tam można je odczytać.