Stripen maksut ja SaaS-laskutusjärjestelmät · Oppitunti

Asynkronisten tapahtumien webhookien käsittely

Määritä ja käsittele webhookeja, jotta sovelluksesi reagoi Stripen asynkronisiin tapahtumiin ja päivittää tilansa maksujen jälkeen.

Oppitunti 2/411 vaihetta

Asynkronisten tapahtumien webhookien käsittely on ilmainen Stripen maksut ja SaaS-laskutusjärjestelmät-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Stripen maksut ja SaaS-laskutusjärjestelmät-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Stripen maksut ja SaaS-laskutusjärjestelmät-kurssilla on yhteensä 4 oppituntia.

Maksut eivät aina tapahdu heti

Kun käsittelette maksuja, kaikki ei aina tapahdu heti. Ajatelkaa pankkisiirtoa: varojen siirtyminen ja selvittäminen vie aikaa. Tätä kutsutaan asynkroniseksi tapahtumaksi.

Sovelluksenne tarvitsee tavan saada tieto siitä, milloin nämä taustaprosessit ovat valmistuneet tai jos maksussa tapahtuu jokin tärkeä muutos.

Webhookit: maksuhälytyksenne

Tässä kohtaa webhookit tulevat mukaan! Webhook on sovelluksesta toiseen lähetettävä automaattinen viesti, joka lähetetään tietyn tapahtuman sattuessa.

  • Ne toimivat kuin hälytykset tai ilmoitukset.
  • Sen sijaan, että sovelluksenne kyselisi jatkuvasti Stripeltä, "Onko maksu jo valmis?" (tätä kutsutaan kyselyksi eli pollingiksi), Stripe ilmoittaa sovelluksellenne suoraan, kun jotain tapahtuu.

Stripen tapahtumailmoitukset

Stripe käyttää webhookeja ilmoittaakseen sovelluksellenne tilinne tärkeistä tapahtumista. Näitä voivat olla esimerkiksi:

  • Maksun onnistuminen tai epäonnistuminen.
  • Hyvityksen myöntäminen.
  • Asiakkaan tilauksen muuttuminen.

Kuuntelemalla näitä tapahtumia sovelluksenne voi päivittää omat tietonsa, lähettää asiakasviestejä tai käynnistää muuta liiketoimintalogiikkaa.

Tärkeimmät webhook-tapahtumatyypit

Webhook-tapahtumatyyppejä on monia, mutta jotkin niistä ovat maksujen käsittelyn kannalta erityisen tärkeitä:

  • payment_intent.succeeded: Maksu on veloitettu onnistuneesti.
  • charge.refunded: Maksusta on käsitelty hyvitys.
  • customer.subscription.updated: Asiakkaan tilaussuunnitelma tai tila on muuttunut.

Valitsette itse, minkä tapahtumien ilmoituksia sovelluksenne haluaa vastaanottaa.

Webhook-päätepisteen määrittäminen

Webhook-tapahtumien vastaanottamista varten Stripelle on annettava palvelimellanne oleva erityinen URL-osoite. Tätä URL-osoitetta kutsutaan webhook-päätepisteeksi.

Kun tapahtuma ilmenee, Stripe lähettää tähän URL-osoitteeseen HTTP POST -pyynnön, joka sisältää tapahtuman tiedot. Määritätte URL-osoitteen ja valitsette tapahtumatyypit Stripe Dashboardissa.

Palvelimenne kuuntelee

Webhook-päätepisteenne on sovelluksenne tavallinen HTTP-päätepiste. Se odottaa, että Stripe lähettää sille tietoja. Seuraavassa on käsitteellinen esimerkki siitä, mitä tällainen päätepiste voisi tehdä:

public class WebhookController {
  @PostMapping("/stripe-webhook")
  public ResponseEntity<String> handleWebhook(@RequestBody String payload, @RequestHeader("Stripe-Signature") String sigHeader) {
    // 1. Verify the signature (CRUCIAL!)
    // 2. Parse the event payload
    // 3. Process the event based on its type
    return new ResponseEntity<>("Event received", HttpStatus.OK);
  }
}

Luottakaa, mutta varmistakaa!

Kuvitelkaa, että joku haitallinen lähettää webhook-päätepisteeseenne väärennettyjä ilmoituksia maksujen onnistumisesta. Ilman varmennusta sovelluksenne saattaisi erehdyksessä myöntää pääsyn palveluun tai lähettää tuotteen ilman maksua!

Siksi webhook-allekirjoitusten varmennus on ehdottoman tärkeää. Se varmistaa, että saapuvat tapahtumat ovat todella peräisin Stripeltä eikä niitä ole peukaloitu.

Suojaa webhook-päätepisteenne

Stripe lähettää jokaisen webhook-tapahtuman mukana yksilöllisen allekirjoituksen Stripe-Signature-otsakkeessa. Käytätte Stripe Dashboardista saatua yksilöllistä webhook-salaisuuttanne laskeaksenne paikallisesti vastaavan allekirjoituksen.

Jos allekirjoitukset täsmäävät, voitte luottaa tapahtumaan. Näin käyttäisitte Stripe Java -kirjastoa tähän:

import com.stripe.model.Event;
import com.stripe.exception.SignatureVerificationException;
import com.stripe.net.Webhook;

public class VerifyWebhook {
  public static void main(String[] args) {
    // In a real app, these come from the HTTP request:
    String jsonPayload = "{"id":"evt_test","object":"event","type":"payment_intent.succeeded"}";
    String stripeSignatureHeader = "t=1678886400,v1=5d53a9f0a... (truncated)"; // Placeholder
    String webhookSecret = "whsec_your_secret_here"; // Get this from Stripe Dashboard

    System.out.println("--- Webhook Signature Verification ---");

    try {
      Event event = Webhook.constructEvent(
          jsonPayload, stripeSignatureHeader, webhookSecret
      );

      System.out.println("✅ Webhook signature verified!");
      System.out.println("Event Type: " + event.getType());
      // Now process the 'event' object safely
    } catch (SignatureVerificationException e) {
      System.err.println("❌ Verification FAILED: " + e.getMessage());
      System.err.println("Make sure the signature and secret are correct.");
    } catch (Exception e) {
      System.err.println("An unexpected error occurred: " + e.getMessage());
    }
  }
}

Kestävä tapahtumankäsittely

Tietoturvan lisäksi webhook-käsittelijänne tulee olla kestävä:

  • Vastatkaa nopeasti (200 OK): Stripe odottaa 200-tilakoodia muutaman sekunnin kuluessa. Muussa tapauksessa se saattaa yrittää lähettää tapahtuman uudelleen.
  • Idempotenssi: Suunnitelkaa käsittelijänne niin, että se voi käsitellä saman tapahtuman useita kertoja aiheuttamatta toistuvia toimintoja. Stripe saattaa lähettää tapahtumia uudelleen.
  • Asynkroninen käsittely: Älkää tehkö raskasta käsittelyä suoraan webhook-päätepisteessä. Siirtäkää tehtävät taustatöiksi (esimerkiksi jonoihin), jotta voitte vastata nopeasti.

Webhook-tietoturvakysymys

Miksi Stripeltä saapuvien webhook-tapahtumien allekirjoitus on ehdottoman tärkeää varmentaa?

Kertaus: webhookit asynkronisia tapahtumia varten

Olette oppineet, kuinka webhookit ovat välttämättömiä asynkronisten tapahtumien käsittelyssä maksuprosessoinnin yhteydessä:

  • Ne tarjoavat reaaliaikaisia ilmoituksia Stripeltä.
  • Määritätte päätepisteen ja kuuntelette tiettyjä tapahtumatyyppejä.
  • Allekirjoitusten varmennus on tietoturvan kannalta ratkaisevan tärkeää.
  • Kestävät käsittelijät vastaavat nopeasti ja käsittelevät tapahtumat idempotentisti.

Webhookien hallitseminen on luotettavien ja turvallisten maks integraatioiden rakentamisen perusta!

Aloita maksutta

Opi Stripen maksut ja SaaS-laskutusjärjestelmät tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”Asynkronisten tapahtumien webhookien käsittely” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Stripen maksut ja SaaS-laskutusjärjestelmät-oppimispolun 3 oppituntia, myös oppitunnin “Asynkronisten tapahtumien webhookien käsittely”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Stripen maksut ja SaaS-laskutusjärjestelmät-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Asynkronisten tapahtumien webhookien käsittely”?

Määritä ja käsittele webhookeja, jotta sovelluksesi reagoi Stripen asynkronisiin tapahtumiin ja päivittää tilansa maksujen jälkeen. Harjoittelet Stripen maksut ja SaaS-laskutusjärjestelmät-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Stripen maksut ja SaaS-laskutusjärjestelmät-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Stripen maksut ja SaaS-laskutusjärjestelmät-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Asynkronisten tapahtumien webhookien käsittely”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Stripen maksut ja SaaS-laskutusjärjestelmät-oppitunnilla?

Kyllä. Jokainen Stripen maksut ja SaaS-laskutusjärjestelmät-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Payment Intents API:n integrointi
  2. Asynkronisten tapahtumien webhookien käsittely
  3. Hyvitysten ja maksukiistojen tehokas hallinta
  4. Idempotenssin toteuttaminen luotettaville maksu-API:ille
← Takaisin: Stripen maksut ja SaaS-laskutusjärjestelmät