Din agent anropar en betald endpoint, får en 402 ”Payment Required”, och plötsligt stannar allt. Nu blir det panik: godkänn en betalning, kör om begäran, ta reda på om den dubbelbetalades och förklara för någon varför arbetsflödet ”slumpmässigt misslyckades”.
Den här AgentGatePay Slack-integrationen är byggd för growth marketers som kör AI-verktyg i stor skala, ops-ansvariga som hatar oväntade kostnader och founders som levererar betalda dataprodukter. Du får stabil åtkomst till betalda API:er med budgetar, kvitton och uppdateringar i kanalen du redan följer.
Nedan ser du hur arbetsflödet hanterar 402-betalningar från start till mål, hur det använder mandat för att sätta ett tak för spend, och var Slack kommer in så att du aldrig är blind när något förändras.
Så fungerar den här automationen
Hela n8n-arbetsflödet, från trigger till slutligt resultat:
n8n Workflow Template: AgentGatePay + Slack: betald API-åtkomst utan tillsyn
flowchart LR
subgraph sg0["▶️ START Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "▶️ START", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>1️⃣ Load Config"]
n2@{ icon: "mdi:cog", form: "rounded", label: "2️⃣ 📊 Get Mandate Token", pos: "b", h: 48 }
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>2B️⃣ Normalize Result"]
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "3️⃣ Has Token?", pos: "b", h: 48 }
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>4️⃣ ✅ Verify Existing Token"]
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>4B️⃣ Check Verification"]
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>5️⃣ 🆕 Create New Mandate"]
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>5B️⃣ Parse New Mandate"]
n9["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>6️⃣ ✅ Verify New Mandate"]
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>6B️⃣ Check New Mandate"]
n11@{ icon: "mdi:cog", form: "rounded", label: "7️⃣ 💾 Insert Token", pos: "b", h: 48 }
n12["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>7B️⃣ Restore Data"]
n13["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>8️⃣ 🔀 Merge Paths"]
n14["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>9️⃣ Request Resource (x402)"]
n15["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>9B️⃣ Parse 402 Response"]
n16["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>🔟 🔒 Sign Payment (Render)"]
n17["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>1️⃣1️⃣ Extract TX Hashes"]
n18["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>1️⃣2️⃣ Submit Payment (MCP)"]
n19["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>1️⃣3️⃣ Receive Resource"]
n20["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>1️⃣4️⃣ Complete Task"]
n0 --> n1
n4 --> n5
n4 --> n7
n1 --> n2
n12 --> n13
n13 --> n14
n3 --> n4
n11 --> n12
n8 --> n9
n10 --> n11
n6 --> n13
n15 --> n16
n2 --> n3
n9 --> n10
n19 --> n20
n7 --> n8
n14 --> n15
n16 --> n17
n17 --> n18
n5 --> n6
n18 --> n19
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n4 decision
class n5,n7,n9,n14,n16,n18,n19 api
class n1,n3,n6,n8,n10,n12,n13,n15,n17,n20 code
classDef customIcon fill:none,stroke:none
class n1,n3,n5,n6,n7,n8,n9,n10,n12,n13,n14,n15,n16,n17,n18,n19,n20 customIcon
Problemet: betald API-åtkomst slår sönder automation
Betalda resurser fallerar inte snyggt. Ena minuten rullar arbetsflödet på, nästa minut får du ett 402-svar och din ”automation” blir ett manuellt supportärende. Du kör om, kopierar transaktionshashar mellan olika ställen, undrar om säljaren såg betalningen och lägger tid på att bevisa att den faktiskt gick igenom on-chain. Det värsta är osäkerheten. Om en agent kan spendera pengar men du inte ser vad den gör känns budgetar riskabla, och att lansera nya betalfunktioner går i snigelfart.
Det drar snabbt iväg. Här är var det oftast faller isär.
- Förfrågningar misslyckas exakt när du behöver tillförlitlighet som mest, till exempel när en rapport ska vara klar eller en kund väntar.
- Betalningar ”hanteras” på fem olika ställen, vilket bjuder in misstag och dubbeldebiteringar.
- Budgetstyrningen är luddig, så team sätter antingen spend för högt eller vägrar automatisera överhuvudtaget.
- Ingen märker att ett mandat har löpt ut eller att en signeringstjänst ligger nere förrän arbetsflödet redan fallerar.
Lösningen: AgentGatePay + Slack för autonoma betalda förfrågningar
Det här arbetsflödet gör betald API-åtkomst till något dina n8n-automationer kan lita på. Det börjar med att läsa in dina köpar- och säljarinställningar och kontrollerar sedan om din agent redan har ett giltigt spendmandat (ett AP2-mandat) sparat i en n8n Data Table. Om mandatet finns verifierar det det med AgentGatePay. Om det inte finns skapar arbetsflödet ett nytt mandat med budget och tidsgräns och sparar mandat-tokenen för återanvändning. Därefter begär det resursen från säljaren, tar emot 402 ”Payment Required”-detaljerna, signerar betalningen via en transaktionssigneringstjänst och skickar om begäran med bevis (transaktionshashar). Till sist hämtar det den betalda resursen och slutför körningen, medan Slack kan hålla dig uppdaterad vid viktiga händelser som skapande av mandat, spend och fel.
Arbetsflödet startar med en n8n-trigger och en snabb inläsning av inställningar. Därefter förgrenas det beroende på om en mandat-token redan finns tillgänglig, och sammanfogas sedan igen till en enda väg för 402-begäran, signering, verifiering och leverans. Du avslutar med den betalda resursen i handen, plus en tydlig audit trail som du kan övervaka.
Det du får: automation vs. resultat
| Det här automatiserar arbetsflödet | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att din interna agent hämtar en betald ”demo-resource” 50 gånger per dag för 0,01 USD styck. Att manuellt passa betalningarna är inte de 0,50 USD som gör ont, utan avbrotten: bara 5 minuter mänsklig uppmärksamhet per betalningshändelse blir över 4 timmar splittrat fokus på en vecka. Med det här arbetsflödet godkänner du ett mandat en gång (till exempel 100 USD i 7 dagar), och varje betalt anrop går igenom automatiskt på cirka 5–10 sekunder. Slack kan posta enbart det du bryr dig om, som ”mandat skapat”, ”låg återstående budget” eller ”betalningsverifiering misslyckades”.
Det du behöver
- n8n-instans (testa n8n Cloud gratis)
- Self-hosting-alternativ om du föredrar det (Hostinger fungerar bra)
- AgentGatePay för att skapa mandat och verifiera betalningar.
- Slack för att ta emot notiser om spend och fel.
- AgentGatePay API-nyckel (hämta den i din AgentGatePay-dashboard efter registrering).
Kunskapsnivå: Medel. Du kommer att klistra in API-nycklar, ändra några konfigvärden och känna dig bekväm med att testa webhooks och credentials.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
En körning triggas. I mallen är det en manuell trigger, men i produktion startar du den oftast från en webhook, ett schema eller ett annat arbetsflöde som behöver en betald resurs.
Arbetsflödet hittar (eller skapar) spendbehörighet. Det kontrollerar en n8n Data Table efter en sparad mandat-token, verifierar den med AgentGatePay och skapar bara ett nytt mandat om det gamla saknas eller är ogiltigt.
Säljarbegäran går medvetet in i en 402. Arbetsflödet anropar säljarens endpoint, får tillbaka ”Payment Required” plus exakt kedja, token och belopp, och förbereder sedan betalningen utifrån de instruktionerna så att inget lämnas åt gissningar.
Betalningen signeras, skickas in och resursen hämtas. Signeringstjänsten returnerar transaktionshashar, arbetsflödet skickar om den betalda begäran och hämtar sedan den levererade resursen. Det är här Slack-notiser är som mest användbara: betalningslyckande, verifieringsfel, utgånget mandat och låg återstående budget.
Du kan enkelt justera reglerna för Slack-notiser så att du bara får aviseringar vid fel eller låg balans, utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera den manuella triggern
Konfigurera den manuella triggern så att ni kan köra flödet vid behov medan ni konfigurerar resten av arbetsflödet.
- Lägg till noden ▶️ Launch Trigger som arbetsflödets trigger.
- Lämna noden med standardinställningar (inga parametrar krävs).
- Koppla ▶️ Launch Trigger till 1️⃣ Initialize Settings för att starta konfigurationspipelinen.
Steg 2: Anslut datatabellen och initiera grundinställningar
Det här steget läser in er köpar-/säljarkonfiguration och hämtar eventuell befintlig mandate-token från datatabellen.
- Öppna 1️⃣ Initialize Settings och uppdatera platshållarna i jsCode, inklusive
[YOUR_EMAIL],[CONFIGURE_YOUR_API_KEY],https://YOUR_SELLER_ENDPOINT/webhook/resourceochhttps://YOUR_RENDER_APP.onrender.com. - I 2️⃣ 📊 Retrieve Mandate Key, ställ in Operation till
getoch säkerställ att Data Table pekar påAgentPay_Mandates. - I 2B️⃣ Normalize Table Output, behåll nuvarande kod så att en tom tabell ger
mandate_token: ''och slår ihopconfigfrån 1️⃣ Initialize Settings. - Verifiera exekveringsordningen: 1️⃣ Initialize Settings → 2️⃣ 📊 Retrieve Mandate Key → 2B️⃣ Normalize Table Output.
⚠️ Vanlig fallgrop: Säkerställ att datatabellen bara har en rad. Normaliseringslogiken använder den första raden och varnar om flera rader finns.
Steg 3: Konfigurera validering av token och flöden för skapande av mandate
Avgör om ni ska återanvända en befintlig mandate-token eller generera en ny, och verifiera den därefter.
- I 3️⃣ Validate Token Presence, bekräfta att villkoret kontrollerar
{{$json.mandate_token}}med String → notEmpty. - Konfigurera 4️⃣ ✅ Confirm Existing Token med URL satt till
{{ $('1️⃣ Initialize Settings').first().json.config.agentgatepay.mcp_endpoint }}och behåll JSON Body föragentpay_verify_mandate. - Säkerställ att headers i 4️⃣ ✅ Confirm Existing Token inkluderar Content-Type =
application/jsonoch x-api-key ={{ $('1️⃣ Initialize Settings').first().json.config.buyer.api_key }}. - I flödet för ny mandate, konfigurera 5️⃣ 🆕 Generate New Mandate med URL
{{ $('1️⃣ Initialize Settings').first().json.config.agentgatepay.mcp_endpoint }}och säkerställ att ttl_minutes använder{{ $('1️⃣ Initialize Settings').first().json.config.buyer.mandate_ttl_days * 1440 }}. - Verifiera valideringskedjan för nya mandates: 5️⃣ 🆕 Generate New Mandate → 5B️⃣ Parse Mandate Response → 6️⃣ ✅ Validate New Mandate → 6B️⃣ Inspect New Mandate → 7️⃣ 💾 Store Mandate Token.
- Bekräfta att 7️⃣ 💾 Store Mandate Token skriver kolumnen mandate_token med
{{$json.mandate_token}}i tabellenAgentPay_Mandates. - Slutligen, koppla 7B️⃣ Restore Original Payload för att återföra den ursprungliga mandate-payloaden till 8️⃣ 🔀 Consolidate Paths.
⚠️ Vanlig fallgrop: Valideringskoden i 6B️⃣ Inspect New Mandate blockerar ogiltiga tokens; säkerställ att ert API returnerar en fullständig JWT-token (50+ tecken med punkter).
Steg 4: Konfigurera resursförfrågan och betalningssignering
När en giltig mandate är klar begär arbetsflödet resursen, signerar betalningen och skickar in betalningsbeviset.
- I 8️⃣ 🔀 Consolidate Paths, behåll merge-logiken för både återanvända och nyskapade mandates och verifiera att objektet selected_resource innehåller den resurstitel och beskrivning ni vill ha.
- Konfigurera 9️⃣ Request Resource 402 med URL
{{ $json.config.seller.api_url }}/resource/{{ $json.config.seller.selected_resource_id }}och headers x-agent-id ={{ $json.config.buyer.email }}och x-mandate ={{ $json.mandate.token }}. - I 9B️⃣ Decode 402 Reply, lämna koden som den är för att tvinga fram ett
402-svar och fånga payment_required. - Ställ in 🔟 🔒 Sign Payment Request till POST med URL
{{ $('8️⃣ 🔀 Consolidate Paths').item.json.config.render.service_url }}/sign-paymentoch JSON body-fält mappade till{{ $json.payment_required.payTo }},{{ $json.payment_required.amount }},{{ $json.payment_required.token }}och{{ $json.payment_required.chain }}. - Säkerställ att 🔟 🔒 Sign Payment Request inkluderar x-api-key =
{{ $('8️⃣ 🔀 Consolidate Paths').item.json.config.buyer.api_key }}.
Steg 5: Skicka in betalning och hämta den betalda resursen
Det här steget skickar in blockkedjetransaktionshashar till gatewayen och hämtar den betalda resursen.
- I 1️⃣1️⃣ Extract Tx Hashes, behåll valideringslogiken som kontrollerar
render_response.successoch extraherartx_hashochtx_hash_commission. - Konfigurera 1️⃣2️⃣ Submit Payment Call med URL
{{ $json.config.agentgatepay.mcp_endpoint }}och JSON body-parametrar från{{$json.mandate.token}},{{$json.payment_proof.tx_hash}},{{$json.payment_proof.tx_hash_commission}}och{{$json.payment_required.priceUsd}}. - Säkerställ att headers i 1️⃣2️⃣ Submit Payment Call inkluderar x-api-key =
{{ $('8️⃣ 🔀 Consolidate Paths').first().json.config.buyer.api_key }}. - Ställ in 1️⃣3️⃣ Fetch Paid Resource med URL
{{ $('9B️⃣ Decode 402 Reply').first().json.config.seller.api_url }}/resource/{{ $('9B️⃣ Decode 402 Reply').first().json.config.seller.selected_resource_id }}och header x-payment ={{ $('1️⃣1️⃣ Extract Tx Hashes').first().json.payment_proof.tx_hash }}. - Bekräfta att 1️⃣3️⃣ Fetch Paid Resource routas till 1️⃣4️⃣ Finalize Task för sammanfattning av slutförandet.
Steg 6: Testa och aktivera ert arbetsflöde
Kör ett manuellt test för att bekräfta att mandate-flödet, betalningssigneringen och resurshämtningen fungerar från början till slut.
- Klicka på Execute Workflow i ▶️ Launch Trigger för att köra ett manuellt test.
- Verifiera att 1️⃣4️⃣ Finalize Task skickar ut en summary med
status=COMPLETEDoch inkluderar hasharnamerchant_txochcommission_tx. - Kontrollera att AgentPay_Mandates i 7️⃣ 💾 Store Mandate Token innehåller en enda rad med den senaste
mandate_token. - När allt är verifierat, växla arbetsflödet till Active för produktionsanvändning.
Vanliga fallgropar
- AgentGatePay-credentials kan löpa ut eller kräva specifika behörigheter. Om något går sönder, kontrollera först din n8n Credentials-post för AgentGatePay (och nyckeln i din konfigurationsnod).
- Om du använder Wait-noder eller extern rendering varierar processtider. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du att redigera output för alltid.
Vanliga frågor
Cirka 10 minuter om du redan har dina nycklar och plånbok redo.
Nej, ingen kodning krävs för grunduppsättningen. Du klistrar främst in nycklar, uppdaterar några konfigvärden och testar en körning.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna med AgentGatePays nätverksavgifter (gas), som vanligtvis är små på Base.
Två alternativ: n8n Cloud (managed, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger obegränsade körningar men kräver grundläggande serverhantering.
Ja, men uppdatera på två ställen. Ändra betalningsinställningarna i köparkonfigurationen (kedja och token) och säkerställ att din signeringstjänst stödjer målkedjan (RPC-inställningar). Vanliga anpassningar är att justera mandatbudgeten, ändra prissättningen i resurs-katalogen på säljsidan och att bara skicka Slack-notiser när budgeten faller under en tröskel.
Oftast är det ett API-nyckelproblem eftersom nycklar visas en gång och folk klistrar in en gammal senare. Skapa en ny AgentGatePay-nyckel, uppdatera n8n-credential eller konfigurationsnoden och kör sedan verifieringsanropet igen. Om mandatet skapades men nu ger fel kan det ha löpt ut, så ta bort den sparade tokenen i Data Table och låt arbetsflödet skapa ett nytt mandat. Rate limiting är mindre vanligt här, men det kan hända om du skickar en burst av förfrågningar på en gång.
Många, så länge dina n8n-exekveringsgränser och plånboksfinansiering matchar din volym. På self-hosted n8n finns inget exekveringstak, så det handlar mest om serverstorlek, API-rate limits och hur snabbt transaktioner bekräftas på vald kedja.
För on-chain-betalningsflöden är svaret oftast ja. n8n är mer bekvämt för flerstegslogik (mandatuppslag, villkorsstyrd förgrening, retries, sammanfogning av vägar) och du kan self-hosta om du inte vill ha prissättning per task när volymen växer. Zapier och Make kan fortfarande fungera för enkel avisering, men de blir klumpiga när du behöver spara mandat-tokenar, hantera 402-svar och skicka om anrop med transaktionshashar. Om du är osäker, prata med en automationsexpert och beskriv din volym och risktolerans.
När detta väl är på plats slutar betald API-åtkomst att vara ett skört specialfall. Dina arbetsflöden fortsätter att rulla, budgetar hålls inom ramarna och Slack berättar vad som är viktigt utan att du behöver sitta och bevaka varje körning.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.