Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 11-05-2008 13:06:46

lebilien
Membre
Lieu: avranches
Date d'inscription: 19-06-2007
Messages: 270
Site web

Utilisation paypal express

bonjour  j'aimerai pouvoir utiliser paypal express sur mon futur site, le but est de  faire payer certain partis du site avec un abonnement pour cela je voudrais utiliser (paypal ) systéme le moins cher pour nous actuellement . Mais j'ai j'arrive a créer un bouton "acheter" mais je ne comprend pas trés bien le reste :

C'est a dire :

   -confirmation du paiement
  - comment savoir quel est le client qui a payer
   -retour du client sur mon site .

merci de votre aide

Cordialement


http://www.parkaddict.com Gagner des places dans vos parcs préférés

Hors ligne

 

#2 12-05-2008 15:57:37

speedy142
Nouveau membre
Date d'inscription: 06-08-2007
Messages: 3

Re: Utilisation paypal express

Salut,

Je sais pas si cela peut t'aider mais un gars avait commencer quelque chose ,tu pourrais te mettre en relation avec lui:
http://framework.zend.com/wiki/display/ … ahar+Evron

Hors ligne

 

#3 12-05-2008 16:01:36

lebilien
Membre
Lieu: avranches
Date d'inscription: 19-06-2007
Messages: 270
Site web

Re: Utilisation paypal express

merci je vais etudier


http://www.parkaddict.com Gagner des places dans vos parcs préférés

Hors ligne

 

#4 12-05-2008 19:18:19

lebilien
Membre
Lieu: avranches
Date d'inscription: 19-06-2007
Messages: 270
Site web

Re: Utilisation paypal express

j'ai trouve ce site http://phppaypalpro.sourceforge.net/  qui propose une systéme intéressant d'intégration , mais pour l'instant j'arrive pas a la faire marcher lol


http://www.parkaddict.com Gagner des places dans vos parcs préférés

Hors ligne

 

#5 29-05-2008 10:43:31

cortex
Membre
Date d'inscription: 22-05-2008
Messages: 33

Re: Utilisation paypal express

Paypal propose moulte moyens de permettre la réalisation du paiement. La plus simple est de mettre en place des boutons Acheter ou Faire un don. Tu le créé via un assistant sur le site, ça te construit un formulaire HTML que tu copies colles dans ta page. Quand le client cliquera, il sera redirigé, et effectuera son paiement. Il n'y a AUCUN moyen fiable de vérifier dans l'immédiat que le paiement a été accepté et qu'il a été effectué sur ton compte PayPal. Il te faudra donc aller vérifier à la main dans ton compte si le paiement est arrivé et prendre les actions nécessaire (envoyé un email avec des codes d'accès par exemple).

Si ce que tu cherches est une complète intégration, il te faut utiliser l'Express Checkout. Dans l'idée, quand le client clique sur acheter, du coté de ton script, tu effectues une requête sur les serveurs de PayPal en fournissant les infos comme le prix. Il te réponde par un token que tu ajoute à une url de redirection. C'est sur cette url que tu dois rediriger ton client pour qu'il fasse son paiement sur le site PayPal. A la fin, il revient sur ton site avec le token, et là dans ton script, tu effectues une requête sur les serveurs PayPal avec le token, et ils te répondent si le paiement a été validé, ou est en cours de validation (par exemple, monnaie différente), ou refusé avec le motif.

Enfin, il existe un dernier service qui n'est pas forcément lié aux deux précédentes, tu peux configurer dans ton compte PayPal, une adresse web que PayPal appellera à chaque nouvelle transaction dans ton compte (debit/credit/changement de status), et qui te permettront par exemple, de passer automatiquement un paiement en attente, en paiement confirmé/refusé.

Tout cela est extrêmement bien expliqué sur le site de PayPal. A savoir que pour la deuxième et troisième solutions, tu peux ouvrir un compte de test sur https://developer.paypal.com.
API référence : https://www.paypal.com/IntegrationCente … rence.html
PDF pour savoir comment intéroger les serveurs PayPal : https://www.paypal.com/en_US/pdf/PP_NVP … rGuide.pdf
Exemple en php : https://www.paypal.com/IntegrationCente … v5_1_0.zip


@speedy142: merci pour le lien, je ne connaissais pas et j'ai quasi refait ce qu'il a fait (en tout cas pour une la partie express checkout) sad

Hors ligne

 

#6 29-05-2008 11:26:52

lebilien
Membre
Lieu: avranches
Date d'inscription: 19-06-2007
Messages: 270
Site web

Re: Utilisation paypal express

il y a se lien aussi   je vais tester ce soir pour voir si il marche  .

http://www.paypalblog.info/article-3598934.html

Merci pour les infos


http://www.parkaddict.com Gagner des places dans vos parcs préférés

Hors ligne

 

#7 30-05-2008 10:04:51

lebilien
Membre
Lieu: avranches
Date d'inscription: 19-06-2007
Messages: 270
Site web

Re: Utilisation paypal express

alors tous est peut être bien expliquer mais je comprend rien lol , j'ai passé la nuit dessus j'ai essayer plein de script ...

mon probléme actuelle c'est que je créer des compte de test ok mais comment je les utiliser car j'ai essayer sa

Code:

<form target="paypal" action="https://www.sandbox.paypal.com/fr/cgi-bin/webscr" method="post">
<input type="image" src="https://www.paypal.com//fr_FR/i/btn/x-click-but22.gif" border="0" name="submit" alt="Effectuez vos paiements via PayPal : une solution rapide, gratuite et sécurisée">
<img alt="" border="0" src="https://www.paypal.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
<input type="hidden" name="add" value="1">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="business" value="email">
<input type="hidden" name="item_name" value="services cesu">
<input type="hidden" name="item_number" value="<?php echo $compte;?>">
<input type="hidden" name="custom" value="<?php echo $compte;?>">
<input type="hidden" name="amount" value="10.00">
<input type="hidden" name="no_shipping" value="0">
 <input type="hidden" name="return" value="adressescript">
   <input type="hidden" name="cancel_return" value="adresseretour">
<input type="hidden" name="no_note" value="1">
<input type="hidden" name="currency_code" value="EUR">
<input type="hidden" name="lc" value="FR">
<input type="hidden" name="bn" value="PP-ShopCartBF">
</form>

ok j'arrive sur la sanbox pour payer mais alors aucun des compte de test marche .


pour le script de test j'ai cela

Code:

/*
ETAPE 1
On commence par générer la requête à réenvoyer à PayPal
(Au départ, PayPal envoie une requête à une URL que vous aurez spécifiée dans
votre espace PayPal dans la rubrique "Préférences de Notification instantanée
de paiement" et qui est donc l'adresse URL de cette page même sur votre serveur).
*/

// il faudra ajouter 'cmd=_notify-validate' à la requête reçue
$req = 'cmd=_notify-validate';
// On reforme la requête avec les variables envoyées par Paypal
foreach ($_POST as $key => $value)
{
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}

/*
ETAPE 2
On renvoie la requête au système PayPal pour validation (par POST) qui nous
permettra d'avoir toutes les informations de la transaction et de vérifier
si la transaction est bien validée.
*/

$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.paypal.com', 80, $errno, $errstr, 30);

/*
ETAPE 3
On affecte les variables fournies par PayPal
*/

// Désignation d'achat (ex : Achat de vidéos)
$designation = $_POST['item_name'];
// A utiliser de préférence pour définir un id ou autre qui représente le payeur (voir autre page fournit dans la source)
$compte = $_POST['item_number'];
// Statut du paiement
$statutpaiement = $_POST['payment_status'];
// Montant réglé (au format 10.00)
$montantpaiement = $_POST['mc_gross'];
// Devise de paiement (pour € on a EUR)
$devisepaiement = $_POST['mc_currency'];
// ID de transaction
$idtransaction = $_POST['txn_id'];
// Adresse email du receveur du paiement (qui doit être la votre !)
$receveurpaiement = $_POST['receiver_email'];
// Adresse email du payeur (pratique pour envoyer un email de confirmation du paiement)
$payeur = $_POST['payer_email'];

/*
ETAPE 4
Exécution de la requête en envoyant ce qui a été définit en étape 1 & 2
*/

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

while (!feof($fp))
{
$res = fgets ($fp, 1024);

    if (strcmp ($res, "VERIFIED") == 0)
    {    
        if($statutpaiement == "Completed")
        {
/*
DEBUT DE L'ETAPE 5
A partir de cet instant, on sait que le paiement a été accepté.
Reste à savoir si la devise de paiement est bonne, si le montant est bon, si vous êtes
bien le receveur du paiement, etc...
Notez qu'il est inutile de spécifier des messages d'erreur car cette page sera simplement
exécutée par un serveur en cache, personne ne verra donc cette page.
*/


        /* EXEMPLE DE CODAGE : */
        // Si la devise est l'euro et l'adresse email du receveur du paiement est bien celle de mon compte Paypal.
        if($devisepaiement == "EUR" && $receveurpaiement == "monemail@portannuaire.info")
        {
        
        // J'inclue la page avec les informations de connexion à la base de données
        //include('../includes/infos_bdd.php');
        
        // Je me connecte à la base de données pour éxécuter quelques requêtes.
        //connexion_bdd();
            $db=Zend_Registry::get("db");
        // Je cherche des doublons de cette transaction
        //$doublonidtrans = mysql_numrows(mysql_query("SELECT id_trans FROM `PAYPAL` WHERE id_trans='$idtransaction' LIMIT 1"));
        
        $select=$db->select();
        $select->from("paiement");
        $select->where("id_transaction='$idtransaction'");
            $row=$db->fetchAll($select);
            
        if(count($row) == 0)
        {
        /*
        >>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<
        >>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<
        >>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<
        DANS CE CAS ON VALIDE FINALEMENT LA TRANSACTION...
        AVEC ENVOI D'EMAIL DE CONFIRMATION...
        INSERTION DANS BASE DE DONNEES... ETC...
        >>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<
        >>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<
        >>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<
        
    
        */
            $data=array();
            $data["id_transaction"]=$idtransaction;
            $data["id_user"]=Zend_Registry::get("id_user");
            $data["date"]=date("Y-m-d");
            $data["montant"]=$montantpaiement;
            $db->insert("paiement",$data);
        }
        
        mysql_close();
        }
            
/*
FIN DE L'ETAPE 5
A partir de cet instant, il ne faut plus rien modifier.
*/    
        }        
    }
}

fclose ($fp);
}

merci de votre aide

Dernière modification par lebilien (30-05-2008 10:10:03)


http://www.parkaddict.com Gagner des places dans vos parcs préférés

Hors ligne

 

#8 31-05-2008 15:54:14

cortex
Membre
Date d'inscription: 22-05-2008
Messages: 33

Re: Utilisation paypal express

Tu te sers de l'api IPN (Instant Paiement Notification) avec la création d'un bouton Acheter que tu réalises sur le site dans tes préférences de compte ?

Pour la sandbox, je vais détailler (plus pour les autres qui se lancent, tu as du y arriver je pense)
Au niveau de la sandbox, tu as deux adresses :
https://developer.paypal.com/ est la première que tu dois utiliser, c'est l'espace qui permet de gérer les comptes virtuels.
Chaque compte virtuel peut être "resetté", c'est le seul moyen de connaitre le password (j'ai essayé d'en mettre à moi, ça ne marche pas, il faut prendre celui indiquer)
Avec ces comptes tu connectes sur la deuxième url https://www.sandbox.paypal.com/ qui est une réplique du site classique. A ce niveau, tu te connecte avec un compte business, tu créés un bouton de test, tu configures l'adresse de retour IPN dans les préférence du compte, sur la colonne de droite si je me souviens bien)

A l'url configurée correspond le code php que tu as fourni. Néanmoins dans celui-ci, l'url appelé par le fsockopen pour faire la verification des datas n'est pas correcte car elle pointe sur l'environnement réel de production et non la sandbox. Faut pointer sur le sous domaine sandbox. Je te conseille également d'ajouter des logs
je fais un script php bidon au début pour tester que la communication se faisait bien et pis pour voir un peu mieux ce qui est envoyé.

Code:

<?php 
    ob_start();
    echo "=> " . date(DATE_ATOM) . "\n";
    print_r($_REQUEST);
    echo "\n";
    $out = ob_get_clean();

    file_put_contents("log/ipn.txt", $out, FILE_APPEND | LOCK_EX );

Ca te permettra au moins de voir si paypal appelle bien ton url et pour toi aussi tester ton script :p


Si déjà ça, ça ne marche pas. Il faut bien verifier ta configuration. Dans le formulaire html, l'élément business correspond bien à l'email du compte business virtuel ?

Relis bien tout les documents, et les exemples de code (perso je les ai trouvé très bien mais je parle du cas d'intégration de l'express checkout), Je pense que je ne ferai que de la redite maladroite.

Dernière modification par cortex (31-05-2008 15:56:08)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages