Sådan forbinder du Stripe med Shopify Flow

Stripe er en betalingsplatform. Den sender en Webhook for hver betaling, refusion, tvist, ændring af abonnement og fakturabegivenhed på din konto. Workflow Webhooks omdanner dette kald til en Shopify Flow-udløser, så din butik kan reagere på det: mærke en kunde, tilføje en ordrekommentar, sende en intern e-mail, opdatere et metafelt - alt, hvad Shopify Flow kan gøre.

Denne vejledning beskriver hele forløbet - Stripe sender, Workflow Webhooks modtager og verificerer, Shopify Flow udfører handlingen - hvor Stripes HMAC-signatur kontrolleres ved hver anmodning, så kun Stripe kan igangsætte din arbejdsgang.

Hvad du kan bygge

  • Tag en »Shopify«-kunde, der har betalt via en Stripe-checkout eller et betalingslink, så dine segmenter forbliver synkroniserede.
  • Tilføj en ordrekommentar og giv dit team besked, så snart der oprettes en tvist.
  • Send en e-mail til personalet, når en abonnementsbetaling mislykkes, så nogen kan tage kontakt, inden kunden opsiger sit abonnement.

Typiske hændelser, der skal sendes: payment_intent.succeeded, charge.refunded, charge.dispute.created, customer.subscription.deleted, invoice.payment_failed.

Før du går i gang

  • Workflow Webhooks installeret på din Shopify-butik.
  • Shopify Flow installeret, som kan hentes gratis fra App Store på Shopify.
  • En konto på Stripe med tilladelse til at oprette webhooks.

Trin 1 - Opret webhook på Workflow Webhooks

  1. Åbn Workflow Webhooks -> Webhooks -> Opret webhook, og giv den et navn, du kan genkende i Shopify Flow, f.eks. Stripe events.
  2. Vælg HMAC under »Autentificering«.
  3. Vælg Stripe under »Signature provider«. Appen udfylder selv overskriften, algoritmen, den signerede payload og replay-vinduet for dig - der er ikke andet, du skal konfigurere.
  4. Lad feltet »Secret« være tomt foreløbig, og klik på »Gem«. Kopier den webhook-URL, der vises på siden.

Se Godkendelse for de øvrige godkendelsesmetoder og Kortlægning af payload og strømningsvariabler for at vælge, hvilke felter der skal sendes til Shopify Flow.

A webhook with HMAC authentication and Stripe as signature provider, showing the signing secret field, what is checked, and the steps to establish a connection to Stripe
En signeret afsender, her Stripe: Vælg udbyderen, indsæt dennes signeringsnøgle, og editoren viser, hvad der er markeret, og hvordan man forbinder den.

Trin 2 - Tilføj endpointet i Stripe

I Stripe-dashboardet skal du åbne »Developers« -> »Webhooks«, tilføje et endpoint med den URL, du har kopieret, og vælge de begivenheder, du vil sende.

Sådan finder du din Stripe-signeringsnøgle

Webhook-signeringsnøgle (whsec_...) fra Stripe-dashboardet -> Udviklere -> Webhooks.

Stripes egen dokumentation om webhook-signaturer indeholder den nøjagtige ordlyd og skærmbilleder, der gælder for din konto.

Indsæt den hemmelige nøgle i feltet »Secret« for webhooken på Workflow Webhooks og gem. Fra det øjeblik bliver hver eneste Stripe-levering verificeret, før den når frem til Shopify Flow.

Hvad dette kontrollerer

Hvad Værdi
Signaturhoved Stripe-Signature
Hvor underskriften er placeret I værdien »v1« for denne header, som indeholder »key=value«-par adskilt af kommaer
Hvad der er underskrevet {timestamp}.{body}
Underskrift HMAC-SHA256, hex-kodet
Tidspunkt t-værdien for signaturhovedet, angivet i Unix-sekunder
Beskyttelse mod gentagelse Anmodninger, hvis signerede tidsstempel ligger mere end 5 minutter fra nu, afvises
Hemmeligheden Bruges som almindelig tekst. Indsæt den nøjagtigt, som afsenderen har angivet den

I den signerede payload udgør {body} den rå anmodningstekst, byte for byte, og {timestamp} er ovenstående tidsstempel.

En anmodning, der ikke opfylder et af disse kriterier, afvises med fejlkoden »401«, registreres i »Historik og fejlfinding« og udløser aldrig en arbejdsgang.

Trin 3 - Opret arbejdsgangen »Shopify Flow«

  1. I »Shopify Flow« skal du oprette en arbejdsgang og vælge udløseren »Workflow Webhooks«.
  2. Tryk på »Optag begivenheder«, og send derefter en testbegivenhed fra Stripe (eller brug funktionen »Send test« i Workflow Webhooks), så Shopify Flow kan lære dine datas struktur at kende.
  3. Hver eneste webhook, du ejer, udløser den samme Shopify Flow-trigger, så tilføj en første betingelse baseret på webhook-id’et for at sikre, at denne arbejdsgang kun omfatter Stripe. Id’et vises på webhook-siden.
  4. Tilføj dine handlinger - tag en kunde, tilføj en note, send en intern e-mail, opdater et metafelt.
Shopify Flow
I »Shopify Flow« skal du vælge »Select a trigger«, åbne »Workflow Webhooks« og vælge »Webhook Trigger«.
I Shopify Flow: Webhook-id’et er det samme som ID’et for en bestemt webhook
Det første trin i enhver arbejdsgang: en betingelse baseret på webhook-ID’et, så arbejdsgangen kun udføres for denne webhook.
Den færdige arbejdsgang: Webhook-udløser, en betingelse baseret på webhook-ID’et, og derefter »Send intern e-mail« på »True«-grenen
Den færdige arbejdsgang: udløser, betingelse baseret på webhook-ID’et og derefter din handling på »True«-grenen.

Trin 4 - Test det fra start til slut

Udløs en reel hændelse i Stripe. Under »Workflow Webhooks« → »History« bør du kunne se opkaldet med status »Success«. Hvis signaturen var forkert, får du i stedet en fejlmeddelelse med årsagen, og på Bekræftelse af signerede webhooks finder du en signaturtester, der viser dig præcis, hvilket trin der mislykkedes.

En anmodning, der blev åbnet i History, med dens anmodningsheadere, payload, status, varighed og identifikatorer
En gennemført begivenhed i History: Status »Success« betyder, at Shopify Flow har accepteret den.
Underskriften stemmer ikke overens▾

I denne rækkefølge: hemmeligheden (den mest almindelige årsag - et ekstra mellemrum eller en nøgle fra det forkerte miljø), om afsenderen bruger en anden endepunkts hemmelighed, og om noget mellem Stripe og appen omskriver brødteksten. Signaturerne dækker de rå bytes, så en proxy, der omformaterer JSON, ødelægger dem. Signaturtesteren på webhook-siden viser den nøjagtige tekst, der blev signeret.

Jeg får en 401-fejl ved hver eneste forespørgsel▾

Kontroller, at webhookens godkendelse er indstillet til HMAC med Stripe valgt som udbyder, at den hemmelige nøgle er udfyldt, og at Stripe sender data til URL’en nøjagtigt som angivet i appen, inklusive koden i slutningen.

Der vises intet under »Historik«▾

Anmodningen blev aldrig modtaget. Tjek URL’en igen i Stripe, og se i Stripes egen leveringslog, hvilket svar der blev modtaget. En 404 betyder, at webhooken er forkert eller slettet, mens en 429 betyder, at du har overskredet din planens grænse for antallet af opkald - se Planer og anvendelse.

Arbejdsgangen kører for de forkerte begivenheder▾

Hver eneste webhook i din butik udløser den samme Shopify Flow-trigger. Tilføj en betingelse baseret på webhook-id’et som det første trin i arbejdsgangen, eller begræns de begivenheder, du sender fra Stripe.

Anmodningerne mislykkes med fejlmeddelelsen »tidsstempel uden for tolerancegrænserne«▾

Stripe underskriver en tidsstempel, og appen afviser alt, der er mere end 5 minutter gammelt. Dette skyldes normalt et urproblem hos afsenderen eller en levering, som Stripe har forsøgt igen meget senere med det oprindelige tidsstempel. Gentagne forsøg fra den samme oprindelige anmodning kan ikke godkendes; bed Stripe om at sende en ny begivenhed.

Relateret