Cette section explique comment intégrer le mécanisme optionnel de signature de la charge utile (payload), qui garantit l’intégrité et l’authenticité de vos requêtes API.La signature est vérifiée sur les points de terminaison suivants de l’API documentée ici :
POST /payment-intents
POST /payment-intents/:id/payments et POST /payment-intents/:id/payments/sync
POST /transfers
POST /irt/transfer et POST /irt/transfer/verified-recipient
POST /terminal/payments
POST /delegated/payments, POST /delegated/payments/sync, POST /delegated/transfers et POST /delegated/transfers/irt
Les autres points de terminaison documentés, comme les remboursements, les dépôts, les liens de paiement et les sous-marchands, ne vérifient pas la signature.
Avant d’utiliser la signature de la charge utile, effectuez les étapes suivantes :
Générez une paire de clés RSA. La clé privée signe le corps de la requête ; la clé publique permet à HUB2 de vérifier la signature. Gardez la clé privée secrète.
Ajoutez la clé publique dans les préférences marchand du tableau de bord HUB2. Le tableau de bord accepte soit une clé publique RSA encodée en PEM (-----BEGIN PUBLIC KEY-----), soit un certificat X.509 encodé en PEM contenant cette clé (-----BEGIN CERTIFICATE-----). Deux clés peuvent être enregistrées, une actuelle et une précédente, afin de changer de clé sans interruption. Contactez l’équipe support si vous avez besoin d’aide pour cette étape.
Sérialisez le corps JSON de la requête sous forme compacte (sans espaces ni retours à la ligne) et envoyez exactement cette chaîne comme corps.
Signez cette chaîne avec votre clé privée en RSA avec SHA-256 (RSA-SHA256, PKCS#1 v1.5).
Encodez la signature en Base64 et envoyez-la dans l’en-tête X-Signature.
HUB2 ne vérifie pas les octets bruts reçus : il analyse votre corps et recalcule la chaîne signée comme le fait JSON.stringify en JavaScript, avec le même ordre des clés, sans espaces, avec les caractères non ASCII et / non échappés, et les nombres sous leur forme la plus courte (1000, et non 1000.0). Un corps envoyé avec une indentation, des espaces superflus ou un autre échappement échoue donc à la vérification. Signez exactement cette chaîne, par exemple avec Python json.dumps(body, separators=(',', ':'), ensure_ascii=False) ou PHP json_encode($body, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES). En Python, passez les montants entiers en int (int(amount)) : json.dumps écrit un flottant comme 1000.0 avec son .0.
Pour imposer la vérification de la signature sur les transactions réelles (Environment: live), activez dans le tableau de bord HUB2 l’option qui force le trafic à utiliser la signature, en cochant la case correspondante.Une fois cette option activée :
Toute requête avec Environment: live envoyée aux points de terminaison cités plus haut doit inclure un en-tête X-Signature valide.
Si l’en-tête est absent ou si la signature est invalide, l’API renvoie une erreur HTTP 400 avec le code signature_error.
Tant que l’option est désactivée, les requêtes live ne sont pas vérifiées, même si elles incluent l’en-tête X-Signature.
Avant d’activer cette option dans l’environnement live, assurez-vous que la génération des signatures est correctement implémentée et rigoureusement testée dans l’environnement sandbox.
Conservez toujours votre clé privée en lieu sûr et mettez à jour les clés publiques dans le tableau de bord à chaque changement de paire de clés.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"HUB2 Documentation","colors":{"primary":"#0D9373","light":"#07C983","dark":"#0D9373"},"logo":{"light":"https://mintcdn.com/hub2-83/aPkTvmVeXN9HXpuW/assets/logo/hub2.png?fit=max\u0026auto=format\u0026n=aPkTvmVeXN9HXpuW\u0026q=85\u0026s=18f9f70abbe4d6234bad47152927237a","dark":"https://mintcdn.com/hub2-83/aPkTvmVeXN9HXpuW/assets/logo/hub2.png?fit=max\u0026auto=format\u0026n=aPkTvmVeXN9HXpuW\u0026q=85\u0026s=18f9f70abbe4d6234bad47152927237a"},"favicon":"https://mintcdn.com/hub2-83/aPkTvmVeXN9HXpuW/assets/favicon.png?fit=max\u0026auto=format\u0026n=aPkTvmVeXN9HXpuW\u0026q=85\u0026s=d71426a9f8f85b6c6ccce6d36247bf39","api":{"openapi":"https://api.hub2.io/docs-json"},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/hub2","website":"https://www.hub2.io"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"hub2-83","hasAudioNarration":false,"actualSubdomain":"hub2-83","customDomains":["docs.hub2.io"],"gitSource":{"type":"github","owner":"technohub2","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"entitlements":{},"buildId":"6ae16defdd9644647b4200dd","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"default","tag":"Référence de l'API","count":86},{"language":"default","tag":"Integration","count":44},{"language":"default","tag":"Intégration","count":44},{"language":"default","tag":"Payments","count":18},{"language":"default","tag":"Webhooks","count":17},{"language":"default","tag":"Documentation","count":16},{"language":"default","tag":"Transfers","count":11},{"language":"default","tag":"Compliance","count":10},{"language":"default","tag":"Payment Links","count":10},{"language":"default","tag":"Processing Only","count":10}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"assets/style.css","content":"table{display:table!important}.table-scroll{overflow:scroll}table tbody tr:nth-child(odd){background:#FAFAFA}html.dark table tbody tr:nth-child(odd){background:#1A1A1A}"}],"page":{"pagePath":"integration/fr/other_products/payload_signature","slug":"/integration/fr/other_products/payload_signature","pageMetadata":{"title":"Signature des données","description":null,"href":"/integration/fr/other_products/payload_signature"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,li:`li`,ol:`ol`,p:`p`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`1`,id:`introduction`,children:`Introduction`}),`\n`,_jsx(_components.p,{children:`Cette section explique comment intégrer le mécanisme optionnel de signature de la charge utile (payload), qui garantit l’intégrité et l’authenticité de vos requêtes API.`}),`\n`,_jsx(_components.p,{children:`La signature est vérifiée sur les points de terminaison suivants de l’API documentée ici :`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`POST /payment-intents`})}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`POST /payment-intents/:id/payments`}),` et `,_jsx(_components.code,{children:`POST /payment-intents/:id/payments/sync`})]}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`POST /transfers`})}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`POST /irt/transfer`}),` et `,_jsx(_components.code,{children:`POST /irt/transfer/verified-recipient`})]}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`POST /terminal/payments`})}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`POST /delegated/payments`}),`, `,_jsx(_components.code,{children:`POST /delegated/payments/sync`}),`, `,_jsx(_components.code,{children:`POST /delegated/transfers`}),` et `,_jsx(_components.code,{children:`POST /delegated/transfers/irt`})]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Les autres points de terminaison documentés, comme les remboursements, les dépôts, les liens de paiement et les sous-marchands, ne vérifient pas la signature.`}),`\n`,_jsx(Heading,{level:`2`,id:`prérequis`,children:`Prérequis`}),`\n`,_jsx(_components.p,{children:`Avant d’utiliser la signature de la charge utile, effectuez les étapes suivantes :`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Générez une paire de clés RSA. La clé privée signe le corps de la requête ; la clé publique permet à HUB2 de vérifier la signature. Gardez la clé privée secrète.`}),`\n`,_jsxs(_components.li,{children:[`Ajoutez la clé publique dans les préférences marchand du tableau de bord HUB2. Le tableau de bord accepte soit une clé publique RSA encodée en PEM (`,_jsx(_components.code,{children:`-----BEGIN PUBLIC KEY-----`}),`), soit un certificat X.509 encodé en PEM contenant cette clé (`,_jsx(_components.code,{children:`-----BEGIN CERTIFICATE-----`}),`). Deux clés peuvent être enregistrées, une actuelle et une précédente, afin de changer de clé sans interruption. Contactez l’équipe support si vous avez besoin d’aide pour cette étape.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`signer-une-requête`,children:`Signer une requête`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Sérialisez le corps JSON de la requête sous forme compacte (sans espaces ni retours à la ligne) et envoyez exactement cette chaîne comme corps.`}),`\n`,_jsxs(_components.li,{children:[`Signez cette chaîne avec votre clé privée en RSA avec SHA-256 (`,_jsx(_components.code,{children:`RSA-SHA256`}),`, PKCS#1 v1.5).`]}),`\n`,_jsxs(_components.li,{children:[`Encodez la signature en Base64 et envoyez-la dans l’en-tête `,_jsx(_components.code,{children:`X-Signature`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`HUB2 ne vérifie pas les octets bruts reçus : il analyse votre corps et recalcule la chaîne signée comme le fait `,_jsx(_components.code,{children:`JSON.stringify`}),` en JavaScript, avec le même ordre des clés, sans espaces, avec les caractères non ASCII et `,_jsx(_components.code,{children:`/`}),` non échappés, et les nombres sous leur forme la plus courte (`,_jsx(_components.code,{children:`1000`}),`, et non `,_jsx(_components.code,{children:`1000.0`}),`). Un corps envoyé avec une indentation, des espaces superflus ou un autre échappement échoue donc à la vérification. Signez exactement cette chaîne, par exemple avec Python `,_jsx(_components.code,{children:`json.dumps(body, separators=(',', ':'), ensure_ascii=False)`}),` ou PHP `,_jsx(_components.code,{children:`json_encode($body, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)`}),`. En Python, passez les montants entiers en `,_jsx(_components.code,{children:`int`}),` (`,_jsx(_components.code,{children:`int(amount)`}),`) : `,_jsx(_components.code,{children:`json.dumps`}),` écrit un flottant comme `,_jsx(_components.code,{children:`1000.0`}),` avec son `,_jsx(_components.code,{children:`.0`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`environnement-sandbox`,children:`Environnement sandbox`}),`\n`,_jsxs(_components.p,{children:[`Pendant le développement et les tests, avec l’en-tête `,_jsx(_components.code,{children:`Environment: sandbox`}),` :`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Si l’en-tête `,_jsx(_components.code,{children:`X-Signature`}),` est présent, HUB2 le vérifie avec les clés publiques enregistrées pour votre compte.`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Si la signature est valide, la requête est traitée normalement.`}),`\n`,_jsxs(_components.li,{children:[`Si la signature est invalide ou mal formée, l’API renvoie une erreur HTTP `,_jsx(_components.code,{children:`400`}),` avec le code `,_jsx(_components.code,{children:`signature_error`}),`.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Si l’en-tête `,_jsx(_components.code,{children:`X-Signature`}),` est absent, la requête est traitée sans vérification de signature.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`environnement-live`,children:`Environnement live`}),`\n`,_jsxs(_components.p,{children:[`Pour imposer la vérification de la signature sur les transactions réelles (`,_jsx(_components.code,{children:`Environment: live`}),`), activez dans le tableau de bord HUB2 l’option qui force le trafic à utiliser la signature, en cochant la case correspondante.`]}),`\n`,_jsx(_components.p,{children:`Une fois cette option activée :`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Toute requête avec `,_jsx(_components.code,{children:`Environment: live`}),` envoyée aux points de terminaison cités plus haut doit inclure un en-tête `,_jsx(_components.code,{children:`X-Signature`}),` valide.`]}),`\n`,_jsxs(_components.li,{children:[`Si l’en-tête est absent ou si la signature est invalide, l’API renvoie une erreur HTTP `,_jsx(_components.code,{children:`400`}),` avec le code `,_jsx(_components.code,{children:`signature_error`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Tant que l’option est désactivée, les requêtes live ne sont pas vérifiées, même si elles incluent l’en-tête `,_jsx(_components.code,{children:`X-Signature`}),`.`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Avant d’activer cette option dans l’environnement live, assurez-vous que la génération des signatures est correctement implémentée et rigoureusement testée dans l’environnement sandbox.`})}),`\n`,_jsx(_components.p,{children:`Conservez toujours votre clé privée en lieu sûr et mettez à jour les clés publiques dans le tableau de bord à chaque changement de paire de clés.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Signature des données","description":null,"href":"/integration/fr/other_products/payload_signature"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Introduction","slug":"introduction","depth":1,"children":[]},{"title":"Prérequis","slug":"prérequis","depth":2,"children":[]},{"title":"Signer une requête","slug":"signer-une-requête","depth":2,"children":[]},{"title":"Environnement sandbox","slug":"environnement-sandbox","depth":2,"children":[]},{"title":"Environnement live","slug":"environnement-live","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/hub2-83/0ef60d836fa10d10/assets/mermaid.js"],"subdomain":"hub2-83","siteName":"HUB2 Documentation","title":"Signature des données - HUB2 Documentation","navMaps":{"firstHrefInVersion":{"English":{"href":"/integration/en/other_products/payload_signature","matchLevel":1},"Français":{"href":"/integration/fr/other_products/payload_signature","matchLevel":0}},"firstHrefInLanguage":{}},"lastModified":"2026-10-28T03:37:28.865Z","originalFileLocation":"integration/fr/other_products/payload_signature.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"HUB2 Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hub2-83/2cSAgZof76cJIDy-/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/hub2-83/2cSAgZof76cJIDy-/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hub2-83/2cSAgZof76cJIDy-/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/hub2-83/2cSAgZof76cJIDy-/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/hub2-83/2cSAgZof76cJIDy-/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hub2-83/2cSAgZof76cJIDy-/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hub2-83/2cSAgZof76cJIDy-/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/hub2-83/2cSAgZof76cJIDy-/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/hub2-83/2cSAgZof76cJIDy-/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Signature des données - HUB2 Documentation\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"HUB2 Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.hub2.io/integration/fr/other_products/payload_signature\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://hub2-83.mintlify.site/_mintlify/api/og/v2?division=Autres+produits\u0026amp;title=Signature+des+donn%C3%A9es\u0026amp;theme=92cb3d561e9d2318e8ed5cd1\u0026amp;signature=3d6498f97e4f476807f4aeb55a7835a1d78f0b43392043d77b5096d30031f08a\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Signature des données - HUB2 Documentation\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hub2-83.mintlify.site/_mintlify/api/og/v2?division=Autres+produits\u0026amp;title=Signature+des+donn%C3%A9es\u0026amp;theme=92cb3d561e9d2318e8ed5cd1\u0026amp;signature=3d6498f97e4f476807f4aeb55a7835a1d78f0b43392043d77b5096d30031f08a\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/hub2-83/2cSAgZof76cJIDy-/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"HUB2 Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0D9373\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.hub2.io/integration/fr/other_products/payload_signature\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/integration/fr/other_products/payload_signature.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.hub2.io/#organization\",\"name\":\"HUB2 Documentation\",\"url\":\"https://docs.hub2.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/hub2-83/aPkTvmVeXN9HXpuW/assets/logo/hub2.png?fit=max\u0026auto=format\u0026n=aPkTvmVeXN9HXpuW\u0026q=85\u0026s=18f9f70abbe4d6234bad47152927237a\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.hub2.io#website\",\"name\":\"HUB2 Documentation\",\"url\":\"https://docs.hub2.io\",\"publisher\":{\"@id\":\"https://docs.hub2.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.hub2.io/integration/fr/other_products/payload_signature#webpage\",\"url\":\"https://docs.hub2.io/integration/fr/other_products/payload_signature\",\"name\":\"Signature des données\",\"dateModified\":\"2026-10-28T03:37:28.865Z\",\"isPartOf\":{\"@id\":\"https://docs.hub2.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.hub2.io/integration/fr/other_products/payload_signature#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.hub2.io/integration/fr/other_products/payload_signature#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Autres produits\",\"item\":\"https://docs.hub2.io/integration/fr/other_products/balances\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Signature des données\",\"item\":\"https://docs.hub2.io/integration/fr/other_products/payload_signature\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.hub2.io/integration/fr/other_products/payload_signature#article\",\"headline\":\"Signature des données\",\"name\":\"Signature des données\",\"url\":\"https://docs.hub2.io/integration/fr/other_products/payload_signature\",\"mainEntityOfPage\":{\"@id\":\"https://docs.hub2.io/integration/fr/other_products/payload_signature#webpage\"},\"dateModified\":\"2026-10-28T03:37:28.865Z\",\"publisher\":{\"@id\":\"https://docs.hub2.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.hub2.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"HUB2 Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"HUB2 Documentation","nav":{"global":null,"versions":[{"version":"English","pages":[{"title":"English","href":"/integration/en/other_products/payload_signature"}]},{"version":"Français","tabs":[{"tab":"HUB2"},{"tab":"Intégration","groups":[{"group":"Guide de démarrage","pages":[{"title":"Introduction","href":"/integration/fr/getting_started/introduction"},{"title":"Fonctionnement de l'API","href":"/integration/fr/getting_started/api_operation"},{"title":"Sécurité","href":"/integration/fr/getting_started/security_considerations"},{"title":"Comprendre les erreurs","href":"/integration/fr/getting_started/understand_errors"},{"title":"Clés API","href":"/integration/fr/getting_started/api_keys"}]},{"group":"Transferts","pages":[{"title":"Introduction","href":"/integration/fr/transfers/transfers_introduction"},{"title":"Intégration","href":"/integration/fr/transfers/transfers_integration"},{"title":"Motifs d'échec","href":"/integration/fr/transfers/transfers_failure_causes"},{"title":"MSISDN - Liste noire","href":"/integration/fr/transfers/transfers_msisdn_blacklist"},{"title":"MSISDN en sandbox","href":"/integration/fr/transfers/transfers_sandbox_msisdn"}]},{"group":"Paiements","pages":[{"title":"Introduction","href":"/integration/fr/payments/payments_introduction"},{"title":"Intégration","href":"/integration/fr/payments/payments_integration"},{"title":"Authentification","href":"/integration/fr/payments/payments_authentication"},{"title":"Lister les paiements","href":"/integration/fr/payments/payments_list"},{"title":"Exemples d'objets","href":"/integration/fr/payments/payments_examples"},{"title":"Motifs d'échec","href":"/integration/fr/payments/payments_failure_causes"},{"title":"MSISDN en sandbox","href":"/integration/fr/payments/payments_sandbox_msisdn"}]},{"group":"Paiement instantané","pages":[{"title":"Introduction","href":"/integration/fr/instant_payment/instant_payment_introduction"},{"title":"Intégration","href":"/integration/fr/instant_payment/instant_payment_integration"}]},{"group":"Webhooks","pages":[{"title":"Introduction","href":"/integration/fr/webhooks/webhooks_overview"},{"title":"Intégration","href":"/integration/fr/webhooks/webhooks_integration"},{"title":"Liste des événements disponibles","href":"/integration/fr/webhooks/webhooks_events_list"},{"title":"Comportement des webhooks","href":"/integration/fr/webhooks/webhooks_behavior"},{"title":"Bonnes pratiques","href":"/integration/fr/webhooks/webhooks_bestpractices"},{"title":"Exemples","href":"/integration/fr/webhooks/webhooks_examples"}]},{"group":"Processing Only","pages":[{"title":"Introduction","href":"/integration/fr/processing_only/processing_only_introduction"},{"title":"Configuration","href":"/integration/fr/processing_only/processing_only_setup"},{"title":"Intégration","href":"/integration/fr/processing_only/processing_only_integration"}]},{"group":"Payment Links","pages":[{"title":"Introduction","href":"/integration/fr/payment_links/payment-links_introduction"},{"title":"Configuration","href":"/integration/fr/payment_links/payment-links_setup"},{"title":"Intégration","href":"/integration/fr/payment_links/payment-links_integration"}]},{"group":"Abonnements","pages":[{"title":"Introduction","href":"/integration/fr/subscriptions/subscriptions_introduction"},{"title":"Intégration","href":"/integration/fr/subscriptions/subscriptions_integration"}]},{"group":"Sous-marchands","pages":[{"title":"Introduction","href":"/integration/fr/submerchants/submerchants_introduction"},{"title":"Configuration","href":"/integration/fr/submerchants/submerchants_setup"},{"title":"Intégration","href":"/integration/fr/submerchants/submerchants_integration"}]},{"group":"Autres produits","pages":[{"title":"Soldes","href":"/integration/fr/other_products/balances"},{"title":"Remboursements","href":"/integration/fr/other_products/refunds"},{"title":"Approvisionnement de compte","href":"/integration/fr/other_products/provisioning"},{"title":"Demandes de règlement","href":"/integration/fr/other_products/settlement_requests"},{"title":"Données publiques","href":"/integration/fr/other_products/public_data"},{"title":"Collecte bancaire","href":"/integration/fr/other_products/bank_collection"},{"title":"Destinataires","description":null,"href":"/integration/fr/other_products/recipients"},{"title":"Signature des données","href":"/integration/fr/other_products/payload_signature"}]}]},{"tab":"Documentation","pages":[{"title":"Documentation","href":"/documentation/fr/glossary"}]},{"tab":"Référence de l'API","pages":[{"title":"Référence de l'API","href":"/api-reference/data/get-countries"}]}]}]},"basePath":"","title":"Signature des données - HUB2 Documentation","buildId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","deploymentId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","dynamics":[],"chunks":[]}