Paypal

Paypal est un plugin technique qui vous permet de créer des formulaires de paiement paypal.

Attention le plugin permet simplement de créer des formulaires de paiement. Il ne gère pas un panier, une boutique, .... C’est à vous d’implémenter les boucles requises.

Ce plugin a été concu par Matthieu Marcillaud, Les Développements Durables et touti. Merci à eux.

Installation et configuration

Une fois le plugin installé, aller dans le panneau de configuration pour régler les options suivantes

Type d’environnement test ou production est que les paiements sont réels ou simulés ?
Compte email de votre compte paypal Le compte paypal (email) qui reçoit l’argent
Devise euro ou dollar

Sur le site paypal, dans le compte du vendeur, il faut aussi :

  • Définir la TVA dans vos préférences
  • Penser à activer IPN (le retour de confirmation de transactions)

Utilisation rédacteur

Le plugin offre un modèle pour insérer un bouton d’une manière simplifiée

Bouton d’achat

<paypal
|titre=Tongues vertes
|prix=15>

Affichera

Bouton de don
Pour les dons, le prix est facultatif (don libre)

<paypal
|type=donner
|titre=Sauvons les écureuils>

Affichera

Utilisation développeur

Deux pages de démonstrations sont disponibles :

Le syntaxe générale du formulaire est :

[(#FORMULAIRE_PAYPAL{#ARRAY{
	prix,30,
	libelle,T-Shirt Pomme,
	redirect_ok,[(#URL_PAGE{paiement_ok})],
}})]

Voici les paramètres principaux du tableau #ARRAY à fournir
Pour connaitre l’intégralité des paramètres, éditer le fichier formulaires/paypal.html

Paramètres liés à la commande

ParamètresexplicationsValeur par défaut
prix prix de l’objet
libelle description courte de l’objet
redirect_url adresse de retour, une fois le paiement effectué
shipping frais de port 0
type (vide) : acheter
abonnement : abonnement
donner : faire un don
(vide)
no_shipping 0 : on demande, mais pas obligatoire
1 : pas demandé
2 : obligatoire.
1

Paramètres liés l’acheteur
Il est aussi possible de passer les coordonnées de l’acheteur pour pré-remplir son adresse

Paramètresexplications
email Email
first_name Prénom
last_name Nom
address1 Voie
address2 Complément
city Ville
zip Code postal
country Code du pays (2 lettres, idem plugin « pays »)
night_phone_b Numéro de téléphone

Exemple de syntaxe avancée

Voici un usage avancé du formulaire issu du code du squelette zcommerce qui permet d’afficher le détail d’une commande avec plusieurs articles dans l’interface Paypal.

[(#FORMULAIRE_PAYPAL{#ARRAY{
	         custom,payer_commande,
	         libelle,Commande #ID_COMMANDE,
	         identifiant,#REFERENCE,
	         redirect_ok, #URL_ACTION_AUTEUR{
	                        supprimer_panier_encours,
	                        "",
	                        #URL_PAGE{
	                                z-commerce,
	                           appel=paiement,
	                           reference=#REFERENCE}},
	         details,#GET{details},
}})]

On appelle le formulaire avec un tableau #ARRAY contenant :

Paramètresexplications
custom, libelle, identifiant la commande de l’internaute
redirect_ok page de retour (dans l’exemple, une URL d’action qui vide le panier)
details détails de la commande (un tableau)

IPN

L’IPN est le mécanisme technique de Paypal pour informer au site vendeur si une transaction a été validé ou non. Pensez à bien activer l’option dans le compte paypal du vendeur.

Le plugin gère ce retour IPN et si la transaction est bonne, il l’envoie au pipeline traitement_paypal.

Pour avoir un exemple d’utilisation de ce pipeline, on pourra consulter le plugin Commandes Paypal.

SPIP4

En SPIP4, pour des raisons de sécurité, les données ne sont pas transmises aussi le raccourci du modèle risque de ne pas fonctionner, il faut alors utiliser le système d’inclusion dans le squelette.

<INCLURE{fond=modeles/paypal, env}>

Alternatives

Il existe d’autres plugins qui gèrent le paiement avec paypal

Ceci est une embauche de documentation. Ne pas hésiter à la compléter ou la rectifier.

Discussion

12 discussions

  • 3

    Bonjour
    Le plugin paypal utilisé n’étant plus à jour concernant les notifications IPN j’ai utilisé cette classe trouvée sur gitHub : https://github.com/paypal/ipn-code-samples/tree/master/php

    Les urls sandbox et prod sont différentes de celles du présent plugin au 8/2/2019 et la méthode d’appel vers paypal se fait en CURL

    • Salut Jérôme,

      merci pour l’info. Est-ce que tu te sentirais de mettre à jour le plugins, quitte à créer une nouvelle branche, pour cela. (A voir avec erational la modalité concrète) ?

      Maïeul

    • Salut à vous,

      Oui le plugin est ancien. Il faut sans doute le mettre à jour les codes concernant l’IPN etc.
      Jerôme, as tu déjà un code qui fonctionne ?

      Si oui, n’hésite pas à le commiter sur la zone (en svn)
      Si tu ne veux pas passer à svn, envoie moi ton code et je le committerai en ton nom.

      A terme, j’espère qu’on proposera git pour tous rapidement

    • Bonsoir
      oui j’ai un code qui fonctionne, je te passe un zip avec les quelques fichiers modifiés, j’ai mis des commentaires de partout pour explications.

    Répondre à ce message

  • 1

    Bonjour
    commandes_paypal n’est plus nécessaire pour SPIP 3.2 ?

    • En fait j’ai un gros doute. Je teste mes paiements via la sandbox et à aucun moment le statut de la commande est changé dans ma BDD après paiement validé.

      Je n’ai bien entendu pas « commande paypal » qui n’est pas valide SPIP 3.2, d’où ma question précédente.

    Répondre à ce message

  • Julie B

    Bonjour ,

    Après passage de Spip 2.1 à Spip 3.1 , la validation ipn de la commande par Paypal (paypal_ipn.php) ne fonctionne plus chez moi.

    Pour exactement le même type de transaction sur Spip 2.1
    le retour de recuperer_page dans paypal_ipn.php est VERIFIED ou INVALID
    par contre sous Spip 3.1 le retour est vide.
    (Les squelettes sont identiques)
    Ceci alors que l’url de soumission a Paypal est la même (pour test)
    https://www.sandbox.paypal.com/cgi-bin/webscr
    (J’ai vérifié par des traces que les datas transmises a Paypal sont aussi identiques.)

    Je suis à court d’idée.

    Quelqu’un aurait peut-être une piste ?

    Merci

    Julie

    Répondre à ce message

  • Delorimier

    Je cherche à configurer pour dollars canadiens (CAD), est-ce possible ?

    Répondre à ce message

  • Philippe Robin

    bonjour

    le bouton simple :

    <paypal|titre=Tongues vertes|prix=15>

    ne fonctionne pas.

    sous spip 3.1

    Répondre à ce message

  • Bonjour,

    Pour l’environnement de test, il ne veut pas enegistrer l’email.
    Seulement pour l’environnement production.

    Avez-vous déhj)à rencontré ce problème ?

    Gil

    Répondre à ce message

  • Bernard Blazin

    Bonjour,

    Voilà un plugin qui rencontre un certain succès ces temps ci ! Bravo !
    il y a cependant un petit hic, je trouve. de plus en plus de concepteurs de sites vendent des produits via le panier. pas obligatoirement 1 produit mais plusieurs. C’est pour cela qu’il existe le tableau detail bien pratique. mais si l’on veut faire passer une référence de produit pour chaque produit mis en vente c’est impossible car inc-paypal-details ne le permet pas.

    <BOUCLE_details(POUR){tableau #ENV{details}}>
       #SET{numero,#COMPTEUR_BOUCLE}
       <input type="hidden" name="item_number_#GET{numero}" value="#GET{numero}" />

    j’ai donc été obligé de surcharger celui ci afin de passer le libelle dans l’array detail et modifier le fichier ainsi :

     <BOUCLE_detail(POUR){tableau #VALEUR}>
          [(#REM) #CLE=>#VALEUR<br />]
          [(#CLE|=={libelle}|oui)
     		<input type="hidden" name="item_number_#GET{numero}" value="#VALEUR" />
    		]

    Il s’agit bien entendu d’une suggestion mais serait il possible d’avoir cette modification directement sur le plugin ?

    Merci !

    Répondre à ce message

  • 2

    Bonjour, bonsoir, ce que vous voudrez,

    On est bien d’accord, le plugin ne crée rien de visible sur le site immédiatement ?

    Il faut aller dans le squelette pour ajouter les trucs machins qui permettent l’affichage sur le site en partie publique.

    Cela dit c’est (potentiellement en ce qui me concerne pour l’instant étant donné que je ne l’ai pas encore implanté) un plugin extrêmement utile.

    Par ailleurs, soit je suis stupide soit il y a quelque chose qui cloche. Quand je lis « Deux pages de démonstrations sont disponibles », je m’attends à ce que les liens :

       http://monsite/?page=demo_paypal : un paiement simple
        http://monsite/?page=demo_paypal_details : un paiement complexe avec un panier comportant plusieurs articles

    aboutissent à des pages d’exemple mais en fait on tombe sur une grande entreprise qui, visiblement, ne se fait pas payer en paypal et n’en a rien à battre.

    Si ces pages de démonstration sont disponibles, où peut-on les trouver ? Si elles ne le sont pas, peut-on supprimer cette mention qui est source de confusion ?

    Merci beaucoup.

    • merci de bien lire la doc. rien n’est visible directement
      le plugin permet d’ajouter formulaires paypal soit en modifiant vos squelettes ou alors en ajoutant le raccourci <paypal>.

      pour les adresses, elles sont bonnes, il faut remplacer « monsite » par l’adresse de votre site de développement.

    • Merci quand même.

      Ben j’ai lu justement et ce n’est pas clair, c’est pourquoi je pense qu’une phrase explicite serait bienvenue. D’ailleurs pour moi même le réglage à faire n’est pas claire quant aux effets de l’un ou l’autre choix.
      Pour les adresses exemple il serait judicieux d’être plus précis. Nous ne sommes pas tous des développeurs et on peut penser littéralement, comme moi, que ça ouvre vers une vraie adresse exemple et pas sur un site qui n’a rien à voir (et pourquoi ce site d’ailleurs ?).

    Répondre à ce message

  • Bonjour,
    Si on a calculé les frais de port à partir de notre compte paypal, comment peut on faire pour l’afficher dans le tableau récapitulatif..? je suis allé dans le fichier formulaire/paypal.html j’ai vu un input hidden de shipping mais je ne sais pas comment l’appeler dans le boutton...Merci de votre aide. Les frais de port sont calcul dans mon compte paypal en fonction du prix du cady..MErci

    Répondre à ce message

  • Voilà comment ce retour a fonctionné chez moi :

    1. Sur le site de Paypal, dans Préférences > Notifications instantanées de paiement : j’ai activé l’option de retour IPN. L’url de notification IPN à entrer est l’url de mon site.
    2. Dans la ligne redirect_ok,[(#URL_PAGE{commande_paiement_valide}|url_absolue)], le paramètre |url_absolue semble avoir eu son importance.
    3. Réglage effectué également, sur les indications du fichier infos.txt (je cite) :

      Indiquer que l’IPN envoyé par PAYPAL est UTF-8
      Un titre d’objet avec des caractères utf-8 et hop, le signal de validation IPN reçu par paypal foire (mauvais encodage).
      Pour corriger cela :
      -  Dans le compte marchand Paypal (s’y connecter).
      -  Cliquer l’onglet « Préférences »
      -  Partie « Préférences de ventes » (bas de la 2è colonne)
      -  Cliquer le lien « Encodage de la langue »
      -  Puis cliquer le bouton « Plus d’options »
      -  Définir les 2 sélecteurs sur UTF-8 et valider

      Voilà :-)

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom