La Ferme du web - Les forums

Venez baraguiner avec la communauté !

Vous n'êtes pas identifié.

#101 06/08/2010 14:58:25

EnZ
Membre
Date d'inscription: 04/02/2009
Messages: 5

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

j'ai une réponse à la question 3 de élodidi !

Si Si je vous assure.

ALORS.

Si l'UTILISATEUR qui CLIQUE sur le bouton acheter ira directement sur la page de paiement par carte bleu A CONDITION QU'il ne possède PAS de cookie paypal (un cookie qui dit qu'on possède un compte).
Dans le cas contraire, on aura la page nous permettant de nous connecter et en tout petit de payer par carte bleu.

Pour paypal si on a un compte on préférera se connecter plutôt que de payer par carte bleu, car on aura ajouter à notre compte notre carte bleu. (le lien est donc pas très visible).

Pour nous développeur, qui jouons avec la sandbox, on est obligé d'être connecté pour tester, donc on possède le cookie, donc on arrive JAMAIS sur la page de carte bleu directement. (la loose)

La solution est (j'ai pas très bien compris là) d'heberger sur notre machine un sdk ou jsais pas quoi. et là on pourra tout maitriser puisque on communiquera les informations de paiement via api ^^ (bref solution relou surtout pour les mutualisés)


pour le point 1) de elodidi toujours, pour ma part j'ai opté pour le cryptage des boutons à la volée sur ma machine. Comme ça pas de modification des valeurs du form. Et je conseille a Djo, s'il en a le temps de proposer en tutoriel cette option (rhodez informatique l'à déjà fait mais en mode un peu brutale).

Voilou.

A la ferme avec le bétail on s'y sent bien.

ENJOY.

Hors ligne

 

06/08/2010 14:58:25

Botte De Foin Publicitaire


#102 20/08/2010 10:52:11

beegees
Membre
Date d'inscription: 20/08/2010
Messages: 1

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

Bonjour,

Tout d'abord, un grand merci à l'auteur de ce tuto, c'est en effet le seul tuto qui me permet d'utiliser Paypal sur mon site.

J'ai un souci :

La transaction fonctionne mais l'état est "En cours de vérification".

J'ai activé l'option "Renvoi automatique pour les paiements sur site marchand" dans le compte du vendeur.  Je suis donc redirigé vers la page en question (une page que j'ai créé en php avec le code du tuto) :

Code:

echo "ici";
    // lire le formulaire provenant du système PayPal et ajouter 'cmd'
    $req = 'cmd=_notify-validate';
    
    foreach ($_POST as $key => $value) {
        $value = urlencode(stripslashes($value));
        $req .= "&$key=$value";
    }
    
        // renvoyer au système PayPal pour validation
    $header = "POST /cgi-bin/webscr HTTP/1.0\r\n";
    $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
    $fp = fsockopen ('www.sandbox.paypal.com', 80, $errno, $errstr, 30);
    
    $item_name = $_POST['item_name'];
    $item_number = $_POST['item_number'];
    $payment_status = $_POST['payment_status'];
    $payment_amount = $_POST['mc_gross'];
    $payment_currency = $_POST['mc_currency'];
    $txn_id = $_POST['txn_id'];
    $receiver_email = $_POST['receiver_email'];
    $payer_email = $_POST['payer_email'];
    $id_user = $_POST['custom'];
    
     if (!$fp) {
    echo "grosse erreur une fois";
    } else {
        fputs ($fp, $header . $req);
        while (!feof($fp)) {
            $res = fgets ($fp, 1024);
            if (strcmp ($res, "VERIFIED") == 0) {
                echo 'transaction valide';
            }
            else if (strcmp ($res, "INVALID") == 0) {
                echo 'transaction invalide';               
            }
        }
        fclose ($fp);
    }

et j'obtiens ceci :

ici
Notice: Undefined index: item_name in C:\wamp\www\Congres\paypal_ok.php on line 17

Notice: Undefined index: item_number in C:\wamp\www\Congres\paypal_ok.php on line 18

Notice: Undefined index: payment_status in C:\wamp\www\Congres\paypal_ok.php on line 19

Notice: Undefined index: mc_gross in C:\wamp\www\Congres\paypal_ok.php on line 20

Notice: Undefined index: mc_currency in C:\wamp\www\Congres\paypal_ok.php on line 21

Notice: Undefined index: txn_id in C:\wamp\www\Congres\paypal_ok.php on line 22

Notice: Undefined index: receiver_email in C:\wamp\www\Congres\paypal_ok.php on line 23

Notice: Undefined index: payer_email in C:\wamp\www\Congres\paypal_ok.php on line 24

Notice: Undefined index: custom in C:\wamp\www\Congres\paypal_ok.php on line 25
transaction invalide

Je ne sais donc pas quoi faire pour que la transaction soit terminée.

Je vous remercie d'avance pour votre aide.

beegees

Hors ligne

 

#103 03/09/2010 11:42:00

streetcolor
Membre
Date d'inscription: 03/09/2010
Messages: 1

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

Bonjour,

Un grand merci pour ce tuto, mais un petit problème quand même...

Je ne comprend pas pourquoi paypal ne bloque pas mes transactions quand elles sont modifié à l'aide d'un plugin tel que Firebug... En effet je modifie volontairement le Total dans le input type hidden et paypal laisse gentiment passer la transaction... De plus si le met la page de validation IPN ou si je la supprime le résultat est strictement identique !

L'idée et en faite d'empêcher la modification d'informations dans le formulaire...

Que faire ?

Merci encore pour ce tuto et pour votre aide

Streetcolor

Hors ligne

 

#104 08/09/2010 08:57:12

DJo
Administrateur
Date d'inscription: 31/07/2008
Messages: 550
Site web

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

Les utilisateurs peuvent très bien modifier les valeurs pour ne payer que 3€ au lieu de 30€ par exemple... Sauf que vous connaissez la vraie valeur de vos produits, Paypal va vous retourner la valeur entrée donc 3€ et de votre côté vous ne validerez pas la commande car le montant est incorrect, donc la personne ayant voulu hacker votre système se retrouve avec 3€ en moins et sa commande non validée...

Hors ligne

 

#105 09/09/2010 13:06:34

zolectronic
Membre
Date d'inscription: 09/09/2010
Messages: 1

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

Bonjour, je cherche une solution pour ne pas demander aux payeur son nom, son adresse, ville, ..., je veux seulement qu'il puisse payer et c'est tout ?

Merci d'avance

Hors ligne

 

#106 11/09/2010 21:30:53

Zalian
Membre
Date d'inscription: 11/09/2010
Messages: 1

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

Bonjour,

Voilà plusieurs heures que je tout et n'importe quoi pour faire marché le script proposé dans ce tutorial. Tout d'abord, il y a plusieurs choses que je ne saisis pas :
// vérifier que payment_amount et payment_currency sont corrects  -> C'est à dire? Que dois-je taper comme condition?
Normalement, si j'ai bien compris, les variables IPN sont transmis en GET sur la page notify-url. Je l'ai bien activé, et pourtant, une fois retourné sur la page de l'input return ( une fois le paiement terminé ), je vois l'adresse avec plein de variable ( qui je pense concerne celle de l'IPN ). Est-ce normal? Toutes ces variables ne devrait pas se retrouver sur la page "invisible" de notify_url ?

Autre chose, si un problème vient de mon script, n'y as-t-il aucun moyen de le voir étant donné que le page de notify_url s'exécute toute seule dans son coin ? Parce que je ne peux pas savoir si c'est ma requête qui coince ou autre.. par exemple..

Merci de votre aide.

PS : J'ai bien regardé dans les historiques sur le site de paypal, et les données IPN sont bien envoyés.

EDIT : Je me suis renseigné sur d'autre tutorial, j'ai supprimé toute cette partie de vérification... :

Code:

           /*            // vérifier que payment_status a la valeur Completed
                if ( $payment_status == "Completed") {
                    // vérifier que txn_id n'a pas été précédemment traité: Créez une fonction qui va interroger votre base de données
                    if (VerifIXNID($txn_id) == 0) {
                        // vérifier que receiver_email est votre adresse email PayPal principale
                        if ( "adresseSeller" == $receiver_email) {
                            // vérifier que payment_amount et payment_currency sont corrects
                            // traiter le paiement

Et ça marche :p

Alors je voudrais savoir si cette partie est-elle indispensable? Représente-t-elle un risque de sécurité si je n'y adhère pas?

Merci !

Dernière modification par Zalian (11/09/2010 21:42:42)

Hors ligne

 

#107 18/09/2010 18:30:38

cabez
Membre
Date d'inscription: 18/09/2010
Messages: 1

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

bonjour a tous,
je suis nouveau ici,après de nombreuses recherches sur ce sujet c'est surement le meillieur forum que je trouve ici .
voila mon soucis qui a été évoqué ici,j'ai créer un site dans lequel je veut vendre un produit unique.ce n'est pas un site marchant,j'ai créer ce site avec un cms (joomla) et j'ai pu installer un module paypal donc pas de difficultées.
mais la ou ca se corse et je vous assure que tous le monde cherche!!!!!!
donc j'obtiens ca https://www.x.com/servlet/JiveServlet/showImage/2-182553-1716/img1.bmp
et c'est vrai que quand on enlève le cookie on obtient une autre page mais sans les payants par carte bleue.
et ce que je voudrais avoir c'est ca https://www.x.com/servlet/JiveServlet/showImage/2-182553-1718/img2.bmp
j'ai créer un compte prémium chez paypal.
mon hébergeur 1and1
mon site éventuellement antoine
bien sur je suis preneur pour une solution en HTML sans le module que j'avais installé.
il faut savoir que je ne comprend rien aux API paypal et a la programmation en général.
merci a tous pour votre aide

Hors ligne

 

#108 06/10/2010 11:10:38

YTREZ4
Membre
Date d'inscription: 05/10/2010
Messages: 1

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

Bonjour à tous ! et merci au développeur pour de ce magnifique tutoriel........

Cependant, n'ayant que très peu d' expérience en Php, tout est clair sur la première partie . Hélas je ne comprends pas la 2eme partie. Où doit -on rajouter cette partie du code (ou comment le renter) concernant la notify_url.

J'espère être clair ...et je vous remercie d'avance pour la réponse.........

Hors ligne

 

#109 21/10/2010 17:39:56

coolvic94
Membre
Date d'inscription: 21/10/2010
Messages: 1

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

@ZALIAN: biensur qu'il faut mettre ca sinon niveau securite ca descends... par exemple, la transaction peut ne pas etre terminee et que le paiement arrive quand meme (utilite de status completed) ou alors il n'a qu'a recharger plusieurs fois la page et il "achete" 100 fois l'objet en ne le payant qu'une fois.
donc: a ne surtout pas enlever (CQFD)

Hors ligne

 

#110 29/10/2010 14:22:18

aeyrin
Membre
Date d'inscription: 29/10/2010
Messages: 1

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

bjr

comme tout le monde, merci pour ce tuto qui m'a deja bien aidé mais j'ai egalement un probleme:
avec sandbox mes comptes acheteur et vendeur sont bien créés, à chaque transaction les debits/credits sont effectués et donc noté "terminé". mais au niveau du script de l'ipn:


Code:

if (!$fp) 
{     
    echo "ERREUR!"; // ERREUR HTTP     
} 
else 
{       
    fputs ($fp, $header . $req);    
    while (!feof($fp)) 
    {
        echo $res = fgets ($fp, 1024);          
        if (strcmp ($res, "VERIFIED") == 0) 
        {         ... }

je rentre dans le else et quand je fais un echo de $res il me renvoie "HTTP/1.1 200 OK". Etant à + de 1024 il m'envoie donc "INVALID". Pourquoi il me renvoie 1200, svp?

merci

Dernière modification par aeyrin (29/10/2010 14:22:50)

Hors ligne

 

#111 29/10/2010 19:01:05

Fabien
Membre
Date d'inscription: 29/10/2010
Messages: 1

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

Bonjour,

Je dois mettre en place l'API adaptive payment de paypal.

Quelqu'un l'a déjà mit en place ?

Merci,
Fabien

Hors ligne

 

#112 02/11/2010 10:49:27

sdesrousseaux
Membre
Date d'inscription: 02/11/2010
Messages: 2

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

bonjour

merci beaucoup pour ce super tuto tres clair et qui permet de mettre assez facilement en place un paiement par paypal

par contre, je rencontre un soucis avec les NPI: j'ai des erreurs 404:
URL de notification : http://souscription.XXX.org/paypal/vali … aiment.php
Code de réponse HTTP: 404

meme erreur du coté de mon serveur apache:
[Tue Nov 02 10:07:56 2010] [error] [client 66.211.170.66] script '/srv/applications/souscription/paypal/validation-paiment.php' not found or unable to stat

sauf que mon fichier est bien sur le serveur... j'ai mis un chmod 777 en me disant que le pb venait peut etre de là, mais à priori non... j'ai plus l'impression que c'est un soucis serveur que paypal mais en meme temps j'ai mis un autre fichier dans le meme repertoire et pas de soucis d'acces!

qq'un a deja rencontré ce soucis, une solution?

merci d'avance
stephane

Hors ligne

 

#113 02/11/2010 11:02:21

sdesrousseaux
Membre
Date d'inscription: 02/11/2010
Messages: 2

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

re-bonjour
ca aide d'ecrire les choses et de se rendre compte de ses erreurs....

j'avais mis ceci: validation-paiment.php au lieu de validation-paiEment.php

quand on est dedans, on ne voit pas ces petites choses smile
c'est corrigé, je vais voir ce que ca donne desormais!

dsl pour ces 2 messages sur le forum



sdesrousseaux a écrit:

bonjour

merci beaucoup pour ce super tuto tres clair et qui permet de mettre assez facilement en place un paiement par paypal

par contre, je rencontre un soucis avec les NPI: j'ai des erreurs 404:
URL de notification : http://souscription.XXX.org/paypal/vali … aiment.php
Code de réponse HTTP: 404

meme erreur du coté de mon serveur apache:
[Tue Nov 02 10:07:56 2010] [error] [client 66.211.170.66] script '/srv/applications/souscription/paypal/validation-paiment.php' not found or unable to stat

sauf que mon fichier est bien sur le serveur... j'ai mis un chmod 777 en me disant que le pb venait peut etre de là, mais à priori non... j'ai plus l'impression que c'est un soucis serveur que paypal mais en meme temps j'ai mis un autre fichier dans le meme repertoire et pas de soucis d'acces!

qq'un a deja rencontré ce soucis, une solution?

merci d'avance
stephane

Hors ligne

 

#114 22/11/2010 13:37:49

martinH
Membre
Date d'inscription: 22/11/2010
Messages: 2

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

Bonjour

Sur la page de verification IPN

au debut on a se code

Code:

// renvoyer au système PayPal pour validation
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('www.sandbox.paypal.com', 80, $errno, $errstr, 30);

Est-ce normal que $errno et $errstr ne soit pas définis ?
A quoi conresponde ces variable ?

Merci

Hors ligne

 

#115 23/11/2010 07:59:02

DJo
Administrateur
Date d'inscription: 31/07/2008
Messages: 550
Site web

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

$errno, $errstr sont des variables passées en références qui seront remplies si il y'a des erreurs lors de la connexion.

Hors ligne

 

#116 23/11/2010 13:41:09

martinH
Membre
Date d'inscription: 22/11/2010
Messages: 2

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

Merci

Hors ligne

 

#117 23/11/2010 15:01:51

artotal
Membre
Date d'inscription: 23/11/2010
Messages: 1

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

Bonjour,
j'ai mis en place le tuto, tout semble fonctionner, par contre j'ai toujours le message :
en cour...
Ne voyant pas pourquoi, je vous écrit.
Merci

Hors ligne

 

#118 28/11/2010 12:10:54

servietsky777
Membre
Date d'inscription: 28/11/2010
Messages: 1

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

Hello,
J'ai suivi le tuto, j'ai créer les comptes vendeur, et acheteur. J'ai installé le bouton acheter, j'ai aussi fait les tests et ça fonctionne bien, le vendeur reçoit les achat et peut les valider...
Mon problème vient après, je ne sais pas ce que c'est que les données ipn, à quoi ça sert dans quelle language c'est et ce que je suis censé faire avec, juste les copié dans la page ou il y a le bouton acheter?

Et avez-vous un tutoriel simple pour ajouter un panier paypal?


Merci beaucoup d'avance, je commence a vraiment désespérer.
Bonne journée

Hors ligne

 

#119 03/12/2010 21:26:54

stc
Membre
Lieu: Annecy
Date d'inscription: 20/06/2009
Messages: 21
Site web

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

Salut je me suis inspiré de ce tuto pour faire un traitement de l'ipn via une servlet (servlets.PP (comme PayPal ;-)) en J2EE, j'utilise aussi les sockets et j'ai testé (en mode sansd box) et ça fonctionne :
Voi ci ma servlet servlets.PP.java :

Code:

package servlets;

import classes.Datas;
import classes.Mail;
import classes.Objet;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.URLEncoder;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Enumeration;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author pj
 */
public class PP extends HttpServlet {
   
    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            out.print("bad");
            /* TODO output your page here
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet PP</title>");  
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet PP at " + request.getContextPath () + "</h1>");
            out.println("</body>");
            out.println("</html>");
            */
        } finally { 
            out.close();
        }
    } 

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        Enumeration parameters=request.getParameterNames();
        String req=URLEncoder.encode("cmd","UTF-8")+"="+URLEncoder.encode("_notify-validate","UTF-8");
        while(parameters.hasMoreElements()) {
            String key=parameters.nextElement().toString();
            String value=request.getParameter(key);
            req+="&"+URLEncoder.encode(key,"UTF-8")+"="+URLEncoder.encode(value,"UTF-8");
        }
        String header = "POST /cgi-bin/webscr HTTP/1.0\r\n";
        header += "Content-Type: application/x-www-form-urlencoded\r\n";
        header += "Content-Length: " + req.length()+ "\r\n\r\n";
        InetAddress serveur = InetAddress.getByName("www.sandbox.paypal.com");
        Socket sock = new Socket(serveur, 80);
        String itemName, itemNumber, paymentStatus = null, paymentAmount, paymentCurrency, txnId = null, receiverEmail, payerEmail, idUser;
        if(request.getParameter("item_name")!=null)
            itemName = request.getParameter("item_name");
        if(request.getParameter("item_number")!=null)
            itemNumber=request.getParameter("item_number");
        if(request.getParameter("payment_status")!=null)
            paymentStatus=request.getParameter("payment_status");
        if(request.getParameter("mc_gross")!=null)
            paymentAmount=request.getParameter("mc_gross");
        if(request.getParameter("mc_currency")!=null)
            paymentCurrency=request.getParameter("mc_currency");
        if(request.getParameter("txn_id")!=null)
            txnId=request.getParameter("txn_id");
        if(request.getParameter("receiver_email")!=null)
            receiverEmail=request.getParameter("receiver_email");
        if(request.getParameter("payer_email")!=null)
            payerEmail=request.getParameter("payer_email");
        if(request.getParameter("custom")!=null)
            idUser=request.getParameter("custom");
        if(sock==null) {
            //Probleme de connexion
        } else {
            BufferedReader in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
            PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(sock.getOutputStream())), true);
            out.println(header+req);
            String reponse="", ligne="";
            while((ligne=in.readLine())!=null)
                reponse+=ligne;
            if(reponse.indexOf("VERIFIED")!=-1) {
                //transaction valide
                if(paymentStatus.equals("Completed")) {
                   //status Copleted
                   if(this.verifTxnId(txnId)==true) {
                       //txn_id non encore traité
                  } else {
                    //txn_id deja traité
                    }
                }
            } else if(reponse.indexOf("INVALID")!=-1) {
                //transaction invalide
            } else {
              //Si on ne trouve pas INVALID ou VERIFIED (normalement impossible)
             }
            out.close();
            in.close();
        }
    }
//fonction pour tester txn_id (vous pouvez utiliser votre propre fonction)
    private boolean verifTxnId(String txnID) {
        boolean flag=false;
        try {
            Objet.getConnection();
            String query="SELECT COUNT(id) AS nbTxnId FROM table_txn_id WHERE txn_id=? LIMIT 0,1";
            PreparedStatement prepare=Objet.getConn().prepareStatement(query);
            prepare.setString(1, txnID);
            ResultSet result=prepare.executeQuery();
            result.next();
            int nbTxnId=result.getInt("nbTxnId");
            if(nbTxnId==0)
                flag=true;
            else
                flag=false;
            result.close();
            prepare.close();
            Objet.closeConnection();
        } catch (NamingException ex) {
            Logger.getLogger(PP.class.getName()).log(Level.SEVERE, null, ex);
            flag=false;
        } catch (SQLException ex) {
            Logger.getLogger(PP.class.getName()).log(Level.SEVERE, null, ex);
            flag=false;
        }
        return flag;
    }
    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

Voila j'espere que ça aidera ceux qui veulent traiter l'IPN en J2EE
Tchao

Dernière modification par stc (04/12/2010 00:23:09)

Hors ligne

 

#120 06/12/2010 15:42:17

Nanolenain
Membre
Date d'inscription: 06/12/2010
Messages: 3

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

Bonjour,
Tout d'abord, merci pour ce tutoriel qui m'a vraiment aidé.
Mais, j'ai un problème pour la deuxième partie : le $fp ne me retourne pas de "VERIFIED", ni de "INVALID". Tout ce a quoi j'ai droit, c'est :
"
HTTP/1.1 200 OK
Date: Thu, 07 Dec 2010 11:30:58 GMT
Server: Apache
Set-Cookie: pleinDeChiffresEtDeLettres; domain=.paypal.com; path=/
Set-Cookie: cookie_check=yes; expires=Mon, 02-Dec-2020 11:30:59 GMT; domain=.paypal.com; path=/
Set-Cookie: navcmd=_notify-validate; domain=.paypal.com; path=/
Set-Cookie: navlns=0.0; expires=Sun, 01-Dec-2030 11:30:59 GMT; domain=.paypal.com; path=/
Set-Cookie: Apache=10.191.196.11.213971291635058999; path=/; expires=Sat, 22-Oct-04 05:02:42 GMT
Connection: close
Content-Type: text/html; charset=UTF-8
"
Ce problème viendrait-il du fait que j'utilise la sandbox ? Y a t-il une solution ou ne pourrais-je tester qu'avec le veritable compte ?
Merci d'avance !

NB : j'ai aussi posté ca en commentaire, je n'avais pas vu qu'il fallait venir ici... Désolé !

Hors ligne

 

#121 06/12/2010 20:10:59

stc
Membre
Lieu: Annecy
Date d'inscription: 20/06/2009
Messages: 21
Site web

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

@nanolenain: hmm c'est bizarre, normalement tu dois bien avoir VERIFIED ou INVALID  même en sand box, peut être qu'en voyant ton code ...

Hors ligne

 

#122 07/12/2010 09:49:10

Nanolenain
Membre
Date d'inscription: 06/12/2010
Messages: 3

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

Bien sur, mais j'utilise exactement le même code que dans le tuto...
Le voila quand même :

Code:

        // lire le formulaire provenant du système PayPal et ajouter 'cmd'
    $req = 'cmd=_notify-validate';

    foreach ($_POST as $key => $value)
    {
        $value = urlencode(stripslashes($value));
        $req .= "&$key=$value";
    }

    // renvoyer au système PayPal pour validation
    $header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
    $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
    $fp = fsockopen ('www.sandbox.paypal.com', 80, $errno, $errstr, 30);

    $item_name = $_POST['item_name'];
    $item_number = $_POST['item_number'];
    $payment_status = $_POST['payment_status'];
    $payment_amount = $_POST['mc_gross'];
    $payment_currency = $_POST['mc_currency'];
    $txn_id = $_POST['txn_id'];
    $receiver_email = $_POST['receiver_email'];
    $payer_email = $_POST['payer_email'];
    $id_user = $_POST['custom'];

    if (!$fp)
    {
        mail('[email protected]', 'PAYPAL', "NO FP", 'From: [email protected]'."\r\n");
        // ERREUR HTTP
    }
    else
    {
        mail('[email protected]', 'PAYPAL', "FP OK", 'From: [email protected]'."\r\n");
            fputs ($fp, $header . $req);
            while (!feof($fp))
        {
            // Je m'envoie ce que retourne le serveur
            mail('[email protected]', 'PAYPAL-check', '"'.$res.'"', 'From: [email protected]'."\r\n");
            $res = fgets ($fp, 1024);
            if (strcmp ($res, "VERIFIED") == 0)
            {
                        // transaction valide
                // vérifier que payment_status a la valeur Completed
                if ( $payment_status == "Completed")
                {
                    // vérifier que txn_id n'a pas été précédemment traité: Créez une fonction qui va interroger votre base de données
                    if (VerifIXNID($txn_id) == 0)
                    {
                        // vérifier que receiver_email est votre adresse email PayPal principale
                        if ( "votreEmailSeller" == $receiver_email)
                        {
                            // vérifier que payment_amount et payment_currency sont corrects
                            // traiter le paiement
                mail('[email protected]', 'PAYPAL', "VALIDEE", 'From: [email protected]'."\r\n");
                         }
                        else
                        {
                            // Mauvaise adresse
                            mail('[email protected]', 'PAYPAL', "paiement sur mauvaise adresse", 'From: [email protected]'."\r\n");
                        }
                    }
                    else
                    {
                        mail('[email protected]', 'PAYPAL', "ALREADY DONE", 'From: [email protected]'."\r\n");
                        //already done => fraude ?
                    }
                }
                else
                {
                    //Problème au paiement -> non complété
                    mail('[email protected]', 'PAYPAL', "PROBLEME LORS DU PAIEMENT, 'From: [email protected]'."\r\n");
                }

            }
            else if (strcmp ($res, "INVALID") == 0)
            {
                // Transaction invalide
                mail('[email protected]', 'PAYPAL', "TRANSACTION INVALIDE", 'From: [email protected]'."\r\n");
            }
            else
                mail('[email protected]', 'PAYPAL', "BIZARRE", 'From: [email protected]'."\r\n");
        }
        fclose ($fp);
    }

J'utilise les mails pour savoir ce qui se passe quand la page est appelée. J'avais la flemme d'écrire dans un fichier.
Du coup, je reçois par mail ce que j'ai poste plus haut et j'ai pu vérifier que la seule condition dans laquelle ca rentre, c'est le else finale que j'ai ajouté (mail("BIZARRE")).

Par ailleurs, merci d'avoir répondu !
En passant, c'est cool la coloration syntaxique. C'est pas sur tout les forums qu'on peut l'avoir.

Dernière modification par Nanolenain (07/12/2010 18:44:46)

Hors ligne

 

#123 07/12/2010 20:04:35

stc
Membre
Lieu: Annecy
Date d'inscription: 20/06/2009
Messages: 21
Site web

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

essaie de mettre $header = ... plutot que $header.= ....  a la premiere ligne d'affectation du $header

Hors ligne

 

#124 08/12/2010 10:03:15

Nanolenain
Membre
Date d'inscription: 06/12/2010
Messages: 3

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

Ooooh ! Magnifique ! J'ai toujours la description du serveur, mais maintenant, elle est suivie du mot tant attendu : "VERIFIED" ! Merci beaucoup stc !

Hors ligne

 

#125 08/12/2010 20:36:23

stc
Membre
Lieu: Annecy
Date d'inscription: 20/06/2009
Messages: 21
Site web

Re: Tutorial: Intégrer un système de paiement PayPal à son site PHP

C'est normal que tu ait toute la description comme tu dis, c'est pour ça que le code teste les ligne les unes après les autres

Hors ligne

 

Pied de page des forums

Powered by FluxBB
© Copyright 2008-2009 - LaFermeduWeb.net