Echange d'outil pour payer en ligne un service CHATONS

paiement-en-ligne
#1

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
#2

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
#3

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:

#4

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.

#5

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.

#6

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.

#7

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.

#8

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:

4 Likes
#9

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
#10

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
#11

C’est ça (enfin on le maintient 1 semaine par an…)

1 Like
#12

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 : CHATONS : autoentrepreneur / moyen de paiement

1 Like
#13

@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