Kody błędów API WEEX wyjaśnione: Szybka naprawa od 40001 do 43011

By: WEEX|2026-07-27 02:15:00
0
Udostępnij
copy
Oceń nas w GoogleOceń nas w Google

Większość błędów API WEEX nie oznacza tego, co sugeruje komunikat. Błąd 40009 API validation failed prawie nigdy nie oznacza, że Twój klucz jest zły — zazwyczaj oznacza, że Twój ciąg podpisu został złożony w złej kolejności. Błąd 40102 Trading pair configuration does not exist dla pary, która ewidentnie istnieje, zazwyczaj oznacza, że wysłałeś symbol futures do domeny spot. Dosłowne czytanie kodu to sposób, w jaki dziesięciominutowa poprawka zamienia się w całe popołudnie pracy.

To jest praktyczny przewodnik po kodach błędów API WEEX, z którymi faktycznie spotyka się integracja na żywo, pogrupowany według warstwy, w której wystąpił błąd, a nie według numeru. Każdy kod poniżej pochodzi z listy kodów błędów API WEEX opublikowanej 27 lipca 2026 r.; zasady podpisywania, czasu i limitów stawek pochodzą z dokumentacji API spot WEEX z tego samego dnia. Obie te rzeczy ulegają zmianie, więc sprawdź ponownie przed wdrożeniem.

Kody błędów API WEEX wyjaśnione: Szybka naprawa od 40001 do 43011

Najpierw wyjaśnienie, ponieważ wyniki wyszukiwania je mieszają: ten artykuł dotyczy API giełdy kryptowalut WEEX (api-spot.weex.com i api-contract.weex.com). Nie ma to nic wspólnego z Apache Weex, wycofanym frameworkiem interfejsu użytkownika mobilnego Alibaba, który dzieli nazwę i zwraca błędy takie jak -1001. Jeśli Twoje ślady stosu wspominają o WXSDKInstance, korzystasz z niewłaściwej instrukcji.

Jak grupowane są kody błędów API WEEX

Oficjalna lista to płaska tabela. W praktyce kody dzielą się na siedem warstw diagnostycznych, a znajomość warstwy mówi, który plik otworzyć. To grupowanie jest najszybszym sposobem na skrócenie czasu debugowania, ponieważ warstwy 1–4 dotyczą Twojego klienta, a warstwa 7 w ogóle nie jest Twoim błędem.

WarstwaKodyCo faktycznie uległo awariiOtwórz to najpierw
1. Obecność nagłówka40001, 40002, 40003, 40011Wymagany nagłówek nigdy nie opuścił Twojego klientaKonfiguracja Twojego klienta HTTP
2. Ważność poświadczeń40006, 40009, 40012, 40016Klucz, hasło lub stan 2FA jest nieprawidłowyStrona zarządzania API
3. Podpis i czas40005, 40007, 40008Ciąg prehash, zegar lub Content-TypeTwoja funkcja podpisywania
4. Konto i dostęp40013, 40014, 40018Zamrożone konto, brakujący zakres, niedozwolone IPUprawnienia klucza
5. Kształt żądania40102, 40305, 40409, 40704, 40707, 40724, 40912, 40913, 41101Parametry lub symbol nie pasują do endpointuSpecyfikacja endpointu
6. Silnik zleceń42002, 43001–43011Saldo lub limity produktu odrzuciły zlecenieLimity produktu i saldo
7. Platforma i ograniczenia429, 40015, 40200, 40725Po stronie serwera; ponów próbę, nie przepisujLogika backoff

Praktyczna zasada: jeśli kod zaczyna się od 400, podejrzewaj swoje żądanie. Jeśli zaczyna się od 43, podejrzewaj parametry zlecenia. Jeśli jest to 429, 40200 lub 40015, nie podejrzewaj niczego i wstrzymaj się.

Błędy uwierzytelniania API WEEX: 40001 do 40018

Ten zakres generuje najwięcej zgłoszeń do wsparcia i najmniej rzeczywistych problemów z poświadczeniami. Sześć z tych kodów rozwiązuje się poprzez naprawę sposobu tworzenia nagłówków, a nie poprzez generowanie nowego klucza.

KodKomunikatPrzyczyna w świecie rzeczywistymNaprawa
40001The request header 'ACCESS_KEY' cannot be emptyNagłówek usunięty przez proxy lub bibliotekę klienta, która zamienia na małe litery i usuwa nieznane nagłówkiLoguj wychodzące nagłówki, a nie te, które ustawiłeś
40002The request header 'ACCESS_SIGN' cannot be emptyPodpis obliczony po zamrożeniu obiektu żądaniaPodpisz przed wysłaniem
40003The request header 'ACCESS_TIMESTAMP' cannot be emptySygnatura czasowa wygenerowana, ale nigdy nie dołączonaDołącz tę samą wartość, którą podpisałeś
40005Invalid ACCESS_TIMESTAMPSekundy zamiast milisekund lub ciąg ISOWyślij 13-cyfrową sygnaturę czasową w milisekundach
40006Invalid ACCESS_KEYZły format kluczaKlucze API WEEX zaczynają się od WEEX — sprawdź, czy nie wkleiłeś sekretu
40007Invalid Content_Type, please use 'application/json'Klient domyślnie użył application/x-www-form-urlencodedUstaw application/json jawnie w POST
40008Request timestamp has expiredŻądanie starsze niż 30-sekundowe okno ważnościZobacz następną sekcję — to inny błąd niż 40005
40009API validation failedNiezgodność podpisu, zazwyczaj kolejność prehashOdbuduj ciąg prehash dokładnie
40011The request header 'ACCESS_PASSPHRASE' cannot be emptyHasło pominięte, ponieważ dokumentacja wymienia je na końcuDołącz je do każdego prywatnego wywołania
40012Incorrect API key/passphraseLiterówka w haśle lub klucz z innego subkontaWygeneruj ponownie i wprowadź oba
40013User account is frozenZawieszenie na poziomie kontaZłóż zgłoszenie do wsparcia
40014Insufficient permissionsZakres klucza wyklucza handel lub wypłatyWydaj klucz ponownie z odpowiednim zakresem
40016Users must bind a mobile phone or Google AuthenticatorDostęp do API zablokowany do czasu ustawienia 2FAWłącz Google Authenticator
40018Illegal IP requestAdres IP wywołujący jest poza białą listąZobacz sekcję domeny bazowej i IP poniżej

Dwa szczegóły warto przyswoić. Zasady tworzenia podpisu WEEX definiują ciąg prehash jako timestamp + method.toUpperCase() + requestPath + "?" + queryString + body, HMAC-SHA256 z Twoim kluczem sekretnym, a następnie Base64. ? i ciąg zapytania są pomijane, gdy nie ma zapytania. Trzy rzeczy psują to w produkcji: małe get, ścieżka żądania zawierająca hosta oraz ciało JSON, które Twoja biblioteka HTTP ponownie serializuje po podpisaniu — kolejność kluczy się zmienia, bajty się zmieniają i otrzymujesz 40009.

Drugi szczegół to pułapka nazewnictwa. Tekst błędu cytuje nazwy nagłówków z podkreśleniami (ACCESS_KEY, ACCESS_SIGN, ACCESS_TIMESTAMP, ACCESS_PASSPHRASE), podczas gdy dokumentacja podpisu zapisuje je z myślnikami (ACCESS-SIGN, ACCESS-TIMESTAMP). Skopiuj formę używaną w dokumentacji endpointu, z którym się integrujesz i loguj surowe nagłówki sieciowe przy pierwszym udanym wywołaniu, zamiast ufać ciągowi błędu lub fragmentowi bloga.

40005 vs 40008: dwa różne błędy sygnatury czasowej

Te dwa są ciągle mylone, a niewłaściwa naprawa marnuje najwięcej czasu.

40005 Invalid ACCESS_TIMESTAMP to problem z formatem. Wartość nie jest 13-cyfrową epoką milisekundową — zazwyczaj jest to 10-cyfrowa epoka sekundowa z time.time() w Pythonie lub time() w PHP, albo ciąg ISO-8601. Nie udaje się natychmiast i konsekwentnie, przy każdym żądaniu, w tym pierwszym.

40008 Request timestamp has expired to problem z zegarem lub opóźnieniem. Format jest poprawny, ale wartość jest oddalona o więcej niż 30 sekund od czasu serwera WEEX. Żądania są ważne tylko przez 30 sekund, a podpis jest odrzucany, jeśli sygnatura czasowa odbiega o więcej niż 30 sekund od zegara serwera API w dowolnym kierunku — maszyna działająca szybko zawodzi tak samo mocno, jak ta działająca wolno.

ObjawPrawdopodobny kodPrzyczyna źródłowaNaprawa
Zawodzi w 100% żądań od pierwszego wywołania40005Zła jednostka lub typPomnóż sekundy przez 1000, wyślij jako liczbę całkowitą
Działało w dev, zawodzi w kontenerze lub VM40008Dryf zegara hosta, brak NTP w obrazieZsynchronizuj z NTP lub odpytaj publiczny endpoint czasu serwera i zcache'uj przesunięcie
Zawodzi tylko pod obciążeniem lub przy ponownych próbach40008Sygnatura czasowa wygenerowana raz, użyta ponownie w kolejcePodpisuj ponownie przy każdej próbie, nigdy nie odtwarzaj podpisanego żądania
Zawodzi tylko dla długotrwałych zadań wsadowych40008Sygnatura czasowa utworzona na początku zadania, żądanie wysłane minuty późniejGeneruj sygnaturę czasową przy wysyłaniu

Dryf zegara wewnątrz kontenerów jest najczęstszą przyczyną integracji, która "działała wczoraj". Jeśli nie możesz kontrolować NTP na hoście, odpytaj endpoint czasu serwera przy starcie, zapisz deltę i dodawaj ją do lokalnego zegara dla każdego podpisu.

Cena --

--
--
--

Odrzucenia zleceń: 43001 do 43011 i 42002

Gdy uwierzytelnianie przejdzie, błędy przenoszą się do silnika dopasowującego. Te kody są tanie w naprawie, ale drogie w ignorowaniu, ponieważ bot, który ponawia odrzucone zlecenie w ciasnej pętli, trafi w ogranicznik stawek i zamaskuje prawdziwy problem.

KodKomunikatCo sprawdzić
42002BALANCE NOT ENOUGHSaldo w odpowiednim typie konta — środki spot nie pokrywają zlecenia futures
43001Order does not existID zlecenia z innego typu konta lub już wypełnione i usunięte
43002Order placement failedOgólne odrzucenie; loguj pełne żądanie i sprawdź cenę oraz rozmiar względem limitów produktu
43004There are no open orders to cancelAnuluj-wszystkie wywołane na pustej księdze; traktuj jako łagodne, nie jako błąd
43005Exceeds maximum order sizeLimit na zlecenie dla tego produktu
43006Order quantity is less than minimum trading amountPorównaj z minTradeAmount na endpoincie produktów
43007Order quantity exceeds the maximum trading amountTo samo źródło, górna granica
43008 / 43011Current order price cannot be less than 0Ujemne lub nieparsowane pole ceny
43009Current order price exceeds the limitCena poza dozwolonym pasmem
43010Trade amount cannot be less than 0Ujemne lub nieparsowane pole kwoty
40912Single cancellation cannot exceed 50Podziel anulowania wsadowe na grupy po 50
40913Either orderId or clientId must be providedDostarcz jeden identyfikator; nie wysyłanie żadnego to cichy błąd w kodzie warunkowym
40305client_uid length should not exceed 40 charactersPrzytnij swoje ID zleceń klienta i usuń znaki specjalne

To, co łapie doświadczonych traderów, to 40704 Only query data for the last three months. Uzupełnianie historii transakcji powyżej 90 dni nie zadziała przez standardowe endpointy zapytań, więc każde zadanie uzgadniania musi utrwalać wypełnienia w miarę ich występowania, zamiast zakładać, że może je pobrać później.

Co wyzwala błąd 429 w API WEEX

Zasady ograniczeń dostępu ustawiają domyślnie 10 żądań na sekundę, chyba że endpoint mówi inaczej. Przekroczenie tego zwraca 429 Too Many Requests, co lista błędów wyświetla również jako "Requesting too frequently".

Trzy właściwości tego limitu zmieniają sposób, w jaki powinieneś projektować wokół niego:

  • Żądania uwierzytelnione są liczone na klucz API, żądania nieuwierzytelnione na publiczne IP. Dwa boty dzielące jeden klucz dzielą jeden budżet. Dwa boty na jednym serwerze z oddzielnymi kluczami nie — ale ich publiczne odpytywanie danych rynkowych tak, ponieważ jest liczone według IP.
  • Zlecenie wsadowe na wielu parach liczy się jako jedno żądanie. Dokumentacja podaje przykład 4 par handlowych × 10 zleceń = 1 żądanie. Jeśli umieszczasz siatkę lub równoważysz księgę, przetwarzanie wsadowe nie jest mikrooptymalizacją; to 40-krotna różnica w przepustowości.
  • Ponowne próby się liczą. Wykładniczy backoff, który ponawia próbę natychmiast po 429, utrzyma Cię w stanie ograniczenia. Wstrzymaj się z jitterem i porzuć przestarzałe zlecenia, zamiast ustawiać je w kolejce.

Praktyczny budżet: zarezerwuj około 60–70% limitu na przepływ zleceń, resztę zostaw na odpytywanie salda i pozycji, a wszystko, co możesz, przenieś do WebSocket. Księga zleceń i dane ticker przez REST to najczęstszy powód, dla którego dobrze zachowujący się bot handlowy kończy z ograniczoną stawką.

Błędy domeny bazowej i białej listy IP

Dwa błędy zgłaszają się na tyle źle, że zasługują na własną sekcję.

40102 Trading pair configuration does not exist dla pary, którą widzisz handlującą na stronie, zazwyczaj nie jest problemem symbolu. WEEX dzieli REST na https://api-spot.weex.com dla spot i https://api-contract.weex.com dla kontraktów. Symbol futures wysłany do domeny spot rozwiązuje się do pary, która faktycznie nie istnieje w tej domenie, a błąd jest technicznie dokładny i całkowicie mylący. Sprawdź hosta, zanim sprawdzisz symbol.

40018 Illegal IP request oznacza, że wywołujące IP nie znajduje się na białej liście klucza. Niezręczną częścią jest to, co zmienia je bez Twojej wiedzy: dostawca chmury rotujący IP wyjściowe, failover bramy NAT, ponowne połączenie VPN lub adres IPv6 używany, gdy na białą listę wpisałeś IPv4. Wskazówka wsparcia jest taka, że możesz utworzyć klucz, który nie jest powiązany z adresem IP, a dla klucza danych rynkowych tylko do odczytu jest to rozsądny kompromis. Dla klucza z uprawnieniami do handlu lub wypłat nie jest — niezwiązany klucz handlowy to poświadczenie na okaziciela, które działa z dowolnego miejsca w Internecie. Przypnij IP i monitoruj zmiany, zamiast usuwać kontrolę.

Szerszy kontekst dotyczący tego, jak powierzchnie REST i WebSocket pasują do siebie, jest omówiony w wyjaśnieniu Wiki WEEX na temat czy WEEX obsługuje handel API.

5-minutowa lista kontrolna triage API WEEX

Uruchom to w kolejności przed otwarciem zgłoszenia do wsparcia. Każdy krok izoluje jedną warstwę, a pierwsza awaria mówi, gdzie przestać szukać.

CzasSprawdzenieWarunek przejściaZawodzi jako
0:00Wywołaj publiczny endpoint na właściwej domenie, niepodpisanyHTTP 200 z danymiBłąd połączenia lub 40102, jeśli domena jest zła
0:30Wydrukuj czas lokalny w ms obok czasu serweraDryf poniżej 5 sekund40005 (format) lub 40008 (dryf)
1:00Loguj dokładny ciąg prehash, który podpisałeśPasuje do timestamp + METHOD + path + ?query + body bajt w bajt40009
1:30Loguj surowe wychodzące nagłówki z sieciWszystkie cztery nagłówki ACCESS obecne, Content-Type to application/json40001, 40002, 40003, 40007, 40011
2:00Wywołaj podpisany endpoint tylko do odczytu, np. saldo kontaHTTP 20040006, 40012, 40014, 40016, 40018
3:00Pobierz endpoint produktów dla swojego symboluZwraca min i max kwoty handlu40102
4:00Umieść najmniejsze legalne zlecenie powyżej minTradeAmountZlecenie zaakceptowane42002, 43005, 43006, 43007
4:30Sprawdź swoją stawkę żądań w ostatniej minuciePoniżej 10 na sekundę utrzymane429

Jeśli każdy krok przejdzie, a wywołania nadal zawodzą, pozostałe kody — 40013, 40015, 40409, 40725, 41101 — to te, o które wsparcie WEEX wyraźnie prosi o otwarcie zgłoszenia. Dołącz sygnaturę czasową żądania, endpoint i zwrócony kod; to trio sprawia, że zgłoszenie jest rozwiązywalne. Pełna oficjalna referencja to lista kodów błędów API WEEX.

Co kody błędów mówią Ci o Twojej integracji

Szereguj swoje awarie według warstwy, a nie częstotliwości. Sto 429 to problem z przepustowością, który możesz dostroić w jedno popołudnie. Jeden sporadyczny 40009 to błąd podpisywania, który po cichu odrzuci zlecenia w najgorszym możliwym momencie i to jest ten, który warto naprawić najpierw. Integracje, które pozostają zdrowe w API WEEX, dzielą trzy nawyki: podpisują ponownie przy każdej próbie, nigdy nie ufają lokalnemu zegarowi i logują żądanie sieciowe, zamiast żądania, które zamierzali wysłać.

Gotowy do budowania? Utwórz i określ zakres swoich kluczy na stronie API WEEX, zacznij od klucza tylko do odczytu względem publicznych endpointów i dodaj uprawnienia do handlu dopiero, gdy Twoja lista kontrolna triage przejdzie czysto od początku do końca.

FAQ

1. Co oznacza błąd 40009 w API WEEX?

API validation failed to niezgodność podpisu znacznie częściej niż zły klucz. Odbuduj ciąg prehash jako timestamp + METHOD + requestPath + "?" + queryString + body, potwierdź, że metoda jest wielkimi literami i upewnij się, że Twoja biblioteka HTTP nie serializuje ponownie ciała JSON po podpisaniu.

2. Dlaczego moje żądanie API WEEX działa lokalnie, ale zawodzi z 40008 w produkcji?

Prawie zawsze dryf zegara hosta. Podpisana sygnatura czasowa musi mieścić się w 30 sekundach od czasu serwera WEEX, a kontenery często działają bez NTP. Zsynchronizuj zegar hosta lub zcache'uj przesunięcie z publicznego endpointu czasu serwera przy starcie.

3. Jaki jest limit stawek API WEEX?

Domyślnie jest to 10 żądań na sekundę, chyba że endpoint określa inaczej, liczone na klucz API dla wywołań uwierzytelnionych i na publiczne IP dla nieuwierzytelnionych, zgodnie z dokumentacją z 27 lipca 2026 r. Przekroczenie zwraca 429.

4. Czy mogę używać klucza API WEEX bez białej listy IP?

Tak — wsparcie WEEX sugeruje utworzenie klucza niepowiązanego z adresem IP, gdy 40018 Illegal IP request Cię blokuje. Zarezerwuj to dla kluczy tylko do odczytu. Klucz handlowy lub wypłat bez ograniczenia IP działa z dowolnego miejsca, co jest znaczącym obniżeniem bezpieczeństwa.

5. Dlaczego otrzymuję 40102 dla pary handlowej, która wyraźnie istnieje?

Prawdopodobnie wywołujesz złą domenę bazową. Żądania spot idą do https://api-spot.weex.com, a żądania kontraktów do https://api-contract.weex.com; symbol futures na hoście spot produkuje dokładnie ten błąd.

6. Czy API WEEX to to samo co framework Apache Weex?

Nie. API giełdy WEEX to interfejs handlowy REST i WebSocket. Apache Weex to wycofany framework interfejsu użytkownika mobilnego z niepowiązanymi kodami błędów, takimi jak -1001. Wyniki wyszukiwania dla "weex api" mieszają oba.

Ostrzeżenie o ryzyku

Aktywa kryptograficzne są zmienne, a handel nimi — ręcznie lub przez API Futures — może skutkować częściową lub całkowitą utratą środków. Zautomatyzowany handel dodaje tryby awarii, których handel ręczny nie ma: nieobsłużony kod błędu może pozostawić pozycje otwarte lub zduplikowane, ograniczone stawką anulowanie może zawieść, podczas gdy wypełnienie przejdzie, dryf zegara może po cichu odrzucić zlecenia redukujące ryzyko, a klucz API bez ograniczeń IP lub limitów zakresu to poświadczenie, którego atakujący może użyć z dowolnego miejsca. Handel futures na WEEX wiąże się z dźwignią, która potęguje zarówno zyski, jak i straty i może wywołać likwidację szybciej, niż bot może zareagować. Testuj z najmniejszym legalnym rozmiarem zlecenia, używaj kluczy tylko do odczytu, dopóki obsługa błędów nie zostanie udowodniona, ustaw limity pozycji i strat poza logiką handlową i nigdy nie przyznawaj uprawnień do wypłat kluczowi, który ich nie potrzebuje. Nic tutaj nie jest poradą inwestycyjną.

Niniejsza treść ma charakter wyłącznie informacyjny i nie stanowi porady finansowej, inwestycyjnej, prawnej ani podatkowej. Wszelkie wydarzenia, nagrody, promocje online lub powiązane informacje, o których tu mowa, nie powinny być traktowane jako rekomendacja, zachęta ani zaproszenie do kupna, sprzedaży, wymiany lub innego rodzaju obrotu aktywami kryptograficznymi. Aktywa kryptograficzne charakteryzują się dużą zmiennością i mogą prowadzić do strat. Dostępność usług, produktów i powiązanych wydarzeń WEEX może się różnić w zależności od regionu. Użytkownik jest odpowiedzialny za upewnienie się, że jego udział jest zgodny z obowiązującymi lokalnymi przepisami i regulacjami.

Możesz również polubić

iconiconiconiconiconiconiconicon
Obsługa klienta:@weikecs
Współpraca biznesowa:@weikecs
Quant trading i MM:[email protected]
Program VIP:[email protected]