Przewodnik rozwiązywania problemów
Szybkie rozwiązania najczęstszych problemów technicznych. Nie możesz znaleźć swojego problemu? Skontaktuj się z pomocą techniczną, aby uzyskać indywidualne wsparcie.
Problemy z płatnościami
🔴 Płatność nie została wykryta
Objawy: Klient twierdzi, że wysłał płatność, ale nie pojawia się ona w twoim panelu.
Najczęstsze przyczyny:
- Transakcja nie otrzymała jeszcze potwierdzeń (normalne dla nowych transakcji)
- Wysłano nieprawidłową kwotę (niedopłata o ponad 1%)
- Płatność wysłana na zły adres (błąd klienta)
- Przeciążenie sieci opóźniające potwierdzenie
Rozwiązania:
- Sprawdź transakcję w eksploratorze blockchaina:
- Bitcoin: blockchair.com/bitcoin
- Ethereum: etherscan.io
- Litecoin: blockchair.com/litecoin
- Sprawdź, czy adres docelowy zgadza się z tym pokazanym w żądaniu płatności GriffNode
- Poczekaj na potwierdzenia: Większość problemów rozwiązuje się, gdy transakcja otrzyma 1-2 potwierdzenia
- Jeśli transakcja jest potwierdzona, ale wciąż się nie pojawia: Skontaktuj się z pomocą techniczną, podając identyfikator transakcji
// Check transaction status via API
curl -X GET "https://api.griffnode.com/v1/transactions/{tx_id}" \
-H "Authorization: Bearer YOUR_API_KEY"
⚠️ Płatność utknęła w stanie „Oczekująca”
Objawy: Płatność jest wyświetlana jako „Oczekująca” dłużej, niż się spodziewano.
Najczęstsze przyczyny:
- Niska opłata transakcyjna powodująca powolne potwierdzanie
- Przeciążenie sieci (zwłaszcza Bitcoina w okresach dużego ruchu)
- Nie osiągnięto jeszcze wymaganej liczby potwierdzeń
Rozwiązania:
- Sprawdź liczbę potwierdzeń: Przejdź do szczegółów transakcji w panelu
- Oczekiwane czasy potwierdzeń:
- BTC: 2-6 potwierdzeń (20-60 minut)
- ETH: 12-35 potwierdzeń (2-7 minut)
- LTC/DASH: 4-6 potwierdzeń (10-15 minut)
- Jeśli płatność utknęła na wiele godzin: Transakcja może mieć niewystarczającą opłatę. Klient może spróbować RBF (Replace-By-Fee) lub CPFP (Child-Pays-For-Parent), jeśli jego portfel to obsługuje
- Dla sprzedawców: Możesz ręcznie zatwierdzić transakcje o niskiej wartości z 1 potwierdzeniem, jeśli akceptujesz ryzyko
❌ Płatność oznaczona jako „Niedopłacona”
Objawy: Transakcja otrzymana, ale oznaczona jako niedopłacona, status zablokowany.
Najczęstsze przyczyny:
- Portfel klienta nie uwzględnił opłat sieciowych
- Klient ręcznie wpisał kwotę zamiast zeskanować kod QR
- Kurs przeliczeniowy zmienił się pomiędzy utworzeniem faktury a płatnością
Rozwiązania:
- Sprawdź wysokość niedopłaty: Panel pokazuje dokładny niedobór
- Jeśli niedobór wynosi < 1%: Możesz ręcznie zatwierdzić transakcję
- Jeśli niedopłata jest znaczna: Opcje:
- Poproś klienta o dopłatę (wygeneruj nową fakturę na różnicę)
- Zaakceptuj płatność częściową i dostosuj zamówienie
- Zwróć transakcję
- Zapobiegaj przyszłym problemom: Zwracaj klientom uwagę, aby skanowali kod QR lub kopiowali dokładną kwotę
⏰ Płatność wygasła
Objawy: Okno płatności zamknęło się, zanim klient dokończył transakcję.
Najczęstsze przyczyny:
- Domyślny czas wygaśnięcia 15 minut był zbyt krótki dla klienta
- Klient niedoświadczony w obsłudze portfeli kryptowalutowych
- Przeciążenie sieci powodujące opóźnienia
Rozwiązania:
- Wygeneruj nowe żądanie płatności z tym samym lub wydłużonym czasem wygaśnięcia
- Zwiększ domyślny czas wygaśnięcia: Panel → Ustawienia → Ustawienia płatności → Czas wygaśnięcia (maks. 24 godziny)
- Jeśli klient wysłał już środki na wygasły adres: Płatność może mimo to zostać wykryta i zaksięgowana (skontaktuj się z pomocą techniczną w celu weryfikacji)
- Dla transakcji o wysokiej wartości: Użyj dłuższego czasu wygaśnięcia (60+ minut), aby zmniejszyć presję na klientów
Błędy integracji
🔌 Wtyczka nie łączy się z GriffNode
Objawy: Wtyczka e-commerce (WooCommerce, WordPress) pokazuje błędy połączenia.
Najczęstsze przyczyny:
- Nieprawidłowy klucz API lub sekret
- Klucz API trybu testowego użyty na produkcji (lub odwrotnie)
- Zapora serwera blokująca połączenia wychodzące do GriffNode
- Wtyczka nieaktualizowana do najnowszej wersji
Rozwiązania:
- Zweryfikuj dane uwierzytelniające API:
- Panel → Programiści → Klucze API
- Upewnij się, że używasz właściwego środowiska (testowego lub produkcyjnego)
- Klucz API powinien zaczynać się od
cgk_live_lubcgk_test_
- Przetestuj połączenie ręcznie:
curl -X GET "https://api.griffnode.com/v1/ping" \ -H "Authorization: Bearer YOUR_API_KEY" // Expected response: {"status":"ok"} - Sprawdź wymagania serwera:
- PHP 7.4+ (dla wtyczek opartych na PHP)
- Włączony cURL lub file_get_contents
- Dozwolone wychodzące połączenia HTTPS
- Zaktualizuj wtyczkę: Upewnij się, że korzystasz z najnowszej wersji
- Sprawdź dzienniki błędów: Większość wtyczek zapisuje błędy w
wp-content/debug.log(WordPress) lub podobnym pliku
🔒 Błędy CORS (zablokowane żądanie z innej domeny)
Objawy: Konsola przeglądarki pokazuje błędy zasad CORS podczas wykonywania żądań API.
Najczęstsze przyczyny:
- Wykonywanie żądań API bezpośrednio z frontendowego JavaScriptu (niedozwolone)
- Domena niedodana do listy dozwolonych w ustawieniach API
Rozwiązania:
- Żądania API muszą pochodzić z twojego serwera backendowego, a nie bezpośrednio z JavaScriptu w przeglądarce
- Prawidłowa architektura:
- ❌ Przeglądarka → API GriffNode (powoduje błąd CORS)
- ✅ Przeglądarka → twój serwer → API GriffNode
- Jeśli potrzebujesz żądań z frontendu: Użyj naszego SDK dla JavaScriptu, które automatycznie obsługuje przekierowanie żądań:
// Install SDK npm install @griffnode/js-sdk // Initialize with public key only (safe for frontend) import GriffNode from '@griffnode/js-sdk'; const cg = new GriffNode({ publicKey: 'cgk_pub_...', // Public key, not secret key! mode: 'test' }); - Nigdy nie ujawniaj swojego tajnego klucza API w kodzie frontendowym!
📦 Niepowodzenia instalacji SDK
Objawy: npm install, composer install lub pip install kończy się niepowodzeniem.
Rozwiązania według platformy:
JavaScript/Node.js:
// Clear npm cache
npm cache clean --force
// Reinstall
npm install @griffnode/js-sdk
// If still failing, try Yarn
yarn add @griffnode/js-sdk
PHP:
// Update Composer
composer self-update
// Clear cache
composer clear-cache
// Reinstall
composer require griffnode/php-sdk
Python:
// Upgrade pip
python -m pip install --upgrade pip
// Reinstall
pip install --upgrade griffnode
// If using virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install griffnode
Problemy z API
401 Unauthorized
Komunikat o błędzie: {"error": "Invalid API key"}
Najczęstsze przyczyny:
- Nieprawidłowy lub wygasły klucz API
- Użycie klucza testowego w środowisku produkcyjnym
- Brak nagłówka
Authorization - Nieprawidłowy format nagłówka
Rozwiązania:
- Zweryfikuj format klucza API:
// Correct format Authorization: Bearer cgk_live_1234567890abcdef... // ❌ Wrong: Missing "Bearer" Authorization: cgk_live_1234567890abcdef... // ❌ Wrong: Extra spaces Authorization: Bearer cgk_live_1234567890abcdef... - Wygeneruj klucz API ponownie: Panel → Programiści → Klucze API → Wygeneruj ponownie
- Sprawdź środowisko: Upewnij się, że klucze
cgk_test_trafiają do testowego API, acgk_live_na produkcję
429 Too Many Requests
Komunikat o błędzie: {"error": "Rate limit exceeded"}
Limity zapytań:
| Typ punktu końcowego | Limit |
|---|---|
| Operacje odczytu (GET) | 100 żądań/minutę |
| Operacje zapisu (POST/PUT) | 30 żądań/minutę |
| Webhooki (przychodzące) | Bez limitu |
Rozwiązania:
- Zastosuj wykładnicze ponawianie (exponential backoff):
async function requestWithRetry(url, options, maxRetries = 3) { for (let i = 0; i < maxRetries; i++) { const response = await fetch(url, options); if (response.status === 429) { const retryAfter = response.headers.get('Retry-After') || (2 ** i); await new Promise(resolve => setTimeout(resolve, retryAfter * 1000)); continue; } return response; } throw new Error('Max retries exceeded'); } - Buforuj odpowiedzi: Nie pobieraj wielokrotnie tych samych danych
- Używaj webhooków zamiast odpytywania: Otrzymuj powiadomienia o zdarzeniach zamiast wielokrotnie je sprawdzać
- Skontaktuj się z pomocą techniczną w sprawie wyższych limitów, jeśli masz uzasadnione potrzeby dużego ruchu
422 Unprocessable Entity
Komunikat o błędzie: {"error": "Validation failed", "details": {...}}
Najczęstsze przyczyny:
- Brak wymaganych pól
- Nieprawidłowy format pola (np. nieprawidłowy adres e-mail, ujemna kwota)
- Wartość pola poza dozwolonym zakresem
Rozwiązania:
- Sprawdź szczegóły błędu: Pole
detailsdokładnie wskazuje, co jest nie tak - Najczęstsze błędy walidacji:
amount: Musi być liczbą dodatnią, maksymalnie 2 miejsca po przecinkucurrency: Musi być jedną z: BTC, ETH, LTC, DASH, DOGEemail: Musi mieć poprawny format adresu e-mailwebhook_url: Musi być poprawnym adresem URL z HTTPS
- Zwaliduj dane przed wysłaniem:
// Example validation const paymentData = { amount: parseFloat(amount).toFixed(2), // Ensure 2 decimals currency: currency.toUpperCase(), // Ensure uppercase email: email.trim().toLowerCase() // Normalize email };
500 Internal Server Error
Komunikat o błędzie: {"error": "Internal server error"}
To wskazuje na problem po naszej stronie.
Rozwiązania:
- Sprawdź stronę statusu: status.griffnode.com pod kątem trwających awarii
- Ponów próbę z wykładniczym ponawianiem: Tymczasowe problemy zwykle ustępują w ciągu kilku sekund
- Jeśli problem się utrzymuje: Skontaktuj się z pomocą techniczną, podając:
- Identyfikator żądania (z nagłówka
X-Request-ID) - Znacznik czasu
- Adres URL punktu końcowego
- Ładunek żądania (oczyszczony z danych wrażliwych)
- Identyfikator żądania (z nagłówka
Awarie webhooków
📡 Webhooki nie są odbierane
Objawy: Płatność została zrealizowana, ale twój serwer nigdy nie otrzymał powiadomienia webhook.
Najczęstsze przyczyny:
- Adres URL webhooka nie został skonfigurowany
- Zapora serwera blokująca żądania przychodzące
- Błędy certyfikatu HTTPS na twoim serwerze
- twój punkt końcowy zwraca kod statusu inny niż 200
Rozwiązania:
- Zweryfikuj adres URL webhooka: Panel → Programiści → Webhooki
- Przetestuj punkt końcowy webhooka:
curl -X POST https://yourdomain.com/webhooks/griffnode \ -H "Content-Type: application/json" \ -d '{"event":"test","data":{}}' // Should return HTTP 200 - Sprawdź dzienniki webhooków: Panel pokazuje próby dostarczenia i odpowiedzi
- Najczęstsze problemy:
- Punkt końcowy musi używać HTTPS (nie HTTP)
- Musi mieć poprawny certyfikat SSL
- Musi odpowiedzieć w ciągu 30 sekund
- Musi zwracać kod statusu 2xx (200, 201, 204)
- Przetestuj za pomocą webhook.site: Skorzystaj tymczasowo z webhook.site, aby zweryfikować, że GriffNode wysyła webhooki
🔐 Weryfikacja podpisu webhooka kończy się niepowodzeniem
Objawy: Otrzymujesz webhooki, ale walidacja podpisu kończy się niepowodzeniem.
Najczęstsze przyczyny:
- Użycie nieprawidłowego sekretu webhooka
- Modyfikowanie treści żądania przed weryfikacją
- Nieprawidłowe obliczenie podpisu
Rozwiązania:
- Prawidłowy proces weryfikacji:
// Node.js example const crypto = require('crypto'); function verifyWebhook(payload, signature, secret) { const hash = crypto .createHmac('sha256', secret) .update(payload) // Raw body, not parsed JSON! .digest('hex'); return crypto.timingSafeEqual( Buffer.from(signature), Buffer.from(hash) ); } // Express.js middleware app.post('/webhooks', express.raw({type: 'application/json'}), (req, res) => { const signature = req.headers['x-griffnode-signature']; const payload = req.body.toString('utf8'); if (verifyWebhook(payload, signature, WEBHOOK_SECRET)) { const data = JSON.parse(payload); // Process webhook... res.sendStatus(200); } else { res.sendStatus(401); } }); - Pobierz sekret webhooka: Panel → Programiści → Webhooki → Pokaż sekret
- Najczęstsze błędy:
- ❌ Użycie klucza API zamiast sekretu webhooka
- ❌ Parsowanie JSON przed weryfikacją
- ❌ Użycie SHA1 zamiast SHA256
- ❌ Brak porównania odpornego na ataki czasowe
🔄 Wyczerpano próby ponowienia webhooka
Objawy: Panel pokazuje, że dostarczenie webhooka nie powiodło się po wszystkich próbach.
Harmonogram ponawiania:
- Próba 1: Natychmiast
- Próba 2: +1 minuta
- Próba 3: +5 minut
- Próba 4: +15 minut
- Próby 5-10: +1 godzina każda
Rozwiązania:
- Napraw problemy ze swoim punktem końcowym (patrz wyżej)
- Ręczne ponowne odtworzenie: Panel → Webhooki → Wybierz zdarzenie → Odtwórz ponownie
- Pobierz pominięte zdarzenia przez API:
// Get recent events GET /v1/events?since=2024-01-01T00:00:00Z // Process events your webhook handler missed - Zaimplementuj idempotentność: Obsługuj zduplikowane webhooki w sposób bezpieczny (wysyłamy klucze idempotentności)
Problemy z dostępem do konta
🔑 Nie mogę się zalogować
Najczęstsze przyczyny:
- Nieprawidłowe hasło
- Kod 2FA wygasł lub jest błędny
- Konto zablokowane z powodu nieudanych prób logowania
- Adres e-mail nie został zweryfikowany
Rozwiązania:
- Zresetuj hasło: Kliknij „Nie pamiętam hasła” na stronie logowania
- Problemy z 2FA:
- Upewnij się, że zegar urządzenia jest zsynchronizowany (TOTP wymaga dokładnego czasu)
- Spróbuj kodów zapasowych, jeśli aplikacja uwierzytelniająca nie działa
- Skontaktuj się z pomocą techniczną, jeśli utraciłeś zarówno aplikację uwierzytelniającą, jak i kody zapasowe
- Konto zablokowane: Poczekaj 30 minut lub skontaktuj się z pomocą techniczną
- Adres e-mail niezweryfikowany: Sprawdź folder ze spamem w poszukiwaniu wiadomości weryfikacyjnej lub poproś o nową
📧 Nie otrzymuję wiadomości e-mail
Objawy: Nie otrzymujesz wiadomości weryfikacyjnych, resetujących hasło ani powiadomień.
Rozwiązania:
- Sprawdź folder ze spamem/niechcianymi wiadomościami
- Dodaj do bezpiecznych nadawców:
[email protected]oraz[email protected] - Zweryfikuj adres e-mail: Panel → Ustawienia konta → E-mail
- Wypróbuj innego dostawcę poczty: Niektórzy dostawcy agresywnie filtrują wiadomości związane z kryptowalutami
- Sprawdź dzienniki poczty: Panel → Ustawienia → Dzienniki poczty (pokazują status dostarczenia)
Problemy z portfelem i kryptowalutami
💰 Błąd „Nieprawidłowy adres”
Objawy: Nie można zapisać adresu portfela w panelu.
Najczęstsze przyczyny:
- Format adresu nie pasuje do kryptowaluty (np. adres BTC dla ETH)
- Literówka w adresie
- Użycie adresu testnetu na produkcji
- Adres zawiera nieprawidłowe znaki
Rozwiązania:
- Zweryfikuj format adresu:
- Bitcoin: Zaczyna się od 1, 3 lub bc1 (39-42 znaki)
- Ethereum: Zaczyna się od 0x (42 znaki)
- Litecoin: Zaczyna się od L lub M (34-43 znaki)
- Dash: Zaczyna się od X (34 znaki)
- Dogecoin: Zaczyna się od D (34 znaki)
- Skopiuj adres bezpośrednio ze swojego portfela — nie wpisuj go ręcznie
- Zweryfikuj sumę kontrolną: Użyj narzędzi do walidacji adresów, aby upewnić się, że jest poprawny
- Brak spacji i znaków nowej linii na początku/końcu adresu
🔒 Nie mogę zmienić adresu portfela
Objawy: Panel nie pozwala zaktualizować adresu portfela.
Najczęstsze przyczyny:
- 2FA nie jest włączone (wymagane przy zmianach portfela)
- Niedawna zmiana adresu (24-godzinny okres karencji)
- Oczekujące transakcje korzystające z bieżącego adresu
Rozwiązania:
- Włącz 2FA: Panel → Bezpieczeństwo → Uwierzytelnianie dwuskładnikowe
- Poczekaj na zakończenie okresu karencji: Funkcja bezpieczeństwa zapobiegająca nieautoryzowanym zmianom
- Poczekaj na zakończenie oczekujących transakcji
- W pilnych przypadkach: Skontaktuj się z pomocą techniczną, dołączając dokumenty weryfikacyjne
⚡ Wysokie opłaty sieciowe
Objawy: Klienci skarżą się na wysokie opłaty transakcyjne.
To normalne w okresach przeciążenia sieci. Opłaty są ustalane przez sieci blockchain, a nie przez GriffNode.
Rozwiązania:
- Używaj szybszych, tańszych monet: Litecoin i Dash zwykle mają niższe opłaty niż Bitcoin
- W przypadku Bitcoina:
- Używaj adresów SegWit (zaczynających się od bc1), aby uzyskać ~30% niższe opłaty
- Grupuj transakcje, gdy to możliwe
- Przyjmuj płatności w okresach mniejszego ruchu (weekendy często są tańsze)
- Sprawdź bieżące stawki opłat: mempool.space (Bitcoin)
- Oferuj szacowanie opłat: Nasze API udostępnia szacunki opłat dla różnych prędkości potwierdzania
Nadal masz problemy?
Jeśli ten przewodnik nie rozwiązał twojego problemu, nasz zespół wsparcia jest gotowy do pomocy!
Kontaktując się z pomocą techniczną, dołącz: komunikaty o błędach, identyfikatory żądań, znaczniki czasu oraz kroki umożliwiające odtworzenie problemu.