Testy i uruchomienie
Testy i uruchomienie produkcyjne
Test end-to-end na sandboxie
Zanim przełączysz sklep na produkcję, przejdź pełną ścieżkę zakupową na środowisku testowym i potwierdź każdy z czterech punktów:
Utwórz zamówienie
Złóż zamówienie w sklepie i sprawdź, czy POST /v1/orders zwrócił 201 Created z niepustym applicationUrl.
Przejdź formularz wniosku
Otwórz applicationUrl i przejdź wniosek do końca. Sprawdź, czy kwota na formularzu zgadza się z wartością koszyka w sklepie — rozjazd oznacza zwykle błąd w przeliczaniu groszy albo pominiętą pozycję ADDITIONAL_FEE.
Potwierdź odbiór notyfikacji
Sprawdź w logach, czy Comfino wywołał Twój notifyUrl i czy odpowiedziałeś 200 OK. Zweryfikuj, że podpis CR-Signature zgodził się z wyliczonym hashem. Brak notyfikacji przy poprawnym notifyUrl to najczęściej blokada na firewallu — patrz Filtrowanie IP.
Sprawdź status zamówienia w sklepie
Potwierdź, że status zamówienia w panelu sklepu zmienił się zgodnie z decyzją kredytową oraz że klient wracający na returnUrl zobaczył właściwy komunikat.
Checklista przejścia na produkcję
Wykonaj wszystkie punkty — pominięcie któregokolwiek objawia się zwykle błędem 401 albo brakiem notyfikacji.
| Do zmiany | Sandbox | Produkcja |
|---|---|---|
| Host API | https://api-ecommerce.craty.pl | https://api-ecommerce.comfino.pl |
| Host skryptu widgetu | https://widget.craty.pl/v2/widget-frontend.min.js | https://widget.comfino.pl/v2/widget-frontend.min.js |
apiKey | klucz testowy | klucz produkcyjny |
widgetKey | klucz testowy | klucz produkcyjny |
Dodatkowo:
- Biała lista IP — jeśli filtrujesz ruch przychodzący, dopuść adres produkcyjny
94.152.189.231. Adresy testowe (35.187.24.192,35.205.155.59,35.240.21.61,34.77.240.220) zostaw, jeśli nadal korzystasz z sandboxa. Przykład konfiguracji: Filtrowanie IP. notifyUrlireturnUrl— muszą wskazywać na publicznie dostępne adresy produkcyjne po HTTPS, nie na localhost ani środowisko stagingowe.- Logowanie — zachowaj surowe body notyfikacji przez kilka dni. Bez niego diagnostyka niezgodnego podpisu jest praktycznie niemożliwa.
401 Authorization failed, w pierwszej kolejności sprawdź, czy zmieniłeś również apiKey.Najczęstsze błędy
| Objaw | Przyczyna | Rozwiązanie |
|---|---|---|
401 Authorization failed | Brak nagłówka Api-Key, literówka w kluczu albo klucz z innego środowiska. | Sprawdź parę host + klucz. Nagłówek to Api-Key, wartość bez prefiksów typu Bearer. |
400 Bad Request przy tworzeniu wniosku | Suma price × quantity pozycji koszyka nie równa się totalAmount. | Doliczaj koszty jako pozycję ADDITIONAL_FEE, a rabaty jako DISCOUNT z ujemną ceną. |
| Kwoty na formularzu 100× za małe lub za duże | Kwoty przesłane w złotych zamiast w groszach albo jako liczby zmiennoprzecinkowe. | Wszystkie kwoty to int w groszach — 1500,00 zł to 150000. |
| Notyfikacje przychodzą w kółko | Sklep odpowiada kodem innym niż 200 OK. | Odpowiadaj 200 OK nawet wtedy, gdy status już przetworzyłeś; obsłuż notyfikacje idempotentnie. |
| Notyfikacje nie przychodzą wcale | Firewall blokuje ruch z Comfino albo notifyUrl nie jest publicznie dostępny. | Dodaj adresy IP Comfino do białej listy i sprawdź, czy adres odpowiada z zewnątrz. |
Podpis CR-Signature nigdy się nie zgadza | Hash liczony z ponownie zserializowanego JSON-a zamiast z surowego body. | Licz sha3-256(apiKey + rawBody) na dokładnie tym ciągu, który przyszedł w żądaniu. |
| Widget nie pojawia się na stronie produktu | Błędny priceSelector lub widgetTargetSelector, albo przekroczony 5-sekundowy timeout. | Sprawdź selektory w konsoli przeglądarki. Timeout jest celowo cichy — brak widgetu nie może zgłaszać błędu użytkownikowi. |
405 Method Not Allowed w logach notyfikacji | Endpoint notifyUrl nie przyjmuje metody PUT. | Obsłuż PUT; Comfino ponawia wtedy metodą POST, ale poprawna obsługa PUT oszczędza jedno wywołanie. |