Sommaire
Bonjour bonjour 😊,
Aujourd’hui, on va parler de ma dernière petite aventure, à savoir, permettre à une entreprise de 142 ans d’accepter les cryptomonnaies.
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.
É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 😛.
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.
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.
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.
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 :
Moue, non, pas convaincue par coinçasse commerce, du moins pas pour ce projet.
É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 :
L'expérience me plaisait bien, cela ressemble à « Stripe », mais pour de la crypto, c’est pas mal.
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".
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,
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 🙂.
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).
Ci-dessous vous pouvez découvrir la vidéo de la première mondiale d’achat de fromage en crypto
Pour ce projet les remerciements vont aux personnes / groupes suivants :
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 😁.