Bonjour à tous,

Voulant intégrer un système de paiement Paypal sur mon site je suis tomber sur ce tutoriel :

http://www.grafikart.fr/tutoriels/php/paiement-paypal-181

J'ai donc fait à peu près comme le tutoriel

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<input name="amount" type="hidden" value="10" />
<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://monsite.com/paypal/test.php" />
<input name="cancel_return" type="hidden" value="http://monsite.com/paypal/annuler.php" />
<input name="notify_url" type="hidden" value="http://monsite.com/paypal/ipn.php" />
<input name="cmd" type="hidden" value="_xclick" />
<input name="business" type="hidden" value="vend_1344769947_per@live.fr" />
<input name="item_name" type="hidden" value="Rien" />
<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="" />
<input type="submit" value="Payer par paypal" class="btn primary">
</form>

Ce n'est pas le code final, le final fonctionne avec une base de donnés pour récupérer le prix ect...

Donc voila je test ça, je suis bien envoyé sur Paypal
Sur ipn.php j'ai mis ça Comme vérification (bout de code, l'autre est trop long) :

........... if ( $payment_status == "Completed") {
               if ( $email_account == $receiver_email AND $databoutique'prix'] == $_POST'mc_gross'] AND $_POST'mc_currency'] == 'EUR') {
            $_SESSION'paye'] = 'ok';...........

Sa créer la session paye ok, qui ensuite dans la de telechargement voudra dire que le paiement à était fait, mais mon problème c'est que IPN.php ne créer pas la session.

PS: j'ai mise le session_start(); en haut de la page ipn.php

Merci d'avance.

3 réponses


snap
Réponse acceptée

IPN.php est appelé quelques second après le paiement par les serveur de paypal (donc en théorie cela peut même mettre un peu plus longtemps), donc quand l'utilisateur paye et est renvoyé sur ton site, paypal n'as pas encore appelé IPN.php (et en plus la session paye appartient a la machine qui a appelé la page : le serveur de paypal, et non le client).

cependant il me semble que lorsque la transaction se passe bien, l'utilisateur est renvoyé sur une page success (que tu peut préciser dans les config ou dans les variable caché, ici tu a mit http://monsite.com/paypal/test.php il me semble)
donc tu peut faire en sorte que quand l'utilisateur arrive sur cette page, tu lui dit que la transaction est en cours de traitement et qu'il recevra une confirmation par email par exemple (email qui peut etre envoyé par php dans la page IPN.php).
Il me semble que tu peut aussi en php faire un appel vers paypal pour savoir si la transaction a bien était effectué et donc lui dire le résultat dans cette page grace a cette méthode, ce qui est sur c'est qu'IPN.php est appelé par paypal (et donc les session ne servent pas)

Amocore
Auteur

Ah merci, ça marche !!! merci 1000 fois

N'oublie pas de mettre ton sujet en résolu ;)