Coordinateur de paiement n8n avec l'API 1Shot
Ceci est unCrypto Trading, Multimodal AIworkflow d'automatisation du domainecontenant 27 nœuds.Utilise principalement des nœuds comme If, Code, Webhook, OneShot, OneShotSynch. Utiliser x402 et 1Shot API pour créer un processeur de paiement blockchain auto-hébergé
- •Point de terminaison HTTP Webhook (généré automatiquement par n8n)
Nœuds utilisés (27)
Catégorie
{
"id": "iOBvq8tJmbslKLvM",
"meta": {
"instanceId": "62f017ec8f130d172e2e5f39bbf09515036bfd403dfa60fe06f5ab14b78705d0",
"templateCredsSetupCompleted": true
},
"name": "n8n Facilitator with 1Shot API",
"tags": [
{
"id": "ChlnN7rtKHJMnWmM",
"name": "x402",
"createdAt": "2025-06-19T04:23:28.149Z",
"updatedAt": "2025-06-19T04:23:28.149Z"
}
],
"nodes": [
{
"id": "18ef87da-599a-4aa9-89cb-dab6ac024abe",
"name": "Simuler Paiement",
"type": "n8n-nodes-1shot.oneShot",
"position": [
672,
32
],
"parameters": {
"params": "={\n \"from\": \"{{ $json.decodedXPayment.payload.authorization.from }}\",\n \"to\": \"{{ $json.decodedXPayment.payload.authorization.to }}\",\n \"value\": \"{{ $json.decodedXPayment.payload.authorization.value }}\",\n \"validAfter\": \"{{ $json.decodedXPayment.payload.authorization.validAfter }}\",\n \"validBefore\": \"{{ $json.decodedXPayment.payload.authorization.validBefore }}\",\n \"nonce\": \"{{ $json.decodedXPayment.payload.authorization.nonce }}\",\n \"signature\": \"{{ $json.decodedXPayment.payload.signature }}\"\n} ",
"operation": "simulate",
"contractMethodId": "={{ $json.paymentConfig.contractMethodId }}"
},
"credentials": {
"oneShotOAuth2Api": {
"id": "05rDRla9Nl1rkXlv",
"name": "x402 Facilitator"
}
},
"typeVersion": 1
},
{
"id": "68d961ac-3d63-40ff-aecb-acb5d3c8e8f4",
"name": "Rechercher Configurations Paiement",
"type": "n8n-nodes-base.code",
"onError": "continueErrorOutput",
"position": [
224,
256
],
"parameters": {
"jsCode": "const fromToken = $input.first().json.body.paymentRequirements.asset;\nconst fromChain = $input.first().json.body.paymentRequirements.network;\n\nconst config = {\n \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\": {\n tokenAddress: \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n chain: \"8453\",\n name: \"USD Coin\",\n version: \"2\",\n contractMethodId: \"8445805a-0807-4ccf-a44d-6d4210a22787\",\n network: \"base-mainnet\"\n },\n \"0x036cbd53842c5426634e7929541ec2318f3dcf7e\": {\n tokenAddress: \"0x036cbd53842c5426634e7929541ec2318f3dcf7e\",\n chain: \"84532\",\n name: \"USDC\",\n version: \"2\",\n contractMethodId: \"adcf8d1f-1110-460a-9779-fe0bd1d9f9af\",\n network: \"base-sepolia\"\n },\n \"0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e\": {\n tokenAddress: \"0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e\",\n chain: \"43114\",\n name: \"USD Coin\",\n version: \"2\",\n contractMethodId: \"ed87ea0a-074a-487a-9f7e-226182d83a96\",\n network: \"avalanche\"\n },\n \"0xaf88d065e77c8cc2239327c5edb3a432268e5831\": {\n tokenAddress: \"0xaf88d065e77c8cc2239327c5edb3a432268e5831\",\n chain: \"42161\",\n name: \"USD Coin\",\n version: \"2\",\n contractMethodId: \"5c8e4b9b-b2f2-4882-9ca0-7fbc8b1d4d9f\",\n network: \"arbitrum\"\n }\n};\n\n\n\n// Check if fromToken exists in config\nif (!config[fromToken.toLowerCase()]) {\n throw new Error(`Token ${fromToken} not found in configuration`);\n}\n\n// Optionally you could also validate the chain if needed\nif (config[fromToken.toLowerCase()].network !== fromChain) {\n throw new Error(`Invalid chain for token ${fromToken} on <${fromChain}>`);\n}\n\n// Add the parsed JSON object to the input\n$input.first().json.paymentConfig = config[fromToken.toLowerCase()];\n\nreturn $input.all();\n\n"
},
"typeVersion": 2
},
{
"id": "d6d7add8-77b1-4083-9dbb-f4140e96dd56",
"name": "/verify",
"type": "n8n-nodes-base.webhook",
"position": [
-672,
416
],
"webhookId": "92c5ca23-99a7-437d-85da-84aef8bd2a25",
"parameters": {
"path": "/verify",
"options": {},
"httpMethod": "POST",
"responseMode": "responseNode"
},
"typeVersion": 2
},
{
"id": "734689a3-1a5a-4e75-aeff-0cfe1906147a",
"name": "/settle",
"type": "n8n-nodes-base.webhook",
"position": [
-672,
608
],
"webhookId": "92c5ca23-99a7-437d-85da-84aef8bd2a25",
"parameters": {
"path": "/settle",
"options": {},
"httpMethod": "POST",
"responseMode": "responseNode"
},
"typeVersion": 2
},
{
"id": "21939197-b339-42fc-94d8-2bbdb2442a0e",
"name": "Réponse Settlement",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
896,
224
],
"parameters": {
"options": {
"responseCode": 402
},
"respondWith": "json",
"responseBody": "={\n \"success\": {{ $json.status === \"Success\" }},\n \"error\": {{ JSON.stringify($json.failureReason) }},\n \"txHash\": \"{{ $json.transactionHash }}\",\n \"networkId\": \"{{ $json.chainId }}\"\n}"
},
"typeVersion": 1.3
},
{
"id": "5fa377a6-f450-497d-bec0-ad19c08bdcfc",
"name": "Réponse Verify",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
896,
32
],
"parameters": {
"options": {
"responseCode": 402
},
"respondWith": "json",
"responseBody": "={\n \"isValid\": {{ $json.success }},\n \"invalidReason\": \"{{ $json.error.reason }}\"\n} "
},
"typeVersion": 1.3
},
{
"id": "3a22826f-7857-4e5b-9239-a504b6a4b918",
"name": "Réponse : Body POST Incorrect (/verify)",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
448,
752
],
"parameters": {
"options": {
"responseCode": 402
},
"respondWith": "json",
"responseBody": "{\n \"isValid\": false,\n \"invalidReason\": \"Incorrect or missing payload arguments\"\n}"
},
"typeVersion": 1.3
},
{
"id": "954e3c34-dad9-4c62-b5a6-97cff5a642dd",
"name": "Réponse : Body POST Incorrect (/settle)",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
448,
944
],
"parameters": {
"options": {
"responseCode": 402
},
"respondWith": "json",
"responseBody": "={\n \"success\": false,\n \"error\": \"Missing or incorrect POST body\",\n \"txHash\": null,\n \"networkId\": {{ JSON.stringify($json.body.paymentRequirements.network) }}\n}"
},
"typeVersion": 1.3
},
{
"id": "63d9fe6a-7618-429b-9e47-db9451542337",
"name": "1Shot API Soumettre & Attendre",
"type": "n8n-nodes-1shot.oneShotSynch",
"position": [
672,
224
],
"parameters": {
"params": "={\n \"from\": \"{{ $json.decodedXPayment.payload.authorization.from }}\",\n \"to\": \"{{ $json.decodedXPayment.payload.authorization.to }}\",\n \"value\": \"{{ $json.decodedXPayment.payload.authorization.value }}\",\n \"validAfter\": \"{{ $json.decodedXPayment.payload.authorization.validAfter }}\",\n \"validBefore\": \"{{ $json.decodedXPayment.payload.authorization.validBefore }}\",\n \"nonce\": \"{{ $json.decodedXPayment.payload.authorization.nonce }}\",\n \"signature\": \"{{ $json.decodedXPayment.payload.signature }}\"\n} ",
"additionalFields": {
"memo": "="
},
"contractMethodId": "={{ $json.paymentConfig.contractMethodId }}"
},
"credentials": {
"oneShotOAuth2Api": {
"id": "05rDRla9Nl1rkXlv",
"name": "x402 Facilitator"
}
},
"typeVersion": 1
},
{
"id": "019b8699-64d1-4404-9ba2-3c61a377fd8a",
"name": "Vérifier Payload POST",
"type": "n8n-nodes-base.if",
"position": [
-448,
512
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "2ff83590-61f3-41d8-8500-a96103c3844c",
"operator": {
"type": "number",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.body.x402Version }}",
"rightValue": ""
},
{
"id": "a1971594-5bd9-4c77-96c3-da66c28ed23a",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.body.paymentHeader }}",
"rightValue": ""
},
{
"id": "506da99c-4aea-47e9-b711-6597e3eeaf75",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.body.paymentRequirements.network }}",
"rightValue": ""
},
{
"id": "4b11ebb0-c7cc-4c38-9d80-1dcedfa3b147",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.body.paymentRequirements.scheme }}",
"rightValue": ""
},
{
"id": "7cce2b0e-8525-4441-aa04-6d57ed6a8c47",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.body.paymentRequirements.maxAmountRequired }}",
"rightValue": ""
},
{
"id": "bd4aa27f-9ecb-4cf5-9a6a-67455cb5a309",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.body.paymentRequirements.resource }}",
"rightValue": ""
},
{
"id": "622b8fa7-6d14-4898-bcd0-1e0120060b9e",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.body.paymentRequirements.payTo }}",
"rightValue": ""
},
{
"id": "84f191fc-48e9-40f7-9629-906e0ec3db31",
"operator": {
"type": "number",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.body.paymentRequirements.maxTimeoutSeconds }}",
"rightValue": ""
},
{
"id": "22538bd0-0f51-4994-8364-6a75c817dc7e",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.body.paymentRequirements.asset }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "1887a18e-8f12-4f91-b7d4-ca02de6c709b",
"name": "Décoder & Valider X-Payment",
"type": "n8n-nodes-base.code",
"onError": "continueErrorOutput",
"position": [
-224,
448
],
"parameters": {
"jsCode": "try {\n // Decode the x-payment header from base64\n const xPaymentHeader = $input.first().json.body.paymentHeader;\n const decodedXPayment = Buffer.from(xPaymentHeader, 'base64').toString('utf-8');\n\n // Parse the decoded value into a JSON object\n const decodedXPaymentJson = JSON.parse(decodedXPayment);\n\n // Add the parsed JSON object to the input\n $input.first().json.decodedXPayment = decodedXPaymentJson;\n\n return $input.all();\n} catch (error) {\n // Return an error object if the token format is invalid\n return { error: \"invalid token format\" };\n}"
},
"typeVersion": 2
},
{
"id": "8255ba6a-3768-4fe6-8824-7f0f18dfbc85",
"name": "Assurer Payload Paiement",
"type": "n8n-nodes-base.if",
"position": [
0,
304
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "6666e1f6-5e99-49d4-9f9a-a5a35cde4f74",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.decodedXPayment.payload.signature }}",
"rightValue": ""
},
{
"id": "f1e58e1f-e977-4a37-9d1d-c94ed8467787",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.decodedXPayment.payload.authorization.from }}",
"rightValue": ""
},
{
"id": "94eb9519-6466-4c3c-a3bb-4f2eff188cc9",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.decodedXPayment.payload.authorization.to }}",
"rightValue": ""
},
{
"id": "3c3f1f2f-e660-4259-a5c1-bc574cf4f5d7",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.decodedXPayment.payload.authorization.value }}",
"rightValue": ""
},
{
"id": "691b9638-8932-41fb-9b1f-ab0be7db9dec",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.decodedXPayment.payload.authorization.validAfter }}",
"rightValue": ""
},
{
"id": "04ec5919-4052-48b3-818e-a8e6544a30f9",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.decodedXPayment.payload.authorization.validBefore }}",
"rightValue": ""
},
{
"id": "612ed984-94ff-436e-b149-d1aa75971b06",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.decodedXPayment.payload.authorization.validBefore }}",
"rightValue": "="
},
{
"id": "5c3db8f1-8fbb-49a4-9547-fdcb3dd5b275",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.decodedXPayment.payload.signature }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "08df85be-f602-4710-a9ca-340e39c9816b",
"name": "/supported",
"type": "n8n-nodes-base.webhook",
"position": [
-688,
1200
],
"webhookId": "4ccebeff-20bd-4871-bb2e-f29f45d35878",
"parameters": {
"path": "supported",
"options": {},
"responseMode": "responseNode"
},
"typeVersion": 2.1
},
{
"id": "5b19047c-d340-4cfc-9909-b7589b999a32",
"name": "Réponse : Retourner Réseaux Supportés",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
-64,
1184
],
"parameters": {
"options": {
"responseCode": 402
},
"respondWith": "json",
"responseBody": "={\n \"kinds\": {{ JSON.stringify($json.kinds) }}\n} "
},
"typeVersion": 1.3
},
{
"id": "ac002b7a-108e-49b6-bed7-16bb8477fe6e",
"name": "Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1168,
16
],
"parameters": {
"width": 448,
"height": 416,
"content": "## /verify endpoint\n\nThe verify endpoint will check that the given `x-payment` header, given the associated `paymentRequirements`, are valid. If the payment details are valid this endpoint will return:\n```sh\n{\n isValid: true;\n invalidReason: \"\";\n}\n```\n\nIf the endpoint determines that the payment details will revert for any reason, it will return with: \n```sh\n{\n isValid: false;\n invalidReason: \"<Smart Contract Revert Error>\";\n}\n```\n"
},
"typeVersion": 1
},
{
"id": "cea02913-92b7-45aa-bcb2-1e3dc3a8d588",
"name": "Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1168,
528
],
"parameters": {
"width": 432,
"height": 464,
"content": "## /settle endpoint\n\nThe settle endpoint will attempt to settle a payment to the target blockchain given the provided payment details. If this endpoint fails it will return with:\n```sh\n{\n success: false;\n error: \"<Reason for tx failure>\";\n txHash: null;\n networkId: \"<network name>\";\n}\n```\n\nIf the endpoint succeeds, it will return:\n```sh\n{\n success: true;\n error: null;\n txHash: \"transaction hash\";\n networkId: \"<network name>\";\n}\n```\n"
},
"typeVersion": 1
},
{
"id": "9cd414aa-fa67-4c9c-8177-6a3568d43af2",
"name": "Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
32,
-16
],
"parameters": {
"width": 320,
"height": 240,
"content": "## Accepted Tokens Config \n\nYou must edit the payment tokens `config` object in the `Lookup Payments Config` node with the token details of all tokens you wish to support with your facilitator. \n\n*Important*: Be sure to import the contract methods for the appropriate tokens into your 1Shot API node. "
},
"typeVersion": 1
},
{
"id": "e788d782-8540-437e-b86f-a3d14c75b885",
"name": "Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1152,
1152
],
"parameters": {
"width": 416,
"height": 320,
"content": "## /supported endpoint\n\nThis endpoint returns the blockchain networks your facilitator will support. Its output looks like: \n\n\n```sh\n{\n kinds: [\n {\n \"scheme\": string,\n \"network\": string,\n }\n ]\n}\n```"
},
"typeVersion": 1
},
{
"id": "64f5beea-0952-4aca-9c07-3ec3eef523d8",
"name": "Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-464,
1440
],
"parameters": {
"width": 384,
"height": 176,
"content": "## Supported Networks Config\n\nBe sure to update the `Supported Networks Config` node to reflect the networks you have configured your 1Shot API account to process. "
},
"typeVersion": 1
},
{
"id": "c6292c7a-cac1-46be-a61c-b80170aa1a93",
"name": "Configuration Réseaux Supportés",
"type": "n8n-nodes-base.code",
"onError": "continueErrorOutput",
"position": [
-400,
1200
],
"parameters": {
"jsCode": "const input = $input.all()\n\n\nconst kinds = [\n {\n \"scheme\": \"exact\",\n \"network\": \"base-mainnet\",\n },\n {\n \"scheme\": \"exact\",\n \"network\": \"base-sepolia\",\n },\n {\n \"scheme\": \"exact\",\n \"network\": \"avalanche\",\n },\n {\n \"scheme\": \"exact\",\n \"network\": \"avalanche-fuji\",\n },\n {\n \"scheme\": \"exact\",\n \"network\": \"arbitrum-mainnet\",\n },\n {\n \"scheme\": \"exact\",\n \"network\": \"ethereum-mainnet\",\n }\n ]\n\n$input.first().json.kinds = kinds;\n\nreturn $input.all();\n"
},
"typeVersion": 2
},
{
"id": "9fb18099-c840-47af-b8d6-9f8107c05dd3",
"name": "Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2000,
400
],
"parameters": {
"width": 688,
"height": 544,
"content": "## Example Facilitator Curl Request\n\nHere is a complete curl request you can use to test your node:\n\n```sh\ncurl -X POST \\\n https://n8n.1shotapi.dev/webhook-test/settle \\\n -H \"User-Agent: CustomUserAgent/1.0\" \\\n -H \"Accept: application/json\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"x402Version\": 1,\n \"paymentHeader\": \"eyJ4NDAyVmVyc2lvbiI6IjEiLCJzY2hlbWUiOiJleGFjdCIsIm5ldHdvcmsiOiJiYXNlLXNlcG9saWEiLCJwYXlsb2FkIjp7ImF1dGhvcml6YXRpb24iOnsiZnJvbSI6IjB4NTU2ODBDNkI2OUQ1OThDMEI0MkY5M0NENTNERkYzRDIwZTA2OWI1YiIsInRvIjoiMHg5ZkVhZDhCMTlDMDQ0QzJmNDA0ZGFjMzhCOTI1RWExNkFEYWEyOTU0IiwidmFsdWUiOiIxMDAwMDAiLCJ2YWxpZEFmdGVyIjoiMTc1NTEzMjk4NCIsInZhbGlkQmVmb3JlIjoiMTc1NTEzMzE2NCIsIm5vbmNlIjoiMHgxNjRjZjNjMDFlMzgwOTk4MTdmYzNkM2I5YTlkYjYzZGNiYTFjNWMwZDExOGU4ZThhNjIwODAwNmQ5M2U1ODYyIn0sInNpZ25hdHVyZSI6IjB4YjdlNzMxMjViY2QxNDU2MTJlZThkZWY1MDQ1M2I3YzhmMWY1NjQzZmYzZDRlMjcxMWVkNTdiNGRhNjY3NDRhMjdmM2Q1YWRmY2EyMDA4MDI4M2YxODVmODQ0YWJiYWI0YjczYWM2N2JjZDU0NmJiM2ViZDc3M2RlYzczODFlNGUxYyJ9fQ==\",\n \"paymentRequirements\": {\n \"scheme\": \"exact\",\n \"network\": \"base-sepolia\",\n \"maxAmountRequired\": \"5000000\",\n \"resource\": \"https://n8n.1shotapi.dev/webhook/gas-station\",\n \"description\": \"Swap stablecoins for gas tokens\",\n \"mimeType\": \"\",\n \"payTo\": \"0x9fEad8B19C044C2f404dac38B925Ea16ADaa2954\",\n \"maxTimeoutSeconds\": 150,\n \"asset\": \"0x036CbD53842c5426634e7929541eC2318f3dCF7e\",\n \"extra\": {\n \"name\": \"USD Coin\",\n \"version\": \"version\"\n }\n }\n }'\n```"
},
"typeVersion": 1
},
{
"id": "7c69392c-d424-4639-909e-588a5f17cee2",
"name": "Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
640,
-240
],
"parameters": {
"width": 432,
"height": 224,
"content": "## Create Your 1Shot API Credential\n\nDon't forget to authenticate against your 1Shot API business by creating an n8n credential. \n\nClick on one of the 1Shot API nodes, then click on `Credential to connect with`, then enter you API key, secret, and business id. "
},
"typeVersion": 1
},
{
"id": "c94b228a-7a92-45b9-9ded-fb34186eaa2e",
"name": "Payload ou En-tête Incorrect",
"type": "n8n-nodes-base.if",
"position": [
224,
784
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "185b904e-d8c8-4605-9075-531abc762b46",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $json.webhookUrl }}",
"rightValue": "verify"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "efa373f0-b6ae-4a46-b6f2-ec6f6d2eae67",
"name": "Token Non Supporté",
"type": "n8n-nodes-base.if",
"position": [
448,
512
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "185b904e-d8c8-4605-9075-531abc762b46",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $json.webhookUrl }}",
"rightValue": "verify"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "c7ab50fa-af33-41ec-849f-a53f7ec7b54d",
"name": "verify ou settle",
"type": "n8n-nodes-base.if",
"position": [
448,
128
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "185b904e-d8c8-4605-9075-531abc762b46",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $json.webhookUrl }}",
"rightValue": "verify"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "b80d7ac0-14bc-4dfb-936b-a09c3644ba53",
"name": "Réponse : Token Non Supporté (/verify)",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
672,
416
],
"parameters": {
"options": {
"responseCode": 402
},
"respondWith": "json",
"responseBody": "{\n \"isValid\": false,\n \"invalidReason\": \"Unsupported payment token\"\n}"
},
"typeVersion": 1.3
},
{
"id": "f57b3f31-2f63-482a-87d7-cdeb8884f0de",
"name": "Réponse : Token Non Supporté (/settle)",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
672,
608
],
"parameters": {
"options": {
"responseCode": 402
},
"respondWith": "json",
"responseBody": "={\n \"success\": false,\n \"error\": \"Unsupported payment token\",\n \"txHash\": null,\n \"networkId\": {{ JSON.stringify(($json.error.match(/<([^>]+)>/) || [])[1] || null) }}\n} "
},
"typeVersion": 1.3
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "60b6cf16-d04b-4402-ac83-a827312a8edf",
"connections": {
"734689a3-1a5a-4e75-aeff-0cfe1906147a": {
"main": [
[
{
"node": "019b8699-64d1-4404-9ba2-3c61a377fd8a",
"type": "main",
"index": 0
}
]
]
},
"d6d7add8-77b1-4083-9dbb-f4140e96dd56": {
"main": [
[
{
"node": "019b8699-64d1-4404-9ba2-3c61a377fd8a",
"type": "main",
"index": 0
}
]
]
},
"08df85be-f602-4710-a9ca-340e39c9816b": {
"main": [
[
{
"node": "c6292c7a-cac1-46be-a61c-b80170aa1a93",
"type": "main",
"index": 0
}
]
]
},
"18ef87da-599a-4aa9-89cb-dab6ac024abe": {
"main": [
[
{
"node": "5fa377a6-f450-497d-bec0-ad19c08bdcfc",
"type": "main",
"index": 0
}
]
]
},
"c7ab50fa-af33-41ec-849f-a53f7ec7b54d": {
"main": [
[
{
"node": "18ef87da-599a-4aa9-89cb-dab6ac024abe",
"type": "main",
"index": 0
}
],
[
{
"node": "63d9fe6a-7618-429b-9e47-db9451542337",
"type": "main",
"index": 0
}
]
]
},
"efa373f0-b6ae-4a46-b6f2-ec6f6d2eae67": {
"main": [
[
{
"node": "b80d7ac0-14bc-4dfb-936b-a09c3644ba53",
"type": "main",
"index": 0
}
],
[
{
"node": "f57b3f31-2f63-482a-87d7-cdeb8884f0de",
"type": "main",
"index": 0
}
]
]
},
"019b8699-64d1-4404-9ba2-3c61a377fd8a": {
"main": [
[
{
"node": "1887a18e-8f12-4f91-b7d4-ca02de6c709b",
"type": "main",
"index": 0
}
],
[
{
"node": "c94b228a-7a92-45b9-9ded-fb34186eaa2e",
"type": "main",
"index": 0
}
]
]
},
"c94b228a-7a92-45b9-9ded-fb34186eaa2e": {
"main": [
[
{
"node": "3a22826f-7857-4e5b-9239-a504b6a4b918",
"type": "main",
"index": 0
}
],
[
{
"node": "954e3c34-dad9-4c62-b5a6-97cff5a642dd",
"type": "main",
"index": 0
}
]
]
},
"8255ba6a-3768-4fe6-8824-7f0f18dfbc85": {
"main": [
[
{
"node": "68d961ac-3d63-40ff-aecb-acb5d3c8e8f4",
"type": "main",
"index": 0
}
],
[
{
"node": "c94b228a-7a92-45b9-9ded-fb34186eaa2e",
"type": "main",
"index": 0
}
]
]
},
"68d961ac-3d63-40ff-aecb-acb5d3c8e8f4": {
"main": [
[
{
"node": "c7ab50fa-af33-41ec-849f-a53f7ec7b54d",
"type": "main",
"index": 0
}
],
[
{
"node": "efa373f0-b6ae-4a46-b6f2-ec6f6d2eae67",
"type": "main",
"index": 0
}
]
]
},
"63d9fe6a-7618-429b-9e47-db9451542337": {
"main": [
[
{
"node": "21939197-b339-42fc-94d8-2bbdb2442a0e",
"type": "main",
"index": 0
}
],
[
{
"node": "21939197-b339-42fc-94d8-2bbdb2442a0e",
"type": "main",
"index": 0
}
]
]
},
"c6292c7a-cac1-46be-a61c-b80170aa1a93": {
"main": [
[
{
"node": "5b19047c-d340-4cfc-9909-b7589b999a32",
"type": "main",
"index": 0
}
]
]
},
"1887a18e-8f12-4f91-b7d4-ca02de6c709b": {
"main": [
[
{
"node": "8255ba6a-3768-4fe6-8824-7f0f18dfbc85",
"type": "main",
"index": 0
}
],
[
{
"node": "c94b228a-7a92-45b9-9ded-fb34186eaa2e",
"type": "main",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - Trading crypto, IA Multimodale
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Partager ce workflow