---
title: "Alerty płatności Stripe: telefon, gdy pieniądze są zagrożone"
description: "Kieruj webhooki Stripe na telefon z pilnością odpowiednią dla każdego zdarzenia — ciche powiadomienie o udanej płatności i połączenie przy sporze z terminem odpowiedzi."
date: 2026-09-09
author: Nooc
authorAvatarLink: /images/avatars/nooc.webp
authorLink: https://nooc.me
tags:
  - Stripe
  - alerty płatności
  - powiadomienia webhook
  - indie hackers
  - monitorowanie przychodów
---

# Alerty płatności Stripe: telefon, gdy pieniądze są zagrożone

Stripe wysyła ci maile o wszystkim, a więc o niczym. Udane obciążenie, nieudane odnowienie subskrypcji i chargeback trafiają jako ten sam rodzaj wiadomości do tej samej skrzynki, a zanim je przeczytasz, różnica między nimi już przepadła.

Rozwiązaniem nie jest więcej powiadomień. Rozwiązaniem jest nadanie każdemu zdarzeniu Stripe pilności, na jaką naprawdę zasługuje: cichy push, gdy ktoś zapłacił, alert czasowo krytyczny, gdy odnowienie się nie powiodło, i telefon, gdy przychodzi spór z terminem odpowiedzi.

## Które zdarzenia Stripe naprawdę cię potrzebują

Nie każde zdarzenie zasługuje na powiadomienie, a te, które zasługują, nie są równie pilne.

| Zdarzenie Stripe | Dlaczego to ważne | Pilność |
| --- | --- | --- |
| `payment_intent.succeeded` | Ktoś zapłacił. Dobrze wiedzieć, nigdy pilne. | Zwykła |
| `invoice.payment_failed` | Odnowienie się nie powiodło. Zostaje okno ponowień, zanim subskrypcja wygaśnie. | Czasowo krytyczna |
| `charge.dispute.created` | Chargeback. Stripe podaje termin odpowiedzi wyznaczony przez organizację kartową, a jego przekroczenie z automatu przegrywa sprawę. | Połączenie |
| `payment_intent.payment_failed` | Jednorazowa płatność się nie powiodła. Przydatne w skali, hałaśliwe pojedynczo. | Zwykła albo żadna |

Tylko spór uzasadnia telefon. Reszta może poczekać, aż sam sięgniesz po telefon; chargeback zauważony tydzień później to pieniądze, których i tak byś nie zatrzymał.

## Krok 1 — Jeden kanał na poziom pilności

Utwórz w Echobell trzy kanały, bo pilność jest ustawieniem kanału:

- **Stripe · Przychód** — zwykłe powiadomienia o udanych płatnościach
- **Stripe · Płatność nieudana** — czasowo krytyczne
- **Stripe · Spór** — połączenie

Skopiuj adres webhooka każdego kanału z jego ustawień. Stripe będzie kierował na wszystkie trzy.

Przy okazji włącz w każdym **Tylko POST**. Stripe zawsze wysyła POST-em, a to zapobiega przypadkowemu wyzwoleniu kanału przez podgląd linku albo autouzupełnianie paska adresu.

## Krok 2 — Dodaj endpointy w Stripe

W panelu Stripe przejdź do **Developers → Webhooks → Add endpoint**, wklej adres kanału i zaznacz tylko te zdarzenia, którymi ma zająć się ten kanał.

Dodaj po jednym endpoincie na kanał zamiast jednego na wszystko. Stripe pozwala wybierać zdarzenia dla każdego endpointu, więc routing dzieje się po jego stronie, a twoje kanały pozostają proste.

Jeśli wolisz jeden endpoint, skieruj go na jeden kanał i filtruj warunkiem:

```
type == "charge.dispute.created"
```

Warunki pisze się bez nawiasów `{{ }}`, których używają szablony.

## Krok 3 — Zamień payload w coś czytelnego

Stripe wysyła ciało JSON o takim kształcie:

```json
{
  "type": "charge.dispute.created",
  "data": {
    "object": {
      "amount": 4900,
      "currency": "usd",
      "reason": "fraudulent",
      "status": "warning_needs_response"
    }
  }
}
```

Szablony kanału sięgają więc do `data.object`:

**Tytuł**

```
Spór: {{data.object.reason}}
```

**Treść**

```
{{data.object.amount}} {{data.object.currency}} zakwestionowane
Status: {{data.object.status}}
```

**Pułapka, w którą wpadają wszyscy:** kwoty Stripe podawane są w najmniejszej jednostce waluty. `4900` to 49,00 $, a nie 4900 $. Szablony Echobell podstawiają wartość bez zmian, więc albo podziel przed wysłaniem, albo napisz walutę z tyłu i czytaj to jako centy. Jeśli liczba musi się zgadzać od pierwszego spojrzenia, umieść dzielenie w tym, co stoi między Stripe a Echobell — Workerze, automatyzacji, twoim własnym endpoincie.

Dla kanału przychodów ta sama myśl w mniejszej liczbie słów:

**Tytuł**

```
+{{data.object.amount}} {{data.object.currency}}
```

**Treść**

```
{{data.object.description}}
```

## Krok 4 — Przetestuj bez czekania na prawdziwą płatność

CLI Stripe potrafi wystrzelić prawdziwe payloady zdarzeń na twój endpoint:

```bash
stripe trigger payment_intent.succeeded
stripe trigger charge.dispute.created
```

Zrób to, zanim zaczniesz na tym polegać. To także najszybszy sposób, by zobaczyć, co wyrenderuje twój szablon, gdy pole, które uważałeś za pewne, przyjdzie jako `null`.

## Czego ta konfiguracja nie daje

Dwa ograniczenia, które warto znać, zanim postawisz to przed swoim przychodem.

**Echobell nie weryfikuje podpisu Stripe.** Stripe podpisuje każdy webhook nagłówkiem `Stripe-Signature`, a weryfikacja wymaga sekretu endpointu. Endpoint webhooka Echobell tej kontroli nie wykonuje, więc adres kanału jest jedyną rzeczą, która go chroni. Traktuj go jak sekret, zostaw włączone **Tylko POST** i nie wklejaj go do publicznego repozytorium ani na zrzut ekranu.

Słabą kontrolę zdroworozsądkową możesz dodać warunkiem:

```
header["stripe-signature"] != ""
```

To potwierdza, że coś wysyła żądanie w kształcie Stripe. Nie potwierdza, że był to Stripe. Jeśli sfałszowane powiadomienie wyrządziłoby realną szkodę — a nie tylko wywołało chwilę zamieszania — postaw z przodu własny endpoint, tam zweryfikuj podpis i niech to on woła Echobell.

**To ścieżka alertowania, nie księga.** Stripe ponawia nieudane dostarczenia webhooków, ale powiadomienia nie są zapisem tego, co się wydarzyło. Uzgadniaj ze Stripe, nie z historią powiadomień.

## Najczęstsze pytania

### Czy Stripe może zadzwonić do mnie bezpośrednio?

Nie. Stripe wysyła maile i webhooki. Telefon oznacza skierowanie webhooka do czegoś, co potrafi go wykonać.

### Czy alert o sporze naprawdę mnie obudzi?

Jeśli kanał jest w trybie połączenia — tak: przychodzi jako połączenie przychodzące i dzwoni przez Skupienie oraz Nie przeszkadzać. Zobacz [przebijanie trybu Skupienia w iOS dla krytycznych alertów](/pl/blog/how-to-bypass-ios-focus-mode-for-critical-alerts).

### Czy mój współzałożyciel może dostawać te same alerty?

Tak. Udostępnij kanał, a każdy subskrybent wybiera własny typ powiadomienia. Ty możesz odbierać połączenia, podczas gdy ktoś inny dostaje o tym samym zdarzeniu cichy push.

### A tryb testowy?

Zdarzenia trybu testowego Stripe trafiają do endpointów zarejestrowanych w trybie testowym. Zarejestruj adres kanału w obu, jeśli chcesz widzieć ten ruch, albo tylko w testowym, dopóki nie zaufasz konfiguracji.

## Podsumowanie

Trzy kanały, trzy endpointy, po jednym szablonie. Rzecz nie w tym, że Stripe cię powiadamia — już to robił. Rzecz w tym, żeby chargeback przestał wyglądać dokładnie jak paragon.

[Pobierz Echobell na iPhone'a](https://apps.apple.com/app/apple-store/id6743597198?pt=128151925&ct=blog-stripe-payment-alerts-pl&mt=8) albo [weź go z Google Play](https://play.google.com/store/apps/details?id=one.echobell.echobellandroid), a potem uruchom `stripe trigger charge.dispute.created` i pozwól telefonowi zadzwonić raz celowo.

---

## Powiązane treści

- [Dokumentacja wyzwalacza webhook](/pl/docs/webhook)
- [Dokumentacja systemu szablonów](/pl/docs/template)
- [Dokumentacja warunków kanału](/pl/docs/conditions)
- [Przebijanie trybu Skupienia w iOS dla krytycznych alertów](/pl/blog/how-to-bypass-ios-focus-mode-for-critical-alerts)
- [Przewodnik dla programistów po walce ze zmęczeniem alertami](/pl/blog/fix-alert-fatigue-developer-guide)
