IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Paypal et la BDD


Sujet :

Langage PHP

  1. #1
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 498
    Par défaut Paypal et la BDD
    Bonjour,

    pour un projet web je dois implanter un module paypal. En gros, une personne peut acheter du crédit numérique après l'avoir acheter via paypal. Je cherche donc à faire en sorte qu'une fois qu'une personne soit passé par paypal, celui-ci soit redirigée sur une page sécurisé pour que son crédit numérique soit intégrer dans la BDD.

    Comment puis-je réaliser cela ?

    Merci d'avance
    Les pièges de l'Internet
    Helix, réponse à une intrusion


    "La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
    "Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton

  2. #2
    Membre Expert Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Par défaut
    Salut, il y a 2/3 ans j'ai mis en place un système paypal (possible que cela soit fait avec paybox).

    Si je me souviens bien, quand tu appelles la page de paiement, tu lui envoies un code identifiant.

    Et dans ta configuration, tu précises une adresse de retour. Si tout est bon, il t'envoie la confirmation sur cette adresse (page web) avec l'identifiant.

    sinon leur site est bien fait : https://www.paypal-france.fr/developpeurs/#Integral

  3. #3
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 498
    Par défaut
    Bonjour Bebel ,

    merci de ta réponse je regarde ça de suite
    Les pièges de l'Internet
    Helix, réponse à une intrusion


    "La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
    "Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton

  4. #4
    Membre émérite Avatar de Atomya Rise
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Février 2009
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 443
    Par défaut
    Bonjour,

    J'utilise cette méthode actuellement pour un système de donation...

    Voici comment je fais pour qu'une fois que l'utilisateur valide son don sur paypal, paypal renvoie sur le site la confirmation du don fait.

    Dans la page où il y aura la possibilité de faire le payement tu y mets ton formulaire avec des inputs hidden qui seront envoyé à paypal pour que celui-ci sache quoi faire :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <form method="post" action="https://www.paypal.com/cgi-bin/webscr">
    <input type="hidden" name="cmd" value="_xclick"> <!-- la valeur indique la façon dont sera envoyé l'argent, si c'était par bouton se serais _s-xclick. Ici j'envoie le dont via un input...-->
    <input type="hidden" name="amout" value="VARIABLE INDIQUANT LE MONTANT A ENVOYER"><!-- Montant de la transaction -->
    <input type="hidden" name="business" value="EMAIL DU COMPTE PAYPAL"><!-- ICI l'email qui recevera l'argent -->
    <input type="hidden" name="item_name" value="OBJET DE LA TRANSACTION"><!-- Ici, tu indiquera le nom de l'objet de la transaction, le mieux est de mettre un objet avec une coordonnée de l'utilisateur afin que tu puisses plus facilement repérer le client -->
    <input type="hidden" name="item_number" value="1"> <!-- Mettre 1 si tu ne défini pas le client dans l'objet, sinon, mets l'identifiant de ton client -->
    <input type="hidden" name="no_note" value="1"> <!-- 1 pour ne pas obligé le client de saisir une note, sinon 0 -->
    <input type="hidden" name="currency_code" value="EUR"> <!-- devise monaitaire -->
    <input type="hidden" name="tax" value="0"> <!-- moi j'ai mis ceci pour faire passer le payement en donation sans taxte particulière, mais si tu désire ajouter une taxe selon l'objet, il te suffit de le définir ici -->
    <input type="hidden" name="no_shipping" value="1"> <!-- 1 pour ne pas demander à l'utilisateur de saisir une adresse de livraison sinon, tu mets 0 -->
    <input type="hidden" name="custom" value="ID DE L'UTILISATEUR"> <!-- ici, renseigne l'id de ton utilisateur afin de faire le traitement après -->
    <input type="hidden" name="lc" value="FR"> <!-- Pour définir la langue de paypal lors du payement" -->
    <input type="hidden" name="notify_url" value=""> <!-- ici, ytu renseigne la page qui te servira de traitement après avoir reçu le payement du client -->
    <input type="submit" src="images/Donation.gif" name="submit">
    </form>

    Et dans ta page de traitement avec laquelle tu fais rediriger paypal :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    <?php
    // On défini une fonction pour les requêtes afin d'écrire quelques part l'erreur sql qui s'est produite pour que l'on puisse la connaître
    function requete_don($sql) {
    	$result = @mysql_query($sql);
    	if ($result === false)
    		log_erreur("Erreur don : " . $sql . " - " . mysql_error());
    	return $result;
    }
    // On ajoute 'cmd' après avoir lu les données reçu par paypal
    $req = 'cmd=_notify-validate';
    // On défini la variable qui va nous servir pour l'encodage de l'url
    foreach ($_POST as $key => $value) {
    	$value = urlencode($value);
    	$req .= "&$key=$value";
    }
    // Système retourné en POST pour validation paypal
    $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);
    // Définir les variables
    $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'];
    $paypal_email = $config['paypal_mail']; 
    $clid = $_POST['custom'];
     
    if (!$fp) {
    	// Erreur
    	log_erreur('Erreur donation (!$fp)');
    } else {
    	fputs ($fp, $header . $req);
    	while (!feof($fp)) {
    		$res = fgets ($fp, 1024);
    		if (strcmp ($res, "VERIFIED") == 0) {
     
    			// si le payement est confirmé par paypal
    			if ($receiver_email == $paypal_email && $payment_status == "Completed") {
    				// ICI METTRE LE CODE QUI SERA APPLIQUé
    				//////////////////exemple de requête:
    				$mod_r = requete_don("SELECT commentaire_moderation FROM membres WHERE id = " . sqlesc($clid));
    				$mod = mysql_fetch_row($mod_r);
    				$doncom = date("d/m/Y") . " - " . $payment_amount . "€ - ";
    				if (!empty($mod[0]))
    					$doncom .= "\n" . htmlspecialchars_decode($mod[0]);	
    				$query = "UPDATE membres".SUF." SET commentaire_moderation = " . sqlesc(htmlspecialchars($doncom)) . " WHERE id = " . sqlesc($clid);
    				$result = requete_don($query);
    				////////////////////////////////
    			}
     
    		// sinon on redirige vers une autre page
    		} else if (strcmp ($res, "INVALID") == 0) {
    			header("Location: MAPAGE_ERREUR.php");
    		}
    	}
    	fclose ($fp);
    }
    ?>

    Voilà, en espérant que cela t'aide tout en sachant que les liens que Bebel t'as donnés sont très utile aussi

  5. #5
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 498
    Par défaut
    Bonjour,

    merci de ta réponse Atomya Rise. J'ai aussi trouvé ce tuto
    http://ww7.be/neofutur/tools/php/pay...rial_part3.php.

    Il me semble que ça reprend tes conseils. Ce soir je tente de les mettre en pratique
    Les pièges de l'Internet
    Helix, réponse à une intrusion


    "La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
    "Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton

  6. #6
    Membre émérite Avatar de Atomya Rise
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Février 2009
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 443
    Par défaut
    Fais moi confiance, ceci est en ligne sur plusieurs sites et fonctionne très bien

  7. #7
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 498
    Par défaut
    je ne mets pas en doute ton code ni ta confiance

    toutefois je trouve un peu léger de faire passer les données par un simple hidden (des outils comme firebug ou tamper data permette d'altérer les données, donc de tricher sur la somme..). Faut que je creuse de ce coté pour avoir un truc qui me plait
    Les pièges de l'Internet
    Helix, réponse à une intrusion


    "La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
    "Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton

  8. #8
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 498
    Par défaut
    bon alors en faite, j'ai amélioré le code en:

    -chiffrant les valeurs qui passe en hidden (bien que cela ne me convienne pas à 100 %),

    -quand je récupère la valeur de l'id (après une vérification d'empreinte) une fois déchiffré, je vérifie que celui-ci est bien présent dans la BDD.

    -puis j'envoi le tout à paypal et j'utilise mysql_real_escape_string avant toute insertion dans la BDD (htmlspecialchars est devenu beaucoup trop obsolète...)

    Atomya Rise, je pense que tu devrais revoir une partie de ton code, car celui-ci est vulnérable à des détournements...

    (je check le résolu une fois que cela sera totalement fini)
    Les pièges de l'Internet
    Helix, réponse à une intrusion


    "La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
    "Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton

  9. #9
    Membre émérite Avatar de Atomya Rise
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Février 2009
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 443
    Par défaut
    En faite dans mon code, tu pourras voir ceci : sqlesc

    C'est une fonction que j'ai faite pour simplifié le mysql_real_escape_string

    Ensuite, j'utilise ceci pour un petit système de donation basé sur des formules bien déterminé.
    Je ne dis pas le contraire, il y a des choses à revoir en effet Merci.

    Contente que tu obtiens une partie de ta réponse en tout cas

Discussions similaires

  1. conseils insertion BDD avant paiement paypal
    Par kate59 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 11/01/2012, 15h19
  2. portabilité et BDD
    Par delire8 dans le forum C++Builder
    Réponses: 7
    Dernier message: 04/07/2002, 10h59
  3. connection a une BDD MySql
    Par delire8 dans le forum MFC
    Réponses: 7
    Dernier message: 19/06/2002, 18h18
  4. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26
  5. Probleme de filtre dans bdd
    Par scorpiwolf dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/06/2002, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo