|
|
2 meses atrás | |
|---|---|---|
| .. | ||
| .mvn | 2 meses atrás | |
| src | 2 meses atrás | |
| .env.docker | 2 meses atrás | |
| .gitattributes | 2 meses atrás | |
| .gitignore | 2 meses atrás | |
| Dockerfile | 2 meses atrás | |
| README.md | 2 meses atrás | |
| mvnw | 2 meses atrás | |
| mvnw.cmd | 2 meses atrás | |
| pom.xml | 2 meses atrás | |
Mikroserwis odpowiedzialny za procesowanie płatności w ekosystemie przy użyciu bramki Stripe. Moduł działa w architekturze asynchronicznej – inicjuje sesję Checkout, weryfikuje kryptograficznie zdarzenia Webhook (potwierdzenia transakcji) z serwerów Stripe, aktualizuje stan lokalnej bazy danych i publikuje zdarzenia domenowe do RabbitMQ.
Do pełnego uruchomienia i testowania serwisu lokalnie (z zamknięciem obwodu Webhook) wymagane są:
localhost)..env w katalogu podpiętym pod Docker Compose (zawierający klucz testowy Stripe STRIPE_SECRET_KEY).Serwis wymaga wstrzyknięcia następujących kluczy (np. przez konfigurację Run/Debug w IntelliJ):
STRIPE_SECRET_KEY - Prywatny klucz API Stripe (format: sk_test_...)STRIPE_WEBHOOK_SECRET - Klucz do podpisywania i weryfikacji Webhooków lokalnie (format: whsec_...)Krytyczne dla bezpieczeństwa zespołu: Pliki
.envsą ignorowane przez Git (.gitignore). Nigdy nie commituj rzeczywistych kluczy do repozytorium. Pobierz je z bezpiecznego kanału komunikacji zespołu.
Zwraca adres URL, na który frontend powinien przekierować użytkownika w celu dokonania wpłaty.
/api/payments/create-sessionPOSTapplication/jsonPayload:
{
"orderId": "123e4567-e89b-12d3-a456-426614174000",
"amount": 2137,
"customerEmail": "klient@mail.com"
}
### 2. Odbiornik Webhook (Stripe Only)
Endpoint przeznaczony wyłącznie do komunikacji Server-to-Server z infrastrukturą Stripe.
URL: /api/payments/webhook
Metoda: POST
Logika: Weryfikuje nagłówek Stripe-Signature. Przetwarza wyłącznie zdarzenia typu checkout.session.completed wymuszając twardą deserializację.
Komunikacja Asynchroniczna (RabbitMQ)
Po pomyślnym zaksięgowaniu wpłaty, mikroserwis działa jako Publisher, emitując zdarzenie o zmianie statusu płatności w celu zawiadomienia modułów zamówień (order-service) i powiadomień (notification-service).
Exchange: payment_exchange (TopicExchange)
Routing Key: payment.completed
Format wiadomości (JSON):
json
{
"orderId": "UUID",
"status": "PAID",
"amount": 150.50
} ```
Uruchom tunel nasłuchujący (Stripe CLI) Wykonaj z poziomu głównego katalogu (tam gdzie docker-compose.yml):
Bash docker-compose up -d stripe-cli Pobierz Webhook Secret Odczytaj logi kontenera, aby zdobyć wygenerowany klucz kryptograficzny tunelu:
Bash docker logs stripe-cli-forwarder Skopiuj ciąg znaków rozpoczynający się od whsec_....
Uruchom aplikację Wklej skopiowany klucz jako zmienną środowiskową STRIPE_WEBHOOK_SECRET w konfiguracji uruchomieniowej Spring Boota i wystartuj serwis.
Wykonaj transakcję próbną
Użyj pliku requests.http w IntelliJ, by strzelić do endpointu /create-session.
Otwórz otrzymany link w przeglądarce.
Użyj numeru testowej karty Stripe: 4242 4242 4242 4242 (dowolna data w przyszłości, dowolny CVC).
Sprawdź konsolę payment-service - log o zaksięgowaniu wpłaty i wypchnięciu wiadomości do RabbitMQ potwierdza poprawność obwodu.