Aller au contenu principal

API QR Code : un code QR ou un QR de paiement SEPA en un appel


Un appel HTTP, et vous recevez l'image d'un code QR prête à coller sur une affiche, une facture ou un site. Texte, lien, Wi-Fi, ou carrément un virement SEPA que votre client n'a plus qu'à scanner avec son application bancaire.

Pas de bibliothèque à installer, pas de compte chez un service qui vous colle son logo au milieu du code. L'API renvoie directement un fichier PNG ou SVG, et c'est tout ce qu'elle fait. Voilà à quoi ressemble le résultat :

Exemple de code QR noir et blanc genere par l'API de Digital3D

Gratuit ou PRO : ce que vous avez

Les deux formules font exactement la même chose, avec les mêmes formats et les mêmes tailles. Il n'y a ni filigrane ni QR qui expire. La seule différence, c'est le nombre de codes par jour. La barre verte montre ce que vous pouvez générer en une journée.

API gratuite

0 €, la clé de votre compte suffit

10par jour
  • 10 codes QR par jour
  • QR classique et QR de paiement SEPA
  • PNG et SVG, toutes les tailles, sans filigrane
  • De quoi faire ses affiches, ses cartes de visite ou quelques factures

API PRO

12 € par mois, tous mes logiciels compris

1000 par jour
  • 1000 codes QR par jour
  • Assez pour un QR de paiement sur chaque facture d'un logiciel de gestion
  • Le guide TV complet sur 11 jours et mes logiciels en prime
  • Actif dès la requête suivante, avec la même clé

Passer en PRO

Le compteur repart à minuit UTC, donc à 1 h ou 2 h du matin en France selon la saison. Et bonne nouvelle pour les maladroits : une requête mal formée (un IBAN faux, un texte vide) est refusée avant même de regarder votre clé, donc elle ne coûte rien.

Obtenir votre clé

Ça prend une minute : créez un compte, validez votre adresse e-mail, puis copiez la clé affichée dans votre compte. C'est la même clé que pour mes autres services. Elle s'envoie dans l'en-tête Authorization de chaque requête, à la place de VotreCleApi dans les exemples qui suivent.

Vous utilisiez l'ancienne version avec userId dans l'URL ou dans le JSON ? Ce paramètre n'est plus lu, la clé passe maintenant uniquement par l'en-tête. Conséquence : on ne peut plus coller l'adresse telle quelle dans la barre du navigateur. Pour tester à la souris, il y a le Swagger, j'y reviens plus bas.

Le QR classique : texte, lien, Wi-Fi

C'est l'appel NormalQr, un simple GET. Vous donnez le texte, vous recevez l'image :

curl -H "Authorization: Bearer VotreCleApi" "https://qr.digital3d.com/api/QrCreator/NormalQr?text=https%3A%2F%2Fdigital3d.com&format=Png&size=6" -o qr.png
ParamètreValeursCe qu'il fait
textObligatoireLe contenu à encoder. Pensez à l'encoder pour une URL (les :, / et & doivent être échappés).
formatPng (par défaut) ou SvgLe type d'image renvoyé.
sizeDe 1 à 20, 4 par défautLa taille de chaque petit carré du code, en pixels pour un PNG.

Là où ça devient amusant, c'est que le texte n'a pas besoin d'être un lien. Un téléphone sait interpréter plusieurs formats. Le plus pratique à la maison : le QR du Wi-Fi, à imprimer et à coller sur le frigo pour les invités. Le texte à encoder ressemble à ça :

WIFI:T:WPA;S:NomDuReseau;P:MotDePasse;;

Même principe avec mailto:quelquun@example.com pour ouvrir un e-mail, ou avec une vCard (le format des fiches de contact) pour qu'un scan ajoute vos coordonnées au répertoire.

Le QR de paiement SEPA

Celui-là, je l'aime beaucoup. Vous mettez un QR sur votre facture, votre client le scanne avec son application bancaire, et le virement est prérempli : bénéficiaire, IBAN, montant, communication. Plus personne ne recopie un IBAN de travers. C'est l'appel PaymentQr, un POST avec un corps JSON :

curl -X POST "https://qr.digital3d.com/api/QrCreator/PaymentQr" \
  -H "Authorization: Bearer VotreCleApi" \
  -H "Content-Type: application/json" \
  -o paiement.svg \
  -d '{
    "beneficiaryName": "ACME SRL",
    "iban": "BE68539007547034",
    "bic": "GKCCBEBB",
    "amount": 12.34,
    "remittance": "Facture 2026-001",
    "outputFormat": "Svg",
    "size": 8
  }'
ChampObligatoireCe qu'il contient
beneficiaryNameOuiLe nom de celui qui reçoit l'argent, 70 caractères au maximum.
ibanOuiSon compte. L'IBAN est vérifié, un numéro invalide est refusé.
bicNonLe code de la banque, 8 ou 11 caractères en majuscules.
amountNon, mais conseilléLe montant en euros, de 0,01 à 9 999 999,99.
remittanceNonLa communication libre qui apparaît sur l'extrait de compte, 140 caractères au maximum.
structuredReferenceNonLa communication structurée, qui commence par RF. C'est l'une ou l'autre : avec remittance en même temps, la requête est refusée.
purposeNonUn code de 4 lettres pour le motif du paiement, par exemple RENT pour un loyer.
infoNonUn petit message pour le payeur, 140 caractères au maximum. Toutes les banques ne l'affichent pas.
outputFormat et sizeNonComme pour le QR classique : Png ou Svg, taille de 1 à 20.

Un bémol, parce qu'il en faut un : ce QR suit une norme européenne, mais toutes les applications bancaires ne la lisent pas. En Belgique, aux Pays-Bas ou en Allemagne, c'est très répandu. Ailleurs, faites l'essai avec votre propre banque avant d'en imprimer cinq cents.

Sous le capot

Pour ceux qui aiment savoir ce qui se passe derrière, voici les choix techniques.

Le QR de paiement respecte la norme EPC069-12 du Conseil européen des paiements. Concrètement, c'est un petit texte de quelques lignes (version, bénéficiaire, IBAN, montant, communication) rangées dans un ordre imposé, puis encodé comme n'importe quel QR. L'API construit ce texte pour vous et vérifie les champs avant.

Tous les codes sont générés avec le niveau de correction d'erreur M. Un QR embarque des données en double pour rester lisible même abîmé : au niveau M, environ 15 % de la surface peut être tachée, pliée ou masquée sans gêner la lecture. C'est d'ailleurs le niveau que la norme impose pour les QR de paiement.

Côté format, prenez le PNG pour un e-mail ou une page web, avec une valeur de size assez grande pour ne pas devoir l'étirer. Pour tout ce qui part chez l'imprimeur, prenez le SVG : c'est du dessin vectoriel, il s'agrandit jusqu'à la taille d'une bâche sans devenir flou. La réponse porte le bon type, image/png ou image/svg+xml, et son corps est directement le fichier, pas du JSON à décoder.

Dernier détail : ce sont des QR statiques. Quand quelqu'un scanne le code, rien ne passe par mon serveur, tout le contenu est dans l'image. Il marchera donc encore dans dix ans, que mon service existe ou non.

Suivre votre quota

Dès que la clé est acceptée, chaque réponse porte trois en-têtes : X-RateLimit-Limit (votre limite du jour), X-RateLimit-Remaining (ce qu'il vous reste) et X-RateLimit-Reset (l'heure de la remise à zéro, en secondes Unix).

Côté erreurs, il y en a quatre à prévoir :

  • 400 : la requête est invalide (texte vide, taille hors limites, IBAN faux). Gratuit, rien n'est décompté.
  • 401 : la clé manque, elle est mal écrite, ou le compte n'est pas encore validé. Gratuit aussi.
  • 429 : le quota du jour est épuisé. L'en-tête Retry-After donne le nombre de secondes à attendre avant la remise à zéro.
  • 503 : le service n'a pas pu vérifier la clé. Ça se retente 30 secondes plus tard.

Tester sans écrire une ligne de code

Tout est documenté dans le Swagger de l'API (une page qui liste les appels et permet de les lancer depuis le navigateur). Cliquez sur « Authorize », collez votre clé, puis essayez chaque appel avec le bouton « Try it out ». L'image s'affiche dans la page. Attention quand même : ces essais comptent dans votre quota, comme n'importe quelle requête.

Pourquoi un abonnement ?

Parce que tout ça tourne sur un serveur que je paie. Le gratuit reste là pour tester et pour un usage léger, et dix codes par jour couvrent largement les besoins d'un particulier. Si vous branchez l'API sur un logiciel de facturation ou sur un site, l'abonnement PRO à 12 € par mois monte la limite à 1000 codes par jour, inclut le guide TV complet et tous mes logiciels, et c'est ce qui garde le service en vie. L'usage commercial sans abonnement n'est pas autorisé.

Rejoignez la conversation

Vous devez avoir un compte pour commenter cet article. La création est gratuite et prend moins d'une minute.

  • Le fichier XMLTV à télécharger gratuitement, chaque jour
  • Commenter les articles et répondre aux autres lecteurs
  • Être averti par e-mail des nouveaux articles que vous suivez

Aucun commentaire pour le moment.

Une erreur s'est produite. Cette application peut ne plus répondre jusqu'à ce qu'elle soit rechargée.Veuillez contacter l'auteur. Reload 🗙