Source: https://cryptanio.com/fr/wiki/accepter-paiements-crypto-bot-telegram/
Language: fr

# Comment accepter des paiements en cryptomonnaie dans un bot Telegram

Associez la commande d\'un produit physique dans votre bot Telegram à une facture Cryptanio\, envoyez un lien de paiement et vérifiez le règlement\. Avec les restrictions de Telegram Stars et des Mini Apps\.

Mis à jour: 2026-11-14

Vous pouvez associer un paiement en cryptomonnaie à une commande dans votre propre bot Telegram \: votre serveur crée une facture Cryptanio\, le bot transmet un lien à l\'acheteur puis confirme la prise en compte de la commande après vérification du paiement\. Prenons une boutique de produits physiques\, par exemple des affiches imprimées\. Le développement du bot et le traitement des commandes restent à votre charge\.

## Vérifiez d\'abord les règles de Telegram {#v-rifiez-d-abord-les-r-gles-de-telegram}

Les biens et services numériques vendus dans Telegram doivent être payés en Telegram Stars\, désignées par XTR\. Cela concerne notamment l\'accès payant au contenu d\'un bot\. Un lien vers un site externe ne constitue pas une exception \: vous ne pouvez pas proposer une cryptomonnaie à la place des Stars pour cet achat\. Ces restrictions figurent explicitement dans la [documentation Telegram Stars](<https://core.telegram.org/bots/payments-stars>)\.

Notre scénario concerne un bot classique sans Mini App et la commande d\'un produit physique\. Les Mini Apps et les bots qui leur sont associés sont soumis à des restrictions supplémentaires sur les intégrations blockchain\, dont l\'utilisation de TON\. Les bots classiques sans Mini App sont expressément exclus de ces règles dans les [Blockchain Guidelines de Telegram](<https://core.telegram.org/bots/blockchain-guidelines>)\. Ne transposez donc pas cette procédure à une Mini App sans vérification supplémentaire\. Les règles de Telegram ont été consultées le 13 novembre 2026\.

## Ce qu\'il vous faut {#ce-qu-il-vous-faut}

Préparez votre propre bot\, un serveur pour l\'exécuter\, un compte Cryptanio et un projet avec le service Payments actif\. Il vous faut des adresses de réception rattachées au service Payments de ce projet et une clé API de production autorisant les factures et le service concerné\.

Conservez sur votre serveur le jeton du bot Telegram\, la clé API Cryptanio et le secret de vérification du webhook\. L\'acheteur ne reçoit que son lien de paiement\. Ce scénario ne fournit pas de connexion prête à l\'emploi qui créerait votre boutique et traiterait les commandes à votre place\.

## 1\. Préparez le projet de paiement {#1-pr-parez-le-projet-de-paiement}

Activez Payments et ajoutez les adresses de réception au pool du service depuis l\'espace client\. Une simple entrée dans le carnet d\'adresses ne suffit pas\. Assurez\-vous que le réseau et l\'actif souhaités sont disponibles dans votre projet \; ne promettez pas à l\'acheteur des options absentes de la page de paiement\.

Si la différence entre USDT et un réseau n\'est pas encore claire\, commencez par [Réseau et jeton](<https://cryptanio.com/fr/wiki/reseau-et-jeton/>)\. La [facture](<https://cryptanio.com/fr/wiki/quest-ce-quune-facture/>) associe une demande de paiement précise à son état\.

## 2\. Associez la commande à l\'acheteur {#2-associez-la-commande-l-acheteur}

Lorsque l\'utilisateur choisit une affiche et confirme sa commande\, votre serveur crée un numéro de commande interne\. Enregistrez le lien entre la commande\, l\'acheteur sur Telegram et le futur ID de facture\. Conservez les coordonnées et l\'adresse de livraison dans votre système \: elles n\'ont pas à figurer dans un lien technique ou un message public\.

L\'ID de facture enregistré doit permettre de retrouver une seule commande sans ambiguïté\. Vous pourrez ainsi traiter le paiement même après un redémarrage du bot\.

## 3\. Créez une facture distincte {#3-cr-ez-une-facture-distincte}

Créez la facture via l\'API v1 depuis votre serveur\. Pour permettre le choix du réseau et de l\'actif\, définissez la cotation de la commande avec invoice\_currency et invoice\_amount\. Par exemple\, USD 12\.50 constitue une unité de cotation\, tandis que le paiement s\'effectue dans une cryptomonnaie prise en charge\. Cela ne signifie ni accepter des dollars ni convertir automatiquement les fonds\.

Le bloc suivant référence un exemple de création de commande pris en charge dans le catalogue de la documentation \:

```bash
#!/usr/bin/env bash
set -euo pipefail
: "${CRYPTANIO_API_KEY:?Set CRYPTANIO_API_KEY}"
: "${CRYPTANIO_OPERATION_ID:?Set CRYPTANIO_OPERATION_ID}"
: "${CRYPTANIO_PROJECT_ID:?Set CRYPTANIO_PROJECT_ID}"
json_string() {
  local text="$1" char code index output='"'
  for ((index=0; index<${#text}; index++)); do
    char="${text:index:1}"
    case "$char" in
      '"'|'\') output+="\\$char" ;;
      *) printf -v code '%d' "'$char"
         if ((code < 32)); then printf -v char '\\u%04x' "$code"; fi
         output+="$char" ;;
    esac
  done
  printf '%s"' "$output"
}
response_file="$(mktemp)"
trap 'rm -f "$response_file"' EXIT
transfer_status=0
http_status="$(curl \
  --silent --show-error --max-time 30 --request POST \
  --header "Authorization: Bearer $CRYPTANIO_API_KEY" \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header "Idempotency-Key: $CRYPTANIO_OPERATION_ID" \
  --data-binary '{"project":'"$(json_string "$CRYPTANIO_PROJECT_ID")"',"invoice_currency":"USD","invoice_amount":"12.50","reference":"order-42"}' \
  "https://api.cryptanio.com/v1/invoices" \
  --output "$response_file" --write-out '%{http_code}')" || transfer_status=$?
if [[ "$http_status" == 2?? ]]; then
  cat "$response_file"
  exit "$transfer_status"
fi
printf 'HTTP %s\n' "$http_status" >&2
cat "$response_file" >&2
exit 1
```

[Télécharger l’exemple](</wiki/examples/ace23bd7c3cba0e47dafdcd6075a506ddb2ec8d6581c6129af815c1558f5a8fc.sh>)

Fournissez les paramètres de votre commande\. Chaque nouvelle opération nécessite un Idempotency\-Key unique \; si vous répétez la même requête après un échec\, conservez la clé initiale\. Un clic répété ne doit donc pas créer une nouvelle facture\. Consultez le [guide de confirmation des commandes](<https://cryptanio.com/fr/wiki/confirmer-commandes-paiement-crypto-webhook/>) pour plus de détails\.

## 4\. Envoyez le lien à l\'acheteur {#4-envoyez-le-lien-l-acheteur}

Enregistrez checkout\_url dans la réponse de création et envoyez\-le sous forme de bouton avec un lien dans une conversation privée\. La Bot API prend en charge les boutons URL\, décrits dans [InlineKeyboardButton](<https://core.telegram.org/bots/api#inlinekeyboardbutton>)\. L\'acheteur ouvre la page Cryptanio et choisit un mode de paiement disponible\.

Transmettez l\'URL exacte reçue\. Ne reconstituez pas le lien à partir de l\'ID \: celui renvoyé lors de la consultation d\'une facture sert à l\'affichage\. La réponse de création enregistrée est nécessaire pour poursuivre le paiement interactif\.

## 5\. Vérifiez le paiement sur votre serveur {#5-v-rifiez-le-paiement-sur-votre-serveur}

Configurez le [webhook](<https://cryptanio.com/fr/wiki/quest-ce-quun-webhook/>) du projet vers votre gestionnaire et vérifiez sa signature à partir du corps original de la requête\. Associez l\'événement à la facture enregistrée\, puis vérifiez son état actuel via l\'API\.

Ne lancez le traitement de la commande que lorsque l\'état de la facture est paid\. La détection d\'une transaction\, le retour de l\'acheteur dans la conversation ou son message « j\'ai payé » ne constituent pas cette confirmation\. Un paiement partiel\, insuffisant\, excédentaire ou tardif peut nécessiter une décision distincte \; ne confirmez pas automatiquement une telle commande\. Un webhook répété ne doit pas déclencher une nouvelle exécution de la commande\.

## Comment tester et où chercher les erreurs {#comment-tester-et-o-chercher-les-erreurs}

Testez le parcours complet avec votre propre commande \: création\, ouverture du lien\, paiement\, changement d\'état et message du bot\. Tenez compte des frais du réseau \; cette création de facture utilise des données réelles\. Testez également les clics répétés et les livraisons en double d\'un événement\.

Si les fonds ont été envoyés mais que la commande n\'est pas confirmée\, vérifiez le réseau\, l\'actif\, les instructions de paiement et les [confirmations de transaction](<https://cryptanio.com/fr/wiki/confirmations-de-transaction/>)\. Si l\'état est déjà paid\, cherchez une erreur dans l\'association entre la commande et la facture ou dans le gestionnaire du bot\. Les notifications Telegram destinées au propriétaire se configurent à l\'aide du [guide distinct](<https://cryptanio.com/fr/wiki/notifications-transactions-crypto-telegram/>) \; elles ne remplacent pas la vérification de la commande par le serveur\.

Étiquettes: [Paiements](https://cryptanio.com/fr/wiki/tag/payments/), [Telegram](https://cryptanio.com/fr/wiki/tag/telegram/), [Webhooks](https://cryptanio.com/fr/wiki/tag/webhooks/)

## Articles associés

- [La différence entre réseau et jeton](https://cryptanio.com/fr/wiki/reseau-et-jeton/)
- [Qu’est ce qu’une facture](https://cryptanio.com/fr/wiki/quest-ce-quune-facture/)
- [Comment confirmer automatiquement le paiement d’une commande par webhook](https://cryptanio.com/fr/wiki/confirmer-commandes-paiement-crypto-webhook/)
