La Ferme du web - Les forums

Venez baraguiner avec la communauté !

Vous n'êtes pas identifié.

#76 13/03/2010 23:38:47

benthebest
Membre
Date d'inscription: 26/05/2009
Messages: 6

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

Bonjour et merci encore pour ce très bon tuto

Je rencontre un problème: en effet, je vois bien que je suis crédité lors de mes tests mais le problème est que le script n'appel jamais l'url dans notify_url... Je précise que je travail en local et que l'url que j'ai mise est du type :
http://127.0.0.1/monsite/inc/notifypayment.php
(je le sais car au début du script je m'envoi un mail avec la fonction mail(), mais je ne reçois jamais rien...)

Est-ce lié à cela?

Merci de m'aider car je ne peux pas mettre à jour ma base ...

Hors ligne

 

13/03/2010 23:38:47

Botte De Foin Publicitaire


#77 12/04/2010 16:40:10

ptuminhtri
Membre
Date d'inscription: 12/04/2010
Messages: 3

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

quelqu'un peut-il m'aider?
je teste les if, et le statut reste a INVALID  et les variables post ne s'affichent pas
voici le forumaire html:

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
  <b>Pc portable Asus</b> <br>
  <input type='text' value="5" name="amount" />
  euros
  <input name="currency_code" type="hidden" value="EUR" />

<input name="shipping" type="hidden" value="0.00" />

<input name="tax" type="hidden" value="0.00" />

<input name="return" type="hidden" value="http://price-no-value.com/validationPaiement.php" />

<input name="cancel_return" type="hidden" value="http://price-no-value.com/paiementAnnule.php" />

<input name="notify_url" type="hidden" value="http://price-no-value.com/validationPaiement.php" />

<input name="cmd" type="hidden" value="_xclick" />

<input name="business" type="hidden" value="[email protected]" />

<input name="item_name" type="hidden" value="pc portable" />

<input name="no_note" type="hidden" value="1" />

<input name="lc" type="hidden" value="FR" />

<input name="bn" type="hidden" value="PP-BuyNowBF" />

<input name="custom" type="hidden" value="ID_ACHETEUR" />
<br>
<input alt="Effectuez vos paiements via PayPal : une solution rapide, gratuite et sécurisée" name="submit" src="https://www.paypal.com/fr_FR/FR/i/btn/btn_buynow_LG.gif" type="image" /><img src="https://www.paypal.com/fr_FR/i/scr/pixel.gif" border="0" alt="" width="1" height="1" />

</form>

et voici la page de recupération de l'IPN nommé validationPaiement.php

<?php
$req = 'cmd=_notify-validate';

foreach ($_POST as $key => $value) {

$value = urlencode(stripslashes($value));

$req .= "&$key=$value";

}

$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'];
echo $txn_id."<br>";
$receiver_email = $_POST['receiver_email'];
echo $receiver_email."<br>";

$payer_email = $_POST['payer_email'];
echo $payer_email."<br>";
$id_user = $_POST['custom'];
echo $id_user."<br>";
if (!$fp) {

// ERREUR HTTP

} else {

fputs ($fp, $header . $req);

while (!feof($fp)) {

$res = fgets ($fp, 1024);

if (strcmp ($res, "VERIFIED") == 0) {

// transaction valide
echo "VERIFIED<br>";

}

else if (strcmp ($res, "INVALID") == 0) {

// Transaction invalide 
echo "INVALID<br>";             

}

}

fclose ($fp);

}

// transaction valide

// vérifier que payment_status a la valeur Completed

echo $payment_status;
echo $_POST['payment_status'];

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

echo $payment_status;
echo $payment_status."ok<br>";
}
else{

echo $payment_status;

}
?>

-------------------------------------

ça affiche INVALID et non pas les variables $_POST

Hors ligne

 

#78 13/04/2010 13:24:59

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

Euh, tu le lance comment le script ? Parce qu'en théorie, les echo, tu devrais pas les voir !
C'est l'IPN qui appelle ton script, pas toi manuellement, on est d'accord ?

Hors ligne

 

#79 14/04/2010 21:48:24

ptuminhtri
Membre
Date d'inscription: 12/04/2010
Messages: 3

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

Dans mon compte paypal business,j'active l'IPN avec comme page validationPaiement.php

en fait je peux faire des echo car cette meme page validationPaiement.php je l'ai mise comme page de retour pour
le champ formulaire return

voici mon formulaire:

<input name="return" type="hidden" value="http://price-no-value.com/validationPaiement.php" />
<input name="notify_url" type="hidden" value="http://price-no-value.com/validationPaiement.php" />

j'ai également mis la page validationPaiement.php pour le champ return,du formulaire,pour visuellement voir les echo,est ce que mon probleme vient de là?

peut être qu'on n'a pas le droit de mettre la même page validationPaiement.php à la fois pour le champ return et à la fois pour le champ notify_url, j'ai fait ça juste à titre de test pour voir les echo

j'avoue que c'est le brouillard dans ma tête

Hors ligne

 

#80 14/04/2010 22:38:54

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

Non effectivement je pense que tu n'as pas tout compris le process.

La notify_url est un script qui est indépendant, non accessible par les utilisateurs, uniquement par paypal.
Ce script sera appelé après chaque paiement ou tentative de paiement. Il te permettra d'être sûr que Mr X a bien payé la bonne valeur (et n'a pas trafiqué ton formulaire en éditant le HTML), la bonne monnaie etc.

Le return c'est l'URL qui va dire à l'utilisateur qu'il a bien effectué le processus, et que son paiement va bientôt être pris en compte (en théorie la validation est quasi instantanée mais on ne sait jamais).

En gros, dans le script appelé par l'IPN, tu ne dois pas faire de echo, car personne ne le verra à part le bot de paypal.

Est-ce que c'est plus clair ? Je te conseille de revoir les schémas que j'ai fait pour expliquer le processus.

Bon courage

Hors ligne

 

#81 17/04/2010 14:48:07

ptuminhtri
Membre
Date d'inscription: 12/04/2010
Messages: 3

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

ça y est ça marche, ma page retournée par l'ipn fait bien ce que je veux,
par contre je ne comprends pas bien le champ du formulaire html ci dessous:
<input name="custom" type="hidden" value="ID_ACHETEUR" />
A quoi correspond cet ID acheteur quand on crée un compte perso paypal

Autre question, quand on est en production, est-il nécessaire que les acheteurs aient un compte paypal?
j'espère que non

Hors ligne

 

#82 26/04/2010 18:06:40

benthebest
Membre
Date d'inscription: 26/05/2009
Messages: 6

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

Bonjour à tous

Bon je suis désemparé comme vous pouvez le voir, après avoir posté il y a plus d'un mois et après avoir lu les 4 pages de ce topic (donc essayé tous les petits truc suggérés pour que paypal appel mon notify_url) et bien toujours rien!

Je n'arrive pas à faire en sorte que paypal appel mon script.

1) Je me suis mis en hébergement, serveur dédié sur OVH, depuis
2) Mes comptes sandbox acheteur et vendeurs sont vérifiés
3) j'ai bien l'url (public) de notify dans les options IPN
4) Je n'ai pas de bugs dans mon script (j'ai testé)

et malgré tout cela, bien je ne reçois toujours pas le moindre mail, pourtant mis tout en haut du script!!

J'y comprend rien.sad


quelqu'un peut-il m'aider??

Hors ligne

 

#83 27/04/2010 08:51:51

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

Au lieu d'un email, écrit dans un fichier de logs pour voir.

Tu as bien activé l'IPN dans ton compte business sandbox ?

Hors ligne

 

#84 27/04/2010 13:06:13

benthebest
Membre
Date d'inscription: 26/05/2009
Messages: 6

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

Merci de ta réponse

Hier je me suis encore cassé la tête et je crois avoir compris que le script qui doit être appelé n'aime pas les variables $_SESSION, je suis pas encore sur mais il se pourrait finalement que ça vienne de la !!

Hors ligne

 

#85 28/04/2010 11:43:52

benthebest
Membre
Date d'inscription: 26/05/2009
Messages: 6

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

Bon j'ai repris mon script pas à pas en supprimant les appels à la variable $_SESSION et la je vois qu'il se fait appelé...

C'est un bon point!

Le problème c'est que maintenant, il me renvoi à chaque fois IPN INVALID !

Quelqu'un a t-il une idée??

C'est vraiment bizarre parce qu'hier avec le même script, ça marchait correctement!

Ce serai pas du à mon hébergeur OVH ??

Dernière modification par benthebest (28/04/2010 12:06:41)

Hors ligne

 

#86 28/04/2010 21:44:57

benthebest
Membre
Date d'inscription: 26/05/2009
Messages: 6

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

Bon désolé ,c'était de ma faute hmm, j'avais bloquer l'accès par htaccess... lol

Sinon j'ai une autre question... J'essaye d'afficher mon logo en haut de la page de paiment paypal grace ç image_url mais ça ne marche pas!! J'ai essayé aussi avec cpp_header_image c'est pareil...

Quelqu'un a une idée?

Hors ligne

 

#87 01/05/2010 18:02:18

Alak
Membre
Date d'inscription: 01/05/2010
Messages: 1

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

Bonjour,

J'ai essayé d'appliquer le tutorial, mais j'ai un problème au niveau de L'IPN.
J'ai fait un pseudo système de log pour voir d'ou venais le problème mais la je sèche :

mon fichier validationPayement.php :

Code:

<?php  
    function VerifIXNID($txn_id){
                        $cn = new PDO('mysql:host=localhost;dbname=***','***','***');
                        $nbreponse = $cn->query('SELECT COUNT(*) FROM payement WHERE txn_id=\''.$txn_id.'\'')->fetchColumn();
                        if($nbreponse > 0 ){
                            return 1;
                        }else{
                            return 0;
                        }
                    }
    
    $fichier_log = fopen('log.txt', 'w+');
    $log = fgets($fichier_log);
    $log .="(".date('Y-m-d')." ".date('H:i') .") - Le script est executé.
";
    fputs($fichier_log, $log);
    $log = fgets($fichier_log);
    // 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) {
    
    $log .="(".date('Y-m-d')." ".date('H:i') .") - $fp n'existe pas.
";
    fputs($fichier_log, $log);
    $log = fgets($fichier_log);
    // ERREUR HTTP
    } else {
    
        $log .="(".date('Y-m-d')." ".date('H:i') .") - $fp existe.
";
        fputs($fichier_log, $log);
        $log = fgets($fichier_log);
        
        fputs ($fp, $header . $req);
        while (!feof($fp)) {
        
            $log .="(".date('Y-m-d')." ".date('H:i') .") - On rentre dans le while.
";
            fputs($fichier_log, $log);
            $log = fgets($fichier_log);
            $res = fgets ($fp, 1024);
            if (strcmp ($res, "VERIFIED") == 0) {
            
                $log .="(".date('Y-m-d')." ".date('H:i') .") - Le payement est VERIFIED.
"; 
                fputs($fichier_log, $log);
                $log = fgets($fichier_log);
                // transaction valide
                // vérifier que payment_status a la valeur Completed
                if ( $payment_status == "Completed") {
                    $log .="(".date('Y-m-d')." ".date('H:i') .") - Le payement est Completed. 
"; 
                    fputs($fichier_log, $log);
                    $log = fgets($fichier_log);
                    // 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) {
                        
                        $log .="(".date('Y-m-d')." ".date('H:i') .") - Le $txn_id est unique.
"; 
                        fputs($fichier_log, $log);
                        $log = fgets($fichier_log);
                        
                        // vérifier que receiver_email est votre adresse email PayPal principale
                        if ( "[email protected]" == $receiver_email) {
                            
                            $log .="(".date('Y-m-d')." ".date('H:i') .") - Le mail vendeur est vérifié.
"; 
                            fputs($fichier_log, $log);
                            $log = fgets($fichier_log); 
                            // connection à la bdd
                            $cn = new PDO('mysql:host=localhost;dbname=kalhan','root','');
                            
                            // vérifier que payment_amount et payment_currency sont corrects
                            $id_user2 = explode('u', $id_user);
                            foreach($id_user2 as $user);
                            {
                                $nbuser++;
                            }
                            
                            $totale = 15.00 * $nbuser;
                            if($total == $payment_amount && $payment_currency == "EUR" ){
                                $log .="(".date('Y-m-d')." ".date('H:i') .") - Le montant et la devise sont vérifié.
"; 
                                fputs($fichier_log, $log);
                                $log = fgets($fichier_log);
                                $cn = new PDO('mysql:host=localhost;dbname=***','***','***');
                                $req = $cn->prepare('INSERT INTO payement(id_user, montant, nombre_joueur, id_joueur, date_payement, item_name, item_number, payment_status, payment_currency, receiver_email, payer_email, txn_id) VALUES(:id_user, :montant, :nombre_joueur, :id_joueur, :date_payement, :item_name, :item_number, :payment_status, :payment_currency, :receiver_email, :payer_email, :txn_id)');
                                $req->execute(array(
                                    'id_user' => $id_user2[0],
                                    'montant' => $payment_amount,
                                    'nombre_joueur' => $nbuser,
                                    'id_joueur' => $id_user,
                                    'date_payement' => date('Y-m-d')." à ".date('H:i'),
                                    'item_name' => $item_name,
                                    'item_number' => $item_number,
                                    'payment_status' => $payment_status,
                                    'payment_currency' => $payment_currency,
                                    'receiver_email' => $receiver_email,
                                    'payer_email' => $payer_email,
                                    'txn_id' => $txn_id
                                    ));
                                foreach($id_user as $user);
                                {
                                    $req = $cn->prepare('UPDATE users SET payed = :payed WHERE id = :id');
                                    $req->execute(array(
                                    'payed' => 1,
                                    'id' => $user
                                    ));
                                }
                            }
                            
                        }else{
                            // Mauvaise adresse email paypal
                            $log .="(".date('Y-m-d')." ".date('H:i') .") - L'email vendeur n'est pas correct.
";
                            fputs($fichier_log, $log);
                            $log = fgets($fichier_log); 
                        }
                    }else{
                        $log .="(".date('Y-m-d')." ".date('H:i') .") - Le $txn_id n'est pas unique.
";
                        fputs($fichier_log, $log);
                        $log = fgets($fichier_log);
                    }
                }else{
                    // Statut de paiement: Echec
                    $log .="(".date('Y-m-d')." ".date('H:i') .") - Le payement n'est pas Completed.
";
                    fputs($fichier_log, $log);
                    $log = fgets($fichier_log);
                }
            }elseif (strcmp ($res, "INVALID") == 0) {
                // Transaction invalide
                $log .="(".date('Y-m-d')." ".date('H:i') .") - Le payement est INVALID.
";
                fputs($fichier_log, $log);
                $log = fgets($fichier_log);                
            }
            $log .="(".date('Y-m-d')." ".date('H:i') .") - FIN du while.
";
        }
        fclose ($fp);
    }
     
     fclose ($fichier_log);
?>

mon log.txt :

Code:

(2010-05-01 15:46) - Le script est executé.
(2010-05-01 15:46) - Resource id #4 existe.
(2010-05-01 15:46) - On rentre dans le while.
(2010-05-01 15:46) - FIN du while.
(2010-05-01 15:46) - On rentre dans le while.
(2010-05-01 15:46) - FIN du while.
(2010-05-01 15:46) - On rentre dans le while.
(2010-05-01 15:46) - FIN du while.
(2010-05-01 15:46) - On rentre dans le while.
(2010-05-01 15:46) - FIN du while.
(2010-05-01 15:46) - On rentre dans le while.
(2010-05-01 15:46) - FIN du while.
(2010-05-01 15:46) - On rentre dans le while.
(2010-05-01 15:46) - FIN du while.
(2010-05-01 15:46) - On rentre dans le while.
(2010-05-01 15:46) - FIN du while.
(2010-05-01 15:46) - On rentre dans le while.
(2010-05-01 15:46) - FIN du while.
(2010-05-01 15:46) - On rentre dans le while.
(2010-05-01 15:46) - FIN du while.
(2010-05-01 15:46) - On rentre dans le while.
(2010-05-01 15:46) - FIN du while.
(2010-05-01 15:46) - On rentre dans le while.
(2010-05-01 15:46) - FIN du while.
(2010-05-01 15:46) - On rentre dans le while.
(2010-05-01 15:46) - Le payement est VERIFIED.
(2010-05-01 15:46) - Le payement est Completed.

Donc en gros ça boucle jusqu'a ce que le paiement soit VERIFIED aprés il est Completed et après plus rien le script se stop net.

Une idée?

Merci d'avance

Hors ligne

 

#88 08/05/2010 12:01:41

elodidi
Membre
Date d'inscription: 08/05/2010
Messages: 2

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

Bonjour,

Tout d'abord, un grand merci pour ce tutoriel bien utile qui m'a permis de gagner pas mal de temps...

J'ai tout de même quelques questions smile :

1) comment vérifier les paniers d'achat invalides avec l'IPN ?

C'est étrange mais je ne comprends pas très bien comment se gère le test sur le montant et la nature des achats. Par exemple, quelqu'un pourrait modifier facilement le POST du formulaire de commande pour introduire des prix incorrects, des produits inconnus ou encore modifier le montant total ?

- Y a-t-il une section sur le compte business où il faut rajouter tous les produits et leurs prix à la main ?
- Si la vérification se fait dans l'IPN en interrogeant ma propre base de données "produits" et en effectuant le calcul des montants soumis par POST, je ne comprends pas pourquoi la vérification doit se faire une fois l'appel à paypal effectué (via fsockopen). Ne faudrait-il pas faire la vérification avant ? J'ai en effet l'impression que les paiements seront de toutes façons traités comme vérifiés par paypal si les données bancaires ou le compte paypal de l'acheteur sont corrects... A moins qu'il ne soit pas vraiment possible de vérifier tout cela de manière automatique via Paypal ? La seule possibilité serait donc de me prévenir par email que le panier était incorrect dans le code de l'IPN et donc aller annuler le paiement à la main sur mon compte business (ce qui répondrait alors à ma question) ? ...


2) concernant la gestion de la TVA

J'ai rajouté dans le compte business de test et de mon compte réel les différents taux de tva applicables mais il semble que lorsque je tente une commande, la taxe ne soit pas affichée dans mon panier... et je ne trouve pas d'explications. Pensant que Paypal ne pouvait pas gérer cela seul en interne, j'ai donc même essayé de forcer la taxe en introduisant la variable tax_rate dans mon formulaire ... mais rien ne change.  Avez-vous une idée ?

Ayant plusieurs produits disponibles à la commande, je précise que je passe par un bouton _cart et non _xclick.

De plus, je remarque que les transactions sont quand même validées par l'IPN.

3) comment accéder directement au formulaire de paiement par carte ?

Lorsque je redirige un visiteur sur paypal, on est obligé de cliquer sur "continuer". Y a-t-il moyen de passer cette étape pour arriver directement au formulaire de paiement par carte de crédit ?


Merci d'avance pour votre aide et vos réponses,

Elodidi.

Dernière modification par elodidi (08/05/2010 13:51:48)

Hors ligne

 

#89 08/05/2010 13:25:02

elodidi
Membre
Date d'inscription: 08/05/2010
Messages: 2

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

OK smile

Pour le point (2), c'est déjà résolu. Apparemment, lorsqu'on travaille avec un panier d'achat de plus d'un item, il faut préciser tax_rate_1 ... tax_rate_{nbr_item} pour chaque item du panier... Il fallait le savoir...

Reste le premier et le troisième ...

Merci d'avance pour votre aide !

Hors ligne

 

#90 03/06/2010 21:19:19

rolandgarros
Membre
Date d'inscription: 03/06/2010
Messages: 1

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

Bonsoir à tous,

Je suis confronté à un problème avec l'IPN de paypal.
Je détail : avec la sandbox mon script php récoltant les infos transmissent par paypal fonctionne, je n'arrive pas à obtenir un paiement validé, mais il fonctionne car j'ai créé un fichier de log qui ce met à jour lors de l'appel de celui ci et je m'envoie un mail par la meme occasion que je reçois parfaitement.

Seulement quand je bascule en production plus rien...le fichier de log n'est plus mis à jour, l'e-mail ne part pas, cela prouve donc que paypal ne fais pas transité de requêtes vers mon script.

J'ai pourtant bien activé l'IPN sur mon compte paypal, j'ai vérifier et revérifier le chemin(url) donné à "notify_url" et rien...

Je m'en remet donc à vous tous pour trouver quelqu'un ayant une idée ou des infos à ce sujet.

Je précise quand même que j'ai trouvé des personnes sur certain forum (dont celui de paypal) ayant été confronté au même problème...seulement les réponses données ne mènent à rien ou sont bien trop évasive(paypal entre autre).

cordialement
roland

Dernière modification par rolandgarros (03/06/2010 21:22:20)

Hors ligne

 

#91 07/06/2010 10:48:43

Keroth
Membre
Date d'inscription: 07/06/2010
Messages: 1

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

Bonjour à tous !

Quelqu'un aurait-il la réponse au point 3) du message d'elodidi ?

Je cherche également une solution pour redirigez l'internaute directement sur le formulaire de paiement par carte bleue après qu'il ait cliqué sur le bouton "Acheter" et lui éviter ainsi un clic (en trop...) sur "Continuer" surtout que le lien n'est vraiment mis en valeur...

Merci pour votre aide,

Keroth.

Hors ligne

 

#92 08/06/2010 15:50:21

Shuukei
Membre
Date d'inscription: 08/06/2010
Messages: 4

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

Salut big_smile

Je dois implanter un système de paiement en ligne sur un site et Paypal a été choisi. J'ai donc cherché sur le net des tutos pour expliquer clairement comment mettre en place ce système et j'ai trouvé mon bonheur ici. ^^ Simplement, je rencontre des petits soucis sur la fin du tuto.

Une fois sur la page du paiement, je me connecte avec mon compte fictif d'acheteur, je paie...tout va bien mais le traitement de l'IPN ne semble pas se faire...donc ma question est la suivante : lorsque l'on active les notifications dans le compte vendeur (.biz), vous indiquez qu'il faut spécifier le domaine...mais concrètement l'input notify_url et ce domaine indiqué sont les mêmes ?

EDIT : merci mais finally j'ai réussi et tout marche nikel. ^^ Merci en tout cas ton tuto m'a bien aidé à comprendre le fonctionnement. big_smile

Dernière modification par Shuukei (09/06/2010 11:21:32)

Hors ligne

 

#93 11/06/2010 09:08:23

Shuukei
Membre
Date d'inscription: 08/06/2010
Messages: 4

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

Plus personne pour participer au sujet ? yikes

En fait, tout marchait bien jusqu'à hier matin mais maintenant, j'ai un gros problème. sad

Il semblerait que mes conditions ne soient plus validées, et donc plus aucun traitement n'est effectué. J'ai vérifié mes traitements et il n'y pas d'erreur lorsque je les place hors des conditions.

if(VerifIXNID($txn_id) == 0)
{
    // vérifier que receiver_email est votre adresse email PayPal principale
    if("[email protected]" == $receiver_email)
    {
        mail($mailTo,"Une nouvelle commande à été réglée","bonne adresse",$headerMail);
        // vérifier que payment_amount et payment_currency sont corrects
                               
        if($payment_currency == "EUR")
        {
            mail($mailTo,"Une nouvelle commande à été réglée","bonne monnaie",$headerMail);
            //là je place mes requetes d'insertions dans ma base de données
        }
        else
        {
            //mauvaise monnaie
                       
        }
    }
    else
    {
        // Mauvaise adresse email paypal
    }
}
else
{
    // ID de transaction déjà utilisé
}

Voilà, à partir de la 1ere condition sur ce bout de code (avec la variable $txn_id), plus rien n'est traité. Je ne comprends vraiment pas puisque tout marchait très bien. -_- Quelqu'un a déjà eu ce problème ? Comme pous pouvez le voir, je vérifie aussi en m'envoyant des mails à chaque étape, je reçois un mail après la condition qui vérifie si le statut de paiement est "completed", mais pas la suite...

Hors ligne

 

#94 11/06/2010 09:54:30

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

Quelles sont les URLs que tu appelles pour vérifier la transaction ?

Hors ligne

 

#95 11/06/2010 11:27:15

Shuukei
Membre
Date d'inscription: 08/06/2010
Messages: 4

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

J'utilise ma page traitementPaiement.php pour traiter la notification de paiement...la page est bien appelée vu que je reçois les mails placés dans mon script. Ce que je ne comprends pas, c'est pourquoi la condition qui vérifie le txn_id ne marche plus du jour au lendemain. yikes Bon je me doute qu'il doit y avoir autre chose mais je ne vois pas du tout quoi. =/

Entre temps, j'ai simplement rajouté des champs dans ma table "paiement" pour améliorer le traitement du membre qui a payé (une date d'expiration d'abonnement par exemple), et ajouté une requête qui met à jour ma table User. Le service que je lance doit être prêt très prochainement (la semaine prochaine xD), et là je suis un peu en panique. yikes Jsuis bon pour plancher dessus tout le week end. mad

PS: c'est sympa de ta part d'assurer encore le suivi de ce tuto. ^^

Dernière modification par Shuukei (11/06/2010 11:31:52)

Hors ligne

 

#96 15/07/2010 06:41:14

Nicolas
Membre
Lieu: Pyrénées Atlantique (64)
Date d'inscription: 15/07/2010
Messages: 41
Site web

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

Bonjour éleveurs et éleveuses de poules !

Merci pour ce tuto clair et précis, il m'a permis de comprendre le fonctionnement de l'API Paypal et d'installer mon module de paiement smile

Cependant il y a 2 choses que je ne comprends pas :

- est-ce que chez vous aussi tnx_id n'est pas égal au numéro de la transaction affiché sur le compte vendeur ou sur la confirmation d'achat du client ?

- N'y a t-il pas un risque d'injection de header (ou de code) tel quel dans l'ipn ? Vue que les variables $_POST ne sont pas vraiment traitées à part addslash() et urlencode() ...

Dernière modification par Nicolas (15/07/2010 06:47:53)

Hors ligne

 

#97 17/07/2010 01:46:33

Nicolas
Membre
Lieu: Pyrénées Atlantique (64)
Date d'inscription: 15/07/2010
Messages: 41
Site web

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

Personne ?

Hors ligne

 

#98 18/07/2010 21:37:33

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

Normalement pas de problème de sécurité si tu suis bien toutes les vérifications et que tu fais bien les appels au serveur paypal pour vérifier l'intégrité des données.

Pour le tnx_id, aucune idée.

Hors ligne

 

#99 26/07/2010 14:55:15

spope
Membre
Date d'inscription: 26/07/2010
Messages: 1

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

Je reprend la partie 1 de elodidi, je ne comprend pas bien l'intérêt de l'ipn si l'on modifie le post "amount" par exemple.
Le foreach du début ne vérifie rien et renvoi tel quel les valeur donné par paypal, un post trafiqué n'a donc rien a craindre et la transaction sera effectué. Certes dans la deuxieme partie on test le post et l'on voit une éventuelle erreur mais la les compte paypal on bien été crédité et débité, même avec une grosse erreur genre un panier a 1 euro...
Il me parait bizarre de la part de paypal d'obliger le vendeur à annuler les paiements invalide plutôt que de les bloquer automatiquement.

Ou est ce que j'ai faux?

Merci d'avance

Hors ligne

 

#100 03/08/2010 17:41:31

glorent
Membre
Date d'inscription: 03/08/2010
Messages: 1

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

Bonjours,
Merci pour ce Tuto qui est très clair,
Mais j'aurais une petite question concernant la SANDBOX, voila lorsque mon compte acheteur à un solde nul (0€), je peux encore effectuer des achats, et le solde du compte business augmente aussi.
Je précise que l'état des paiement est bien terminé!

Est ce normal? ou due à une mauvaise configuration de ma part?

Merci d'avance.

Hors ligne

 

Pied de page des forums

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