Echange d'outil pour payer en ligne un service CHATONS

Bonjour à tous,

A la réunion mensuel d’hier (voir le compte rendu ici), nous avons échangé sur comment augmenter le nombre d’utilisateurs de nos services.
Le problème se pose sur les services qui nécessitent une inscription et un paiement.

Idéalement, il faudrait que celui-ci puisse se faire en ligne : le chatons pourrait alors activé l’accès à ce service en automatique, réduisant d’autant le temps d’attente et les procédures manuelles pour l’utilisateur.

Je crée ici ce sujet afin que ceux qui ont mis en place un outil de paiement en ligne puissent expliquer techniquement comment ils s’y sont pris.

Je me permet également de redonner le lien sur une autre discussion un peu lié, Alternative ou meilleur choix pour du paiement en ligne en €, qui essayait d’identifié plusieurs solutions alternative à des solutions GAFAM comme PayPal.

2 Likes

Pour commencer, voilà comment je procède avec PayPal

Cette solution est loin d’être satisfaisant d’un point de vu GAFAM mais ça l’avantage d’être simple.
Pour la mettre en œuvre, il suffit de créer un compte « vendeur » chez PayPal et de le lier à un RIB.

Voilà, l’enchaînement technique à réaliser alors.
(voir https://developer.paypal.com/docs/paypal-payments-standard/integration-guide/html-reference-landing/ pour en savoir plus)

1-Commande utilisateur
Au moment où je demande à mon utilisateur de valider sa commande, je lui affiche un lien de ce type:

<FORM action="https://www.paypal.com/cgi-bin/webscr" method="post">
<INPUT TYPE="hidden" name="business" value="id-paypal@sleto.net">
<INPUT TYPE="hidden" name="currency_code" value="EUR">
<INPUT TYPE="hidden" name="lc" value="fr">
<INPUT TYPE="hidden" name="return" value="https://portail.sleto.net">
<INPUT TYPE="hidden" name="cancel_return" value="https://portail.sleto.net">
<INPUT TYPE="hidden" name="notify_url" value="https://portail.sleto.net/diacamma.payoff/validationPaymentPaypal">
<INPUT TYPE="hidden" name="item_name" value="nom de l'utilisateur">
<INPUT TYPE="hidden" name="custom" value="référence commande">
<INPUT TYPE="hidden" name="tax" value="0">
<INPUT TYPE="hidden" name="amount" value="10">
<INPUT TYPE="hidden" name="cmd" value="_xclick">
<INPUT TYPE="hidden" name="no_note" value="1">
<INPUT TYPE="hidden" name="no_shipping" value="1">
<INPUT type="image" name="submit" src='https://www.paypalobjects.com/webstatic/mktg/logo/pp_cc_mark_74x46.jpg' title='PayPal' alt='PayPal'>
</FORM>

précisions:

  • business : identifiant vendeur chez PayPal afin de se faire créditer son compte du paiement.
  • notify_url : url de votre chatons où vous recevrez la notification d’un paiement afin d’activer le service correspondant.
  • custom : identifiant de la commande qui vous sera renvoyer afin de savoir qu’elle commande est à valider.
  • amount : montant de la commande.

Notez que l’on peux aussi convertir ce formulaire en lien « <a> » en GET: celui-ci peux alors facilement s’intégrer dans un courriel.

2-Notification de commande
Au moment où PayPal aura accepter le paiement de la commande, vous recevrez via un requête POST sur l’url précisé avec un ensemble de variables liées au règlements (les précédentes du formulaire + celle lié au paiement en lui même)

Pour commencer, vous devez vérifier l’exactitude des champs envoyés.
Pour cela, vous devez envoyer une requête POST à https://www.paypal.com/cgi-bin/webscr avec l’ensemble des champs reçu et en ajoutant le champ « cmd »="_notify-validate".
La requête doit alors renvoyer « VERIFIED », sinon un des éléments reçu n’est pas considéré comme valide voir cette notification est considéré comme frauduleuse (ne venant pas de PayPal).

Vérifiez alors la commande demandé (champ « custom ») et que le montant réellement payé (‹ mc_gross ›) correspond bien a ce qui est attendu.
A noter que vous recevez alors également un référence de transaction (« txn_id ») ainsi que le montant de la commission PayPal prélevé (« mc_fee ») environs 3%.

Vous pouvez alors enclencher la validation du service.
Personnellement je lève un booléen dans une BDD et un « cron » viens agir régulièrement dessus.

Si vous voulez plus de précision, n’hésitez pas à me contacter.

1 Like

Bonjour,

Ce sujet m’intéresse, notamment la partie sur la création automatique du service après inscription d’un utilisateur !

Bon weekend :slight_smile:

En effet, on peux en effet distingué le fait de payer un service en ligne en deux points:

  • La gestion du paiement en ligne proprement dit, comme je l’ai illustré avec PayPal.
  • La création automatique d’un service donné.

Pour réaliser le deuxième point, je pense que le plus simple est de se créer un petit script d’activation de service.
Ce script peut alors se lancer manuellement ou automatiquement afin de créer un service.

Pour la gestion automatique, je lance une petit action crontab à intervalle régulier qui ira scruter une base de donnée afin de savoir s’il y a quelque chose à créer.
Attention, si votre script de création prend plus de temps que l’interval crontab, il est bon de mettre en place un verrou (ex lockfile) pour éviter la superposition de traitement.

Si d’autres personnes ont des solutions plus élégante, n’hésitez pas à échanger.

La prise de commande peut être réalisée avec systeme.io et les paiements gérés par Stripe. Pas libres :frowning: mais probablement pas pire que PayPal, et en tout cas le système de prise de commande est bien fait.

Est-ce que des chatons ont déjà mis en œuvre un paiement géré par Stripe ?

Si oui, merci d’échanger sur comment vous y êtes pris.

On n’est pas encore Chatons, mais on l’a fait pour notre offre Boîte à Outils. L’interface de systeme.io permet justement de faciliter tout cela, de la prise de commande jusqu’au paiement.

Par contre pour de l’intégration pure de Stripe, là je ne sais pas, je ne suis pas développeur, mais ils ont des API REST et de la documentation.

Lors de la réu mensuelle on avait aussi évoqué la possibilité de passer par Liberapay, de faire une sorte de partenariat. Liberapay étant une association qui gère à la base les dons aux projets libres, le code lui même de Libreapay est libre et l’éthique de Liberapay est très proche des valeurs CHATONS. Ils ne prélèvent actuellement rien sur les dons, ils se financent par des dons libres et explicites à leur asso. Ce partenariat permettrait de donner une visibilité également à Liberapay du coup :slight_smile: et par rocochet à tous les projets libres qui sont dessus (il y en a un paquet :slight_smile: et ainsi de ne pas avoir des liens Paypal et/ou Stripe directement visibles sur le site Chatons. Ca me parait malheureusement difficile de faire mieux (voir plus bas).

Pour info c’est Liberapay qui apparaît parfois sur F-Droid « offrez un café aux développeurs » lorsque vous téléchargez une application.

Au sujet des intermédiaires de paiement : à ma connaissance et pour avoir un peu creusé il y en a pas des « plus vertueux » que d’autres. Le seul paiement qui fait moins d’intermédiaires, donc moins d’argent pour VISA, Paypal, Stripe etc, et qui nourrit moins donc ce système là, c’est le virement direct compte à compte. Soit on les gère nous mêmes (galère pour faire correspondre paiement à personne à service etc, traitement manuel), ou alors il faut dénicher LA banque qui permet ça (c’est possible que des banques le proposent en option). Soit alors faire appel aux classiques Paypal et Stripe (Liberapay utilise les deux) qui permettent les deux de gérer les paiements sur compte direct sans nourrir au passage VISA, Mastercard etc. Et c’est aussi du coup et sur Paypal et sur Stripe ce qui produit le moins de frais pour le payeur et le receveur (logique car il y a pas la commission carte dessus de Visa, Mastercard, etc).

Chez Liberapay ils ont étudié la question forcément j’imagine, avant ils avaient un prestataire de paiement direct, Mango Pay, qui a voulu arrêter à un moment , du coup maintenant ils sont passés sur Paypal + Stripe et j’ai l’impression qu’ils font tout pour que les frais des deux côtés soient moindres (quand on fait un don mensuel ils regroupent etc et expliquent pourquoi). Du coup ben ce sera bénéfique encore d’au moins leur demander conseil même si on fait pas de partenariat.

Après je sais pas ce que vous en pensez, mais ce serait super chouette je trouve un partenariat avec Liberapay (je radote pardon :slight_smile:

5 Likes

Alors c’est pas tout à fait dans le sujet, mais j’en parle.
Chez ARN on utilise COIN qui a une méthode d’import des comptes et qui s’occupe d’affecter le paiement à l’adhérent⋅e qui à payer.
Ça implique d’indiquer aux adhérent⋅es de payer en priorité par virement permanent.

Il y a du travail en cours sur COIN pour gérer la commande d’un service spécifique. Même si l’outil se destine plutôt au FAI asso, il pourrait potentiellement convenir pour un CHATONS associatif. C’est codé en Django et on bosse dessus 1 semaine par an (en gros).

Par contre on est aussi intéressé par les méthodes de paiements cb, car pour faire de l’instantané, ça semble quand même incontournable…

1 Like

ljf,
COIN : c’est un projet libre que vous maintenez ?
Tu peux donner un lien sur le projet COIN ?
Est-ce que l’on peut participer au développement ?

1 Like

C’est ça (enfin on le maintient 1 semaine par an…)
https://code.ffdn.org/ffdn/coin

1 Like

Nous on utilise plutôt Payzen pour nos clients (intégré dans Odoo mais des connecteurs sont aussi dispo pour plein d’autres outils)

C’est un intermédiaire de paiement non libre mais il est français…

Voir aussi ce post : https://forum.chatons.org/t/chatons-autoentrepreneur-moyen-de-paiement/1145/5

1 Like

@Laurent Il y as pas mal de truc à faire pour ceux qui veulent filer un coup de main (notamment le passage en python 3).
Je suis pas dev alors je peut pas faire grand chose mais si y’as des dev motivé j’en suis pour aider comme je peu (A-Hébergement se verrai bien utiliser Coin mais en python 3)

J’en suis encore à maquetter pour la V2 du site de mon Chaton, j’hésite encore entre Pélican (full python avec Coin) et Wordpress (plus simple à gérer).
Mais je vois pas de plugin pour du paiement sur Pélican (encore du dev à faire faire par ?).

1 Like

Je relance ce vieux sujet, il est toujours dans ma tête depuis la réunion mensuelle de juin 2020 où on l’avait évoqué. Je pingue @mablr avec qui on devait travailler dessus :slight_smile:

Je veux bien contacter Liberapay pour leur proposer d’échanger sur une possible collaboration (pour info leur salon de discussion se passe sur des issues github ici : https://github.com/liberapay/salon).

Y a t-il des idées concrètes / envies qui sortent ? Est-ce que c’est toujours pertinent pour vous? Qu’est-ce qu’on a envie de faire? Amha, j’aime beaucoup voir Liberapay, et le fait qu’on puisse faire un don, sur mes applis F-Droid (vous savez le fameux offrir un café aux développeurs? ).

Voici quelque premières idées d’après mes souvenirs de cette réunion de juin :

  • on avait parlé de faire une cagnotte CHATONS sur entraide.chatons.org. Du coup niveau liberapay cela implique d’ouvrir un compte chatons sur liberapay, de lier son compte soit à un compte Paypal, soit à un compte Stripe, et voilà. Pour avoir fait cela déjà pour deux assos dont je suis memre, comme expliqué dans les messages plus hauts, ce n’est pas bien compliqué.
  • on avait parlé de faire un entraide.chatons.org augmenté des services payants, avec du coup un lien Liberapay (pour chaque chatons? pour chaque service? )

Pour ma part dans mes rêves je m’imagine bien un système à la F-Droid où chaque CHATONS qui le souhaite est sur Liberapay et que son bouton pour le soutenir apparaît toujours à côté ou carrément sur la page du service accessible via entraide.chatons.org ou le site CHATONS.

Si le sujet vous intéresse toujours je peux le mettre à l’ODJ de la prochaine réu mensuelle. Sinon faites-moi signe quand et si ça reviens :wink:

4 Likes

Sauf que le collectif n’ayant aucune existence juridique, je m’interroge sur le fait que ce soit bien possible de faire cela. Peut-on créer un compte sur Paypal ou Stripe sans avoir de compte bancaire ?

De plus, il faudrait aussi en amont penser la répartition de cette cagnotte : comment on la redistribue aux structures (sous-entendu selon quels critères) ? est-ce possible légalement ?

J’ai un petit retour d’expérience à ce propos. Je fais partie d’un collectif informel (pas d’existence juridique) qui utilise notamment Liberapay pour son financement (pour la location d’une machine virtuelle notamment).
Vu que tous les membres de l’équipe ont un compte liberapay individuel, on a créé une équipe, c’est-à-dire un groupe qui rassemble plusieurs personnes et qui permet de partager les donations selon des taux personnalisables (dans notre cas, on est trois et c’est moi qui reçoit la majorité des fonds car je paye la VM moi-même).
Donc, ce qu’on pourrait faire, c’est que chaque membre crée un compte ou utilise un compte existant et on crée une équipe qui inclut les membres participants et on définit un taux de partage entre chaque membre. Comme chacun a son compte, pas de problème au niveau juridique ou financier et en plus, on peut enlever ou ajouter des membres à volonté.

Je me permets de rajouter le lien vers l’équipe en question comme exemple : https://liberapay.com/OpenBSD-fr/

2 Likes

J’ai aussi créé un compte au tout début pour les dons , lors de la création de ma structure Devloprog.
https://liberapay.com/Devloprog--Ethicit/

2 Likes

On en avait parlé, mais vu le nombre de projets en cours au sein du collectif (GT stats.chatons.org / GT structuration du wiki et création d’un guide pour être chaton, mise en place de la modération, accueil de la nouvelle portée, mise à jour des contenus de chatons.org… et sûrement plein d’autres choses que je n’ai pas en tête), je crains qu’il soit difficile de se lancer pour le moment l’ajout des services avec inscription (qu’ils soient payants ou gratuits). Mais je ne suis pas opposée du tout à cela, c’est juste que si personne ne prend le « lead », ça ne se fera pas pour le moment.

Et que pensez-vous d’un outil comme https://opencollective.com ? Cela pourrait aussi répondre au besoin…

1 Like

On est en train de le tester avec YunoHost / Support Self Hosting. (notre ancienne page de don est à plat car le trucs qu’on utilisait pour s’interfacer avec stripe ne supporte plus la nouvelle API).