Środowisko testowe
dpay.pl udostępnia tryb testowy, który pozwala przetestować integrację bez obciążania prawdziwych kont. Transakcje testowe są widoczne w panelu administracyjnym, ale nie generują rzeczywistych przepływów pieniężnych.
Włączanie trybu testowego
- Zaloguj się do panel.dpay.pl.
- Przejdź do Punkty Płatności > Serwisy.
- Wybierz serwis, który chcesz przetestować.
- Włącz przełącznik Tryb testowy.
Tryb testowy jest dostępny od razu po utworzeniu serwisu - nie musisz czekać na weryfikację konta, aby rozpocząć integrację.
Co się dzieje w trybie testowym?
- Brak rzeczywistych obciążeń - żadne pieniądze nie są pobierane z kont klientów
- Transakcje widoczne w panelu - wszystkie testowe transakcje pojawiają się w historii transakcji z oznaczeniem testowym
- IPN działa normalnie - powiadomienia IPN są wysyłane na Twój endpoint tak samo jak w trybie produkcyjnym
- Pełne API - wszystkie endpointy działają identycznie jak na produkcji
Testowanie IPN lokalnie
Podczas developmentu Twój serwer zwykle działa na localhost, który nie jest dostępny z internetu. Aby dpay.pl mogło wysyłać powiadomienia IPN na Twój lokalny serwer, użyj narzędzia do tunelowania.
ngrok
ngrok tworzy tunel HTTPS do Twojego lokalnego serwera:
# Uruchom tunel (zakładając, że Twój serwer działa na porcie 3000)
ngrok http 3000
ngrok wygeneruje publiczny adres, np. https://abc123.ngrok-free.app. Użyj go jako url_ipn:
{
"url_ipn": "https://abc123.ngrok-free.app/api/ipn"
}
Alternatywy
- Cloudflare Tunnel - darmowy tunel od Cloudflare
- localtunnel - proste narzędzie open-source (
npx localtunnel --port 3000)
Pamiętaj, że adres tunelu zmienia się po każdym restarcie (w darmowej wersji ngrok). Aktualizuj url_ipn w zapytaniach testowych.
Testowanie scenariuszy
Płatność zakończona sukcesem
- Zarejestruj transakcję przez API z prawidłowymi danymi.
- Klient zostaje przekierowany na bramkę płatności.
- Po zatwierdzeniu płatności - IPN trafia na Twój endpoint ze statusem
paid. - Klient jest przekierowany na
url_success.
Płatność anulowana
- Zarejestruj transakcję przez API.
- Na bramce klient wybiera opcję anulowania.
- Klient jest przekierowany na
url_fail.
IPN niedostępny (retry)
- Wyłącz tymczasowo swój endpoint IPN (np. zatrzymaj serwer).
- Zarejestruj i opłać transakcję testową.
- dpay.pl będzie ponawiać dostarczenie IPN (do 10 prób z exponential backoff).
- Uruchom serwer ponownie - IPN zostanie dostarczony przy następnej próbie.
- Sprawdź w panelu historię dostarczeń IPN dla danej transakcji.
Testowanie zwrotów
- Wykonaj udaną transakcję testową.
- Wywołaj endpoint zwrotu z
transaction_idopłaconej transakcji. - Sprawdź odpowiedź API i status transakcji w panelu.
Weryfikacja odpowiedzi API
W trybie testowym odpowiedzi API mają identyczny format jak na produkcji. Upewnij się, że Twoja aplikacja poprawnie obsługuje:
| Scenariusz | Co sprawdzić |
|---|---|
| Sukces rejestracji | Pole error: false, obecność transactionId i URL w msg |
| Błąd checksum | Odpowiedź 400 z komunikatem Invalid checksum |
| IPN | Weryfikacja signature, idempotentność, odpowiedź 200 OK |
| Zwrot | Status success w odpowiedzi, aktualizacja refunded_amount |
Checklist przed przejściem na produkcję
Przed wyłączeniem trybu testowego upewnij się, że:
- Checksum - generowany poprawnie dla wszystkich typów zapytań (rejestracja, zwrot)
- IPN - endpoint działa, weryfikuje podpis (
signature), odpowiada200 OK - Idempotentność - IPN przetwarzany tylko raz per transakcja
- Weryfikacja kwoty - kwota z IPN porównywana z kwotą zamówienia w bazie
- Obsługa błędów - aplikacja poprawnie reaguje na błędy API (400, 401, 500)
- HTTPS - wszystkie adresy URL (
url_success,url_fail,url_ipn) używają HTTPS - Secret Hash - przechowywany bezpiecznie w zmiennych środowiskowych, nie w kodzie
- Zwroty - jeśli korzystasz ze zwrotów, przetestowane zwroty pełne i częściowe
- Logowanie - przychodzące IPN i odpowiedzi API są logowane do celów diagnostycznych
Po spełnieniu wszystkich punktów wyłącz tryb testowy w panelu - Twój serwis jest gotowy na produkcję.