MangoPay – Une API de gestion de paiement sur internet.
MangoPay est une solution de gestion de paiement sur internet, l’équivalent de son homologue US Paypal mais, cocorico, cette solution est Française. Enfin presque, car la société est basée à Luxembourg… En même temps pour une « pseudo » banque, cela reste logique. En effet MangoPay est une banque qui n’en est pas une. C’est plutôt un intermédiaire qui facilite les paiements et s’assure (avec les vraies banques) que les paiements soient effectués. En anglais on appelle cela un « Escrow » (sans déconner !). Un opérateur tiers. Donc un « Escrow » ne se traduit pas par « escroc » (escrow vient du vieux français escroue, qui signifiait « bout de parchemin ») mais plutôt par « dépôt », « compte bloqué ». Il faut le voir comme un intermédiaire entre les clients de votre site e-commerce et les banques de ces clients. MangoPay permet à de jeune startup de créer un porte-monnaie virtuel en marque blanche. Bien évidement une commission est prélevée (1.8% + 0.18€ –> détail) MangoPay se veut être une plateforme de paiement en ligne pour les Marketplaces, les plateformes collaboratives et les sites de crowdfunding. Bien évidement les workflows ne sont pas les mêmes suivant ces cas. En ce qui me concerne, je vais m’intérresser aux modèles des sites e-commerces. Ma problématique est de mettre en relation client et acheteur, tout en garantissant que l’acte d’achat se déroule proprement. Ceci implique de gérer le suivis des livraisons et des retours, voir même les échanges physiques réel. Pour cela je vais utiliser l’API de MangoPay. Comme je vais devoir manipuler de l’argent, des cartes de crédits, des porte-monnaies, MangoPay met en place deux environnements, la production classique et le mode sandbox. C’est sur ce dernier que je vais tester mon application. En plus d’être « fictif » il permet de tester des cartes bancaires factice et donc d’ajouter de l’argent sur les portes-monnaies virtuels de mes utilisateurs, en ne déboursant pas un rond ! Mises en place de l’API – Inscription https://docs.mangopay.com Vous devez créer deux comptes, un pour la prod (pour plus tard, quand vous serez prêt) et un pour la sandbox. Je vous conseil de faire les deux tout de suite, comme ça c’est fait, et vous allez conserver ses informations dans votre coffre-fort. Rendez vous sur cette page https://docs.mangopay.com/api-references/start-in-production/ pour l’inscription en prod, et sur cette page https://docs.mangopay.com/api-references/sandbox-credentials/ pour l’inscription en mode sandbox. On vous demandera de créer un clientId, de donner le nom de votre société et un email (choisir aussi la monnaie Euro). L’important c’est d’avoir un email valide (pro de préférence) et un clientId que vous allez utiliser par la suite dans l’API. Vous allez ensuite valider votre inscription et recevoir un mot de passe (passphrase). NOTEZ ces informations et conservez les ! Ça y est, vous avez créé vos accès à l’API, maintenant passons à la doc. Les bases de l’API : Bien sur il faut se référer avant tout à la doc online. Plutôt bien faite, du moins il y a bcp d’info, mais pas forcément affiché dans le bon ordre selon moi. Ce n’est que mon avis, mais je vous propose de regarder ces pages dans cet ordre (cas e-commerce) : https://docs.mangopay.com/marketplace-workflow/ (workflow pour les sites e-commerce) https://docs.mangopay.com/api-references/ (vous donne l’ensemble des requêtes possible) https://docs.mangopay.com/mangopay-dashboard/ (accès au dashboard) Et arrêtez-vous la pour l’instant. Créez vous un accès sur le dashboard Sandbox et familiarisez vous avec quelques minutes. Il est vide à ce stade donc pas grand chose à voir. L’important ici est de comprendre à quoi sert MangoPay et ce que vous voulez en faire. Ou trouvez l’information, les ressources et savoir utiliser les outils disponibles (dashboard). Le code C# L’Api fonctionne avec l’architecture REST. Les avantages : simple, sans état : indépendance client-serveur, pas de session, représentation compréhensible sous forme d’URI. Les inconvénients : le client doit conserver certaines données, augmentation du nombre de requêtes. Une des pages de la doc conseille de commencer par créer un utilisateur (user), puis de lui associer un porte-monnaie (wallet). C’est ce que je vais vous montrer, mais en créant plutôt deux utilisateurs : John et Julie. Tout d’abord, vous devez télécharger le SDK de votre langage de programmation préféré. Le SDK MangoPay est disponible sur GitHub en PHP, Python, Ruby, Java, .Net et JavaScript. Je vais continuer l’article en m’appuyant sur le SDK .net, mais sachez les noms des méthodes sont les mêmes dans toutes les versions (attention, j’ai pas tout vérifié), et parfois avec les mêmes fautes d’orthographe ! (ceci ma permit d’en conclure qu’effectivement le code est fortement similaire) https://github.com/MangoPay Note: j’ai commencé par utiliser la version compilé du package SDK .net dans une solution WebForm Asp.net. J’ai eu des soucis lors de l’exécution sur les libs Common.Logging.Core.dll et Common.Logging.dll. J’ai pas compris pourquoi alors j’ai téléchargé le code source de MangoPay.SDK et j’ai ajouté/créé un projet web directement dans leur solution. Ça compile et ça s’exécute correctement. Mais mieux, dans la solution fournit par le SDK on a un projet de Test, c’est une mine d’or pour comprendre comment fonctionne l’API. Je vous conseille fortement d’aller y faire un tour. J’ai autant appris avec les tests qu’avec la doc sur internet. Il faut pour cela instancier l’API et lui passer les paramètres suivant : MangoPayApi api = new MangoPayApi (); api.Config.ClientId = « myClientId » ; api.Config.ClientPassword = « XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX » ; L’objet ‘api’ dispose d’une autre propriété importante : api.Config.BaseUrl. Par défaut c’est l’url de la SandBox. Donc si vous ne la spécifiez pas, vous serez par défaut sur le serveur de test. Pour créer un utilisateur, voici les quelques lignes de code : UserNaturalPostDTO user = new UserNaturalPostDTO (« john.doe@sample.org » , « John » , « Doe » , new DateTime (1975, 12, 21, 0, 0, 0), CountryIso.FR, CountryIso .FR); user.Occupation = « programmer » ; user.IncomeRange = 3; user.Address = « Some Address » ; UserNaturalDTO john = api.Users.Create(user); Remarque : MangoPay distingue deux types d’utlisateur, les UserNatural et les UserLegal. Pour faire simple, UserNatural est un utilisateur lambda, le client de base et UserLegal une personne morale, représentant une société. Ceci m’amène à vous parler du KYC Concept de MangoPay. KYC signifie « Know Your Customer », « Connais ton client ». Bon tout ça découle certainement de directive Européenne et est en lien étroit avec la lutte contre la fraude, le blanchiment d’argent et le financement du terrorisme (rien contre l’évasion fiscale ? étonnant…) Du coup MangoPay distingue…