Ludovic Frank - Développeur indépendant

Accepter le paiement en cryptomonnaie (Bitcoin, eGold) en tant qu'artisan

ionicons-v5-k Ludovic Frank 9 févr. 2022
1183 lectures Niveau : intermédiaire

Bonjour bonjour 😊,
Aujourd’hui, on va parler de ma dernière petite aventure, à savoir, permettre à une entreprise de 142 ans d’accepter les cryptomonnaies.

Mise en situation

Je travaille avec Les Frères Marchand, depuis maintenant plus d’un an, dans un premier temps nous avons fait un site internet ensemble (c’était la deuxième instance de Ludo Dev CMS), puis nous avons eu envie de créer une fromagerie en ligne ensemble, celle-ci est en ligne depuis septembre 2021.

Sur cette fromagerie, tout est automatisé afin de simplifier la vie des clients et des Frères Marchand, j’en parle ici, car cela aura son importance par la suite, quand je dis tout automatisé, ça veut dire que la création de factures l’est aussi… et vu qu’aujourd’hui nous parlons de moyens de paiement nouveau … ça a son importance.

Et si on acceptait les cryptomonnaies ?

Étant moi-même un grand fan de Tech (bah, en même temps vous êtes sur un site qui s'appelle developpeur-freelance.io, donc vous l’aurez deviné). Je connais le monde des cryptomonnaies et je le suis assidûment.

En faisant ma veille je me suis rendu compte qu’il était possible pour Les « Frères Marchand » d’accepter les cryptomonnaies, je leur ai donc demandé, « Voulez-vous accepter les crypto ? ». Et la réponse a été “oui”, une entreprise de 142, très ouverte vers l’avenir 😛.

Étudions les contraintes au projet

Pour l’entreprise

Une entreprise, c’est un peu plus compliqué que de gérer ces comptes perso, il y a une comptabilité à tenir, des documents fiscaux à créer (les factures), je ne pouvais pas demander à la compta des Frères Marchand de tenir un compte par « type de crypto », sachant qu’on en accepte plusieurs. 
De manière générale, le Bitcoin n’étant pas une monnaie d’état, il n’est pas possible pour entreprise de facturer en bitcoin, il faut facturer en euro.

Il est possible pour une entreprise de détenir de la cryptomonnaie, mais alors on appelle ça “un actif”

Tout doit rester automatiser comme ça l’était avant l’ajout des cryptomonnaies, dans le rapport qui est envoyé aux caves, seules les commandes dont on est sûr de recevoir le paiement est envoyé à la préparation, avec le paiement par carte bancaire par exemple, l’info est passée aux caves quand ce que l’on appelle « l’emprunte » sur la carte est validée, en gros quand la banque nous a autorisés à "bloquer" les fonds sur la carte bancaire du client même si le transfert n’a pas encore réellement était fait.

Pour les clients

Il fallait absolument que les clients actuels qui paient par carte bancaire, Google Pay et Apple Pay ne soient pas perdus. Leur permettre de continuer à utiliser la fromagerie en ligne de manière fluide comme ils l’ont toujours fait.
Enfin, je ne souhaitais pas traiter les clients souhaitant commander avec de la cryptomonnaie comme des clients de “seconde zone”, pour moi c’était clair que leur expérience doit être aussi fluide que ceux qui paient par carte, Apple Pay ou Google Pay.

Comment allons-nous y prendre ?

Le truc super avec la fromagerie en ligne des Frères Marchand c’est qu’elle est construite avec « Ludo Dev E-Shop », lui-même construit sur « Symfony » et « Sylius Framework ». Vous savez ce que ça veut dire ? Ça veut dire que j’ai une liberté totale, je peux y ajouter les “passerelles de paiement” que je veux sans dépendre de qui que ce soit. Et ça, ça a toute son importance pour la suite.

Regardons ce qui existe sur le marché

Coinbase Commerce

En premier lieu, j’ai forcément vu Coinbase commerce, forcément, Coinbase étant leader dans le monde des cryptomonnaies… Ils sont aussi présents dans le e-commerce, j’ai donc testé un peu leurs solutions, mais je ne l’ai pas retenu, voilà pourquoi : 

  • Je trouve l'expérience cliente perfectible, ce n’est pas fluide comme j’aime, cela doit être hyper simple, je donne le montant, je donne l’adresse ou virer ce montant et ça marche.
  • D’un point de vue commerçant, ce n’est pas du tout automatiser, je m’explique, quand un paiement cryptomonnaie est reçu, il arrive sur un portefeuille hébergé sur la plateforme, il est ensuite nécessaire de se connecter à son compte pro pour transformer ça en euro et le virer sur le compte bancaire du commerçant, vous l’aurez compris … ça manque d’automatisation à mon gout tout ça.

Moue, non, pas convaincue par coinçasse commerce, du moins pas pour ce projet.

UTRUST

Étant moi-même dans l’écosystème Elrond (mon hero : @ludodev), je me suis tout naturellement intéressé à la dernière acquisition d’Elrond, UTRUST.

J’ai donc commencé à "jouer les clients” et à tester l'expérience client sur le dev net.

Sur les projets blockchain, il y a souvent plusieurs réseaux :

  • Le devnet : réseau pour les développeurs d’app.
  • Le test net : Pour que le public puisse tester à plus grande échelle.
  • Enfin, le main net : lui c’est tout simplement le vrai réseau, ou les actifs numériques ont réellement de la valeur, ça peut couter cher de l’utiliser pour les tests 😂.

L'expérience me plaisait bien, cela ressemble à « Stripe », mais pour de la crypto, c’est pas mal.

C’est parti pour l’implémentation

Les tests étant concluants, c’est parti pour l’implémentation. 
J’ai donc lu la documentation, cela ressemble pas mal à ce que peut faire Stripe à une différence de prêt.

Même si Stripe utilise les webhooks, ils peuvent être assez optionnels pour un “flow” de paiement normal, ils sont utiles pour le remboursement surtout (et c’est vrai dans certains cas pour valider complètement l'empreinte sur une carte).

Sur une transaction en cryptomonnaie, le paiement est complètement asynchrone et c’est tout à fait normal. Certains réseaux, comme Elrond, sont très rapides à traiter une transaction, d'autres plus congestionnés (au hasard, Ethereum ?).

Du coup lorsque le client sort de l’interface de paiement, en fait on a qu’une seule validation de la transaction sur le réseau (la blockchain), il est à ce moment redirigé sur la page de “succès”, mais le réseau n’a pas complètement validé la transaction. 

Du coup, il ne faut pas prendre cette redirection comme un succès, mais attendre que le webhook avec l'événement “ORDER.PAYMENT.RECEIVED” arrive, mais bien vérifier que le state qui l’accompagne est sur “completed”, car lors d’une prévérification l’event peut trigger mais pas en "complète", mais en "received".

La création de “l’order”

Je vous laisse lire la doc de UTRUST pour ça, la chose à savoir est que les prix doivent être envoyés en tant que chaîne de caractère et nom en int ou float.
L’email et le prénom doivent être présents lors de la création de l’order sinon l’API UTRUST refuse la création de « l'order ».

Et enfin il est absolument nécessaire d’envoyer trois URLs, 

  • La return URL : Où redirige-t-on le client quand on a une confirmation de la blockchain ?
  • La cancel URL : Où le redirige-t-on s’il annule sa commande ?
  • Le plus important, webhook URL : Ici vous devez fournir l’URL qui doit être appelée en POST quand un événement arrive, je trouve très malin de l’avoir mis dans la requête.

Tout dépend du SDK utilisé, mais par exemple pour PHP, le SDK permet de vérifier l’array envoyé à UTRUST avant d’envoyer la requête … penser à l’utiliser ça évitera d’envoyer des requêtes à l’API pour rien 🙂.

Comment fonctionne le webhook ?

Une fois, le webhook configuré, vous recevrez une requête POST sur l’URL que vous avez passée, bien sûr, les données sont signées, donc ! avant de les exploiter pensez bien à vérifier la signature, bah oui sinon n’importe qui peut dire que “La blockchain a confirmé que le paiement 651 a été validé”.

Et comme je l’ai dit plus tôt l'événement qui vous intéresse le plus est “ORDER.PAYMENT.RECEIVED” avec le state “complete”, c’est à ce moment-là que vous êtes sûre que tout le réseau a validé la transaction (sur Elrond, cela 40 secondes).

La vidéo de la première

Ci-dessous vous pouvez découvrir la vidéo de la première mondiale d’achat de fromage en crypto 

 

Remerciements

Pour ce projet les remerciements vont aux personnes / groupes suivants :

  • Les Frères Marchand : Une belle entreprise qui mêle tradition et modernité et qui est donc les premiers fromagers a accepté les cryptomonnaies.
  • La communauté Elrond France : L'accueil fait aux Frères Marchand par la communauté francophone Elrond était juste dingue, merci pour eux !
  • UTRUST : ils se  sont rendus disponibles pour les quelques petites questions et détails techniques pour lesquels je les ai sollicités.

Conclusion

L’idée de cet article n’est pas de réécrire la doc de UTRUST, car elle est bien faite, mais de vous donner les petites infos à connaître si jamais vous souhaitez intégrer le paiement en cryptomonnaie à votre plateforme e-commerce.
Passez une très bonne semaine 😁.