Hoe koppelt u Stripe aan Shopify Flow

Stripe is een betalingsplatform. Het verstuurt een Webhook bij elke betaling, terugbetaling, geschil, wijziging in een abonnement en factuurgebeurtenis in uw account. Workflow Webhooks zet die oproep om in een Trigger voor Shopify Flow, zodat uw winkel hierop kan reageren: een klant taggen, een opmerking bij een bestelling toevoegen, een interne e-mail versturen, een Metaveld bijwerken - alles Shopify Flow kan doen.

Deze handleiding beschrijft het volledige proces - Stripe verzendt, Workflow Webhooks ontvangt en verifieert, Shopify Flow voert de actie uit - waarbij bij elk verzoek de HMAC-handtekening van Stripe wordt gecontroleerd, zodat uitsluitend Stripe uw workflow kan starten.

Wat u kunt bouwen

  • Markeer een klant van Shopify die via een Stripe-checkout-pagina of betalingslink heeft betaald, zodat uw segmenten gesynchroniseerd blijven.
  • Voeg een opmerking bij de bestelling toe en breng uw team op de hoogte zodra er een geschil wordt geopend.
  • Stuur het personeel een e-mail wanneer een abonnementsbetaling mislukt, zodat iemand contact kan opnemen voordat de klant afhaakt.

Voorbeelden van gebeurtenissen die u kunt doorgeven: payment_intent.succeeded, charge.refunded, charge.dispute.created, customer.subscription.deleted, invoice.payment_failed.

Voordat u begint

  • Workflow Webhooks geïnstalleerd in uw Shopify-winkel.
  • Shopify Flow geïnstalleerd, dat gratis te downloaden is via de App Store van Shopify.
  • Een Stripe-account met toestemming om webhooks aan te maken.

Stap 1 - Maak de webhook aan op Workflow Webhooks

  1. Ga naar Workflow Webhooks -> Webhooks -> Maak een webhook aan en geef deze een naam die u in Shopify Flow zult herkennen, zoals Stripe events.
  2. Kies onder ‘Authenticatie’ de optie ‘HMAC’.
  3. Kies onder „Signature provider“ de optie „Stripe“. De app vult de header, het algoritme, de ondertekende payload en het replay-venster automatisch voor u in - u hoeft verder niets meer in te stellen.
  4. Laat het veld ‘geheim’ voorlopig leeg en klik op ‘Opslaan’. Kopieer de webhook-URL die op de pagina wordt weergegeven.

Zie Authenticatie voor de overige authenticatiemethoden, en Toewijzing van payloads en Flow-variabelen voor informatie over welke velden naar Shopify Flow worden verzonden.

Een webhook met HMAC-authenticatie en Stripe als handtekeningprovider, waarbij het veld voor het ondertekeningsgeheim wordt getoond, wat hiermee wordt gecontroleerd en de stappen voor het koppelen van Stripe
Een ondertekende afzender, in dit geval Stripe: kies de aanbieder, plak het ondertekeningsgeheim ervan, waarna de editor laat zien wat er is aangevinkt en hoe u de verbinding tot stand kunt brengen.

Stap 2 - Voeg het eindpunt toe in Stripe

Ga in het Stripe-dashboard naar ‘Developers’ -> ‘Webhooks’, voeg een eindpunt toe met de URL die u hebt gekopieerd en selecteer de gebeurtenissen die u wilt verzenden.

Hoe u uw Stripe-ondertekeningsgeheim kunt vinden

Het ondertekeningsgeheim voor webhooks (whsec_...) uit het Stripe-dashboard -> Ontwikkelaars -> Webhooks.

In de documentatie van Stripe zelf over webhook-handtekeningen vindt u de exacte bewoordingen en schermafbeeldingen voor uw account.

Plak dat geheim in het veld ‘Secret’ van de webhook op Workflow Webhooks en sla het op. Vanaf dat moment wordt elke Stripe-levering geverifieerd voordat deze Shopify Flow bereikt.

Wat hiermee wordt gecontroleerd

Wat Waarde
Handtekeningkoptekst Stripe-Signature
Waar de handtekening staat In de waarde v1 van die header, die key=value-paren bevat die door komma’s worden gescheiden
Wat is ondertekend? {timestamp}.{body}
Handtekening HMAC-SHA256, in hexadecimale notatie
Tijdstempel De waarde van t in de handtekeningheader, uitgedrukt in Unix-seconden
Bescherming tegen herhaling Verzoeken waarvan de ondertekende tijdstempel meer dan 5 minuten van het huidige tijdstip afwijkt, worden afgewezen
Het geheim Wordt als platte tekst gebruikt. Plak de tekst precies zoals de afzender deze weergeeft

In de ondertekende payload is {body} de onbewerkte inhoud van het verzoek, byte voor byte, en {timestamp} is de hierboven vermelde tijdstempel.

Een verzoek dat aan een van deze voorwaarden niet voldoet, wordt afgewezen met de foutmelding 401, wordt geregistreerd in Geschiedenis en probleemoplossing en leidt nooit tot het starten van een workflow.

Stap 3 - Stel de workflow Shopify Flow samen

  1. Maak in ‘Shopify Flow’ een workflow aan en kies de trigger ‘Workflow Webhooks’.
  2. Klik op ‘Gebeurtenissen vastleggen’ en verstuur vervolgens een testgebeurtenis vanuit Stripe (of gebruik de optie ‘Test verzenden’ in Workflow Webhooks), zodat Shopify Flow de structuur van uw gegevens leert kennen.
  3. Elke webhook die u bezit, activeert dezelfde Shopify Flow-trigger. Voeg daarom een eerste voorwaarde toe op basis van de webhook-ID om deze workflow uitsluitend voor Stripe te beperken. De ID wordt weergegeven op de webhook-pagina.
  4. Voeg uw acties toe - tag een klant, voeg een notitie toe, verstuur een interne e-mail, werk een Metaveld bij.
Shopify Flow
Kies in Shopify Flow de optie ‘Select a trigger’, open Workflow Webhooks en selecteer ‘Webhook Trigger’.
Een Shopify Flow-voorwaarde: de webhook-ID is gelijk aan de ID van één webhook
De eerste stap van elke workflow: een voorwaarde op basis van de webhook-ID, zodat de workflow uitsluitend voor deze webhook wordt uitgevoerd.
De voltooide workflow: Webhook-trigger, een voorwaarde op basis van de webhook-ID, gevolgd door het verzenden van een interne e-mail in de „True“-tak
De voltooide workflow: trigger, voorwaarde op basis van de webhook-ID, gevolgd door uw actie in de „True“-tak.

Stap 4 - Test het van begin tot eind

Trigger een daadwerkelijke gebeurtenis in Stripe. Onder ‘Workflow Webhooks’ -> ‘History’ zou u de aanroep moeten zien met de status ‘Success’. Indien de handtekening onjuist was, krijgt u in plaats daarvan een vermelding ‘failed’ met de reden daarvoor, en op Gecertificeerde webhooks verifiëren vindt u uitleg over de handtekeningtester die u precies laat zien welke stap is mislukt.

Eén aanroep werd in History geopend, met de verzoekheaders, de payload, de status, de duur en de identificatiegegevens
Een voltooide gebeurtenis in History: de status ‘Succes’ betekent dat Shopify Flow deze heeft geaccepteerd.
De handtekening komt niet overeen▾

In deze bestelling: het geheim (de meest voorkomende oorzaak - een extra spatie of een sleutel uit de verkeerde omgeving), of de afzender het geheim van een ander eindpunt gebruikt, en of er iets tussen Stripe en de app staat dat de body herschrijft. Handtekeningen hebben betrekking op de ruwe bytes, dus een proxy die JSON opnieuw opmaakt, maakt ze ongeldig. De handtekeningtester op de webhook-pagina toont de exacte tekst die is ondertekend.

Bij elk verzoek krijg ik een 401-foutmelding▾

Controleer of de authenticatie van de webhook is ingesteld op HMAC met de Stripe-provider geselecteerd, of het geheim is ingevuld en of Stripe de gegevens naar de URL verstuurt precies zoals deze in de app wordt weergegeven, inclusief de code aan het einde.

Er wordt niets weergegeven in de geschiedenis▾

Het verzoek is nooit aangekomen. Controleer de URL nogmaals in Stripe en bekijk het eigen afleverlogboek van Stripe om te zien welk antwoord het heeft ontvangen. Een 404 duidt op een onjuiste of verwijderde webhook, een 429 betekent dat u de limiet voor het aantal aanroepen van uw abonnement hebt overschreden - zie Abonnementen en gebruik.

De workflow wordt voor de verkeerde gebeurtenissen uitgevoerd▾

Elke webhook in uw winkel activeert dezelfde Shopify Flow-trigger. Voeg als eerste stap van de workflow een voorwaarde toe op basis van de webhook-ID, of beperk het aantal gebeurtenissen dat u vanuit Stripe verstuurt.

Verzoeken mislukken met de foutmelding "tijdstempel buiten de tolerantie"▾

Stripe voorziet een tijdstempel van een tijdstempel en de app wijst alles af dat ouder is dan 5 minuten. Dit is doorgaans een klokprobleem aan de verzendende kant, of een verzending die Stripe veel later opnieuw heeft geprobeerd met het oorspronkelijke tijdstempel. Herhalingspogingen van hetzelfde oorspronkelijke verzoek worden niet geaccepteerd; verzoek Stripe om een nieuwe gebeurtenis te verzenden.

Gerelateerd