Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/08/2011, 21h27   #1
Rédacteur
 
Avatar de pi-2r
 
Inscription : juin 2006
Messages : 1 384
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 384
Points : 2 211
Points : 2 211
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
[ Pas de questions techniques en MP ]


"La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
"Si j’ai vu si loin, c’est que j’étais monté sur des épaules de géants." Isaac Newton
pi-2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 09h21   #2
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
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 : 742
Points : 1 085
Points : 1 085
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
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/08/2011, 19h37   #3
Rédacteur
 
Avatar de pi-2r
 
Inscription : juin 2006
Messages : 1 384
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 384
Points : 2 211
Points : 2 211
Bonjour Bebel ,

merci de ta réponse je regarde ça de suite
__________________
Les pièges de l'Internet
Helix, réponse à une intrusion
[ Pas de questions techniques en MP ]


"La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
"Si j’ai vu si loin, c’est que j’étais monté sur des épaules de géants." Isaac Newton
pi-2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 11h19   #4
Membre Expert
 
Avatar de Atomya Rise
 
Femme Emilie Lefol
En recherche d'emploi
Inscription : février 2009
Messages : 411
Détails du profil
Informations personnelles :
Nom : Femme Emilie Lefol
Âge : 26
Localisation : France, Somme (Picardie)

Informations professionnelles :
Activité : En recherche d'emploi
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2009
Messages : 411
Points : 1 277
Points : 1 277
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 :
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 :
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
__________________

Si un message vous a aidé, pensez à voter positivement pour lui ! Merci
Pas de question technique en privé
- Si on criait sur la place publique les fautes de tout le monde, on ne pourrait plus fréquenter personne ! (Marcel Pagnol)
- Technocrates, c’est les mecs que, quand tu leur poses une question, une fois qu’ils ont fini de répondre, tu comprends plus la question que t’as posée. (Coluche)
Atomya Rise est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/08/2011, 21h26   #5
Rédacteur
 
Avatar de pi-2r
 
Inscription : juin 2006
Messages : 1 384
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 384
Points : 2 211
Points : 2 211
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
[ Pas de questions techniques en MP ]


"La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
"Si j’ai vu si loin, c’est que j’étais monté sur des épaules de géants." Isaac Newton
pi-2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 21h28   #6
Membre Expert
 
Avatar de Atomya Rise
 
Femme Emilie Lefol
En recherche d'emploi
Inscription : février 2009
Messages : 411
Détails du profil
Informations personnelles :
Nom : Femme Emilie Lefol
Âge : 26
Localisation : France, Somme (Picardie)

Informations professionnelles :
Activité : En recherche d'emploi
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2009
Messages : 411
Points : 1 277
Points : 1 277
Fais moi confiance, ceci est en ligne sur plusieurs sites et fonctionne très bien
__________________

Si un message vous a aidé, pensez à voter positivement pour lui ! Merci
Pas de question technique en privé
- Si on criait sur la place publique les fautes de tout le monde, on ne pourrait plus fréquenter personne ! (Marcel Pagnol)
- Technocrates, c’est les mecs que, quand tu leur poses une question, une fois qu’ils ont fini de répondre, tu comprends plus la question que t’as posée. (Coluche)
Atomya Rise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 23h56   #7
Rédacteur
 
Avatar de pi-2r
 
Inscription : juin 2006
Messages : 1 384
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 384
Points : 2 211
Points : 2 211
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
[ Pas de questions techniques en MP ]


"La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
"Si j’ai vu si loin, c’est que j’étais monté sur des épaules de géants." Isaac Newton
pi-2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2011, 23h29   #8
Rédacteur
 
Avatar de pi-2r
 
Inscription : juin 2006
Messages : 1 384
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 384
Points : 2 211
Points : 2 211
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
[ Pas de questions techniques en MP ]


"La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
"Si j’ai vu si loin, c’est que j’étais monté sur des épaules de géants." Isaac Newton
pi-2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2011, 23h35   #9
Membre Expert
 
Avatar de Atomya Rise
 
Femme Emilie Lefol
En recherche d'emploi
Inscription : février 2009
Messages : 411
Détails du profil
Informations personnelles :
Nom : Femme Emilie Lefol
Âge : 26
Localisation : France, Somme (Picardie)

Informations professionnelles :
Activité : En recherche d'emploi
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2009
Messages : 411
Points : 1 277
Points : 1 277
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
__________________

Si un message vous a aidé, pensez à voter positivement pour lui ! Merci
Pas de question technique en privé
- Si on criait sur la place publique les fautes de tout le monde, on ne pourrait plus fréquenter personne ! (Marcel Pagnol)
- Technocrates, c’est les mecs que, quand tu leur poses une question, une fois qu’ils ont fini de répondre, tu comprends plus la question que t’as posée. (Coluche)
Atomya Rise est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h05.


 
 
 
 
Partenaires

Hébergement Web