Kako dodati plaćanja u aplikaciju: Checkout, pretplate i webhookovi
Najjednostavniji način da dodate plaćanja u aplikaciju je Stripe: koristite Payment Link ako vam treba samo dugme „Kupi“ i možete ručno obrađivati narudžbe, Stripe Checkout ako aplikacija treba znati ko je platio i reagovati automatski, te Checkout u načinu pretplate plus Stripeov portal za kupce za ponavljajuću naplatu. U svakom slučaju osim najjednostavnijeg, potreban vam je i webhook, tj. serverska adresa koju Stripe poziva kad je plaćanje uspješno, a sve treba testirati Stripeovim test ključevima i test karticama prije prelaska na žive ključeve.
Ovaj vodič objašnjava svaku opciju, dio s webhookom koji većina uputstava preskače i šta provjeriti prije naplate pravog novca. Podaci o Stripeu su iz njegove dokumentacije od septembra 2026.
Zašto uopće koristiti pružaoca usluga plaćanja
Nikad ne prikupljajte brojeve kartica u sopstvenim obrascima. Rad sa sirovim podacima o karticama uvodi vas u obaveze po PCI DSS standardu (sigurnosni standard industrije kartica) i predstavlja ozbiljan rizik. Pružalac poput Stripea hostuje obrazac za plaćanje, čuva karticu, obavlja autentifikaciju kod banke i javlja vašoj aplikaciji rezultat. Vaša aplikacija uvijek vidi samo „kupac X je platio za Y“.
Ovaj vodič koristi Stripe jer je široko korišćen, dobro dokumentovan i podržan u većini AI alata za izradu aplikacija. Postoje i drugi pružaoci, a neki djeluju kao „merchant of record“ i preuzimaju obradu poreza na promet umjesto vas; ako vas brine poreska usklađenost, vrijedi uporediti i taj model.
Tri načina za prihvatanje plaćanja preko Stripea
| Opcija | Potreban kod | Aplikacija zna ko je platio? | Najbolje za |
|---|---|---|---|
| Payment Links | Nikakav | Samo ako dodate webhook | Prodaju nekoliko fiksnih proizvoda, donacije, provjeru potražnje |
| Checkout (jednokratno) | Serverski kod za kreiranje sesije | Da, preko webhooka | Prodavnice, plaćena preuzimanja, jednokratne kupovine |
| Checkout (pretplata) | Serverski kod plus obrada webhooka | Da, preko webhooka | SaaS, članarine, sve što se ponavlja |
Payment Links
Payment Link je stranica za plaćanje koju hostuje Stripe i koju kreirate u Stripe kontrolnoj tabli bez koda. Dobijate URL koji možete staviti iza dugmeta u aplikaciji, podijeliti u e-poruci ili prikazati kao QR kod. Stripeova dokumentacija kaže da Payment Links mogu prodavati proizvod, pretplatu ili primati donaciju, a kupci mogu birati šta plaćaju ili se može ograničiti broj kupovina.
Kvaka: vaša aplikacija automatski ne zna da je neki prijavljeni korisnik platio. Za stranicu za donacije ili malu prodavnicu gdje narudžbe ispunjavate ručno iz Stripeovih e-poruka s obavještenjima, to je u redu. Za „plati da otključaš Pro funkcije“ nije.
Stripe Checkout
Checkout je stranica za plaćanje koju vaš server kreira na zahtjev za određenu kupovinu. Vaš server kaže Stripeu šta se kupuje (i opciono koji kupac kupuje), Stripe vraća URL, a vi kupca šaljete tamo. Stripe ga opisuje kao podršku za jednokratna plaćanja i pretplate, kao potpuno Stripeovu stranicu, stranicu ugrađenu u vaš sajt ili ugrađeni obrazac.
Tok:
- Kupac klikne Kupi u vašoj aplikaciji.
- Vaš server kreira Checkout sesiju koristeći vaš tajni ključ, uključujući ID koji je povezuje s korisnikom ili narudžbom.
- Kupac se preusmjerava na Stripe i plaća.
- Stripe ga vraća na vašu stranicu za uspjeh.
- Stripe šalje događaj
checkout.session.completedvašem webhooku, a vaš server označava narudžbu plaćenom ili otključava pristup.
Korak 2 mora se dogoditi na serveru, jer koristi vaš tajni ključ. To je glavni razlog zašto Checkout treba backend.
Pretplate
Pretplate koriste Checkout u načinu pretplate s ponavljajućom cijenom koju postavite u Stripeu. Prvo plaćanje funkcioniše kao gore opisani tok. Nakon toga, obnavljanja, neuspjele kartice, nadogradnje i otkazivanja dešavaju se tokom vremena, često kad kupac nije uopšte u vašoj aplikaciji, pa vaša aplikacija za to saznaje samo preko webhookova.
Za to da kupci sami upravljaju pretplatom, Stripe nudi hostovani portal za kupce. Prema Stripeovoj dokumentaciji, kupci tamo mogu ažurirati načine plaćanja i podatke za naplatu, promijeniti ili otkazati pretplate, te pregledati i preuzeti račune. Podešavate ga u Stripe kontrolnoj tabli i dodajete dugme „Upravljaj naplatom“ koje šalje kupca tamo. Time ne morate sami praviti te ekrane.
Webhookovi: dio koji ne možete preskočiti
Webhook je HTTP zahtjev koji Stripe šalje vašem serveru kad se nešto dogodi. (Pogledajte šta je webhook za opšti pojam.) Stripeov vodič za ispunjavanje narudžbi jasan je: ne možete se osloniti samo na stranicu za uspjeh da biste ispunili narudžbu, jer kupac može platiti pa izgubiti vezu prije nego se ta stranica učita. Za pretplate i odložene načine plaćanja webhookovi su obavezni.
Događaji koje vrijedi obraditi
| Događaj | Šta znači | Šta radi vaša aplikacija |
|---|---|---|
checkout.session.completed | Checkout je završen | Označi narudžbu plaćenom ili pokreni pristup |
checkout.session.async_payment_succeeded | Odloženi način (npr. bankovno zaduženje) je kasnije prošao | Ispuni odmah |
checkout.session.async_payment_failed | To odloženo plaćanje nije uspjelo | Obavijesti kupca; nemoj ispunjavati |
invoice.paid | Plaćanje pretplate je uspjelo, uključujući obnavljanja | Produži pristup |
invoice.payment_failed | Obnavljanje nije uspjelo | Upozori korisnika; Stripe može pokušati ponovo |
customer.subscription.updated | Plan je promijenjen ili je zakazano otkazivanje | Ažuriraj korisnikov plan |
customer.subscription.deleted | Pretplata je završena | Ukloni pristup za plaćene funkcije |
Pravila za ispravan handler webhooka
Ovo dolazi direktno iz Stripeove dokumentacije za webhookove, a handleri koje generiše AI ponekad nešto od toga propuste:
- Provjerite potpis. Svaki događaj uključuje zaglavlje
Stripe-Signature. Vaš handler ga provjerava pomoću tajnog ključa za potpisivanje krajnje tačke (počinje swhsec_). Bez toga bi neko mogao poslati lažnu poruku „plaćanje uspjelo“ vašem serveru. - Koristite sirovo tijelo zahtjeva. Provjera potpisa ne uspijeva ako okvir prvo parsira ili izmijeni tijelo.
- Brzo vratite odgovor 2xx, a zatim obavljajte sporiji posao. Isteci vremena računaju se kao greške.
- Obradite duplikate. Stripe može isporučiti isti događaj više puta. Bilježite ID-jeve obrađenih događaja ili napravite ispunjavanje sigurnim za dvostruko izvršavanje.
- Ne pretpostavljajte redoslijed. Stripe ne garantuje da događaji stižu onim redom kojim su se dogodili.
- Očekujte ponovne pokušaje. U live načinu rada Stripe ponavlja neuspjele isporuke do tri dana, pa kratak prekid ne gubi plaćanja, ali vaš handler mora podnijeti zakasnjele događaje.
Webhookovima treba javna HTTPS adresa, pa obično rade tek kad je vaša aplikacija objavljena (Stripeov CLI može proslijediti događaje na lokalni računar za programere).
Upit koji pokriva cijeli tok
Dodaj jednokratnu kupovinu sa Stripe Checkoutom za „Pro paket“ (ID cijene u STRIPE_PRICE_ID). Kreiraj Checkout sesiju na serveru koristeći STRIPE_SECRET_KEY iz tajni, i uključi ID prijavljenog korisnika u sesiju. Dodaj krajnju tačku POST /api/stripe/webhook koja provjerava Stripe potpis pomoću STRIPE_WEBHOOK_SECRET koristeći sirovo tijelo zahtjeva, obrađuje checkout.session.completed i označava tog korisnika kao korisnika Pro paketa. Neka bude sigurno ako isti događaj stigne dvaput. Stranice za uspjeh i otkazivanje. Nikad ne izlažite tajni ključ pregledniku.
Za pretplate dodajte: „Koristi način pretplate sa STRIPE_PRICE_ID. Obradi invoice.paid, invoice.payment_failed, customer.subscription.updated i customer.subscription.deleted. Dodaj dugme Upravljaj naplatom koje otvara Stripe portal za kupce.“
Test način rada
Stripe ima odvojene sandbox (test) i live okruženja s odvojenim ključevima. Sandbox ključevi počinju s pk_test_, sk_test_ ili rk_test_; live ključevi počinju s pk_live_, sk_live_ ili rk_live_. Test transakcije ne pomjeraju novac.
Korisne test kartice iz Stripeove dokumentacije za testiranje (bilo koji budući datum isteka, bilo koji trocifreni CVC):
| Broj kartice | Rezultat |
|---|---|
4242 4242 4242 4242 | Plaćanje uspijeva |
4000 0000 0000 0002 | Kartica je odbijena |
4000 0000 0000 3220 | Potrebna je 3D Secure autentifikacija, zatim uspjeh |
Testirajte barem:
- Uspješno plaćanje otključava pravu stvar za pravog korisnika
- Odbijena kartica prikazuje jasnu poruku i ništa ne otključava
- Zatvaranje tab-a u pregledniku odmah nakon plaćanja i dalje daje pristup (to dokazuje da webhook radi, a ne samo stranica za uspjeh)
- Otkazivanje na Stripe stranici vraća korisnika u vašu aplikaciju bez naplate
- Za pretplate: otkažite u portalu za kupce i provjerite da pristup prestaje kad treba
Puštanje u rad
- Aktivirajte svoj Stripe račun unosom podataka o firmi i banci.
- Zamijenite živim ključevima u tajnama vaše aplikacije. Stripe preporučuje ograničene ključeve sa samo dozvolama koje vaša integracija treba, umjesto neograničenog tajnog ključa.
- Kreirajte live krajnju tačku webhooka koja pokazuje na objavljenu aplikaciju. Ona ima sopstveni tajni ključ za potpisivanje, drugačiji od test ključa — ažurirajte ga.
- Ponovo kreirajte proizvode i cijene u live načinu rada; test ID-jevi tamo ne postoje.
- Napravite jednu pravu malu kupovinu i vratite novac.
Sve ključeve držite u tajnama projekta, nikad u kodu ili chatu. Naša kontrolna lista sigurnosti detaljnije pokriva ključeve i provjeru webhookova.
Porezi, povrati i papirologija
Plaćanja donose obaveze koje kod ne rješava. Ovo nije poreski savjet; provjerite kod računovođe.
- Porez na promet, PDV i GST. U zavisnosti od toga gdje ste vi i vaši kupci, možda ćete se morati registrovati, obračunavati i prijavljivati porez. Stripe Tax može izračunati i naplatiti porez na blagajni, pratiti gdje vaša prodaja može stvoriti obavezu i pomoći s registracijom i prijavama, ali odgovornost ostaje na vama. Merchant-of-record pružaoci su alternativa koja preuzima više tog posla.
- Povrati i sporovi. Odlučite politiku povrata prije objavljivanja i stavite je na sajt. Sporovi (chargebackovi) se dešavaju; čuvajte evidenciju o tome šta je kupljeno i isporučeno.
- Računi i fakture. Stripe može slati potvrde e-poštom; firme mogu trebati ispravne fakture.
- Naknade. Svaki pružalac naplaćuje po transakciji. Provjerite trenutnu stranicu s cijenama pružaoca, a ne oslanjajte se na brojke iz članaka.
Koje podešavanje odgovara vašoj aplikaciji
- Donacije ili nekoliko proizvoda: Payment Links. Pogledajte kako napraviti web stranicu za donacije neprofitnim organizacijama.
- Prodavnica s korpom: Checkout sa stavkama i webhookom. Pogledajte kako napraviti online prodavnicu.
- SaaS ili članarine: Checkout u načinu pretplate, webhookovi i portal za kupce. Pogledajte kako napraviti SaaS MVP i kako odrediti cijenu SaaS proizvoda.
- Tržište koje isplaćuje prodavcima: drugačije, strože podešavanje (Stripe Connect ili slično). Planirajte to zasebno.
Dodavanje plaćanja na Mythexu
Plaćanja u aplikacijama koje pravite na Mythexu koriste vaš sopstveni Stripe račun i ključeve; za vašu aplikaciju ne postoji dugme „Poveži Stripe“ u jednom koraku. Uobičajeni tok:
- Nabavite Stripe test ključeve.
- Dodajte
STRIPE_SECRET_KEY(a kasnije tajni ključ webhooka) u tajne projekta — preko/secrets, postavki projekta ili kartice s tajnama koju agent prikaže kad mu treba ključ. - Tražite od agenta Checkout pomoću upita sličnog gornjem.
- Testirajte u pregledu s test karticama. Objavite prije registracije webhooka, jer mu treba vaša javna URL adresa.
- Nakon prelaska na live ključeve, objavite ponovo da živa aplikacija preuzme ključeve.
Pogledajte Prihvatanje plaćanja sa Stripeom i Obrada webhookova u backendu u dokumentaciji.
Pitanja
Koji je najjednostavniji način za prihvatanje plaćanja u aplikaciji?
Stripe Payment Link ne traži kod: kreirate ga u Stripe kontrolnoj tabli i povežete s aplikacijom. Ako vaša aplikacija treba znati ko je platio i automatski otključati nešto, umjesto toga koristite Stripe Checkout s webhookom.
Treba li mi webhook za prihvatanje plaćanja?
Ako vaša aplikacija mora reagovati na plaćanje, na primjer otključati nalog, označiti narudžbu plaćenom ili obraditi obnavljanje, onda da. Stripeova dokumentacija kaže da se ne možete osloniti samo na stranicu za uspjeh, jer kupac može platiti i nikada je ne vidjeti. Webhookovi su potrebni i za pretplate.
Kako testirati plaćanja bez stvarnog novca?
Koristite Stripeove sandbox (test) API ključeve i test brojeve kartica, na primjer 4242 4242 4242 4242 s bilo kojim budućim datumom isteka i bilo kojim trocifrenim CVC-om. Test transakcije ne pomjeraju stvarni novac.
Da li Stripe umjesto mene obrađuje porez na promet i PDV?
Stripe Tax može izračunati i naplatiti porez na blagajni i pratiti gdje biste se možda trebali registrovati, ali vi ostajete odgovorni za svoje poreske obaveze. Za vašu situaciju provjerite kod računovođe.