Bonsoir,
je suis entrain d'essayer d'intégrer Paypal à mon site.
Pour le moment il est juste question d'acheter un accès pour avoir droit à d'autres 'zones' du site.
Le problème étant:
en testant, avec le service sandbox de Paypal (compte seller et buyer), la transaction s’effectue correctement mais l'UPDATE et l'INSERTION de données dans ma base ne sont pas pris en compte.
Si une personne veut bien lire le code, et peut être identifier ce qui ne va pas, ou même proposer des astuces, modifications.... je suis preneur !
Je remercie d'avance ceux qui ont prit la peine de lire le code
Voici donc le code:
Et le PHP de la page validation.php
Je ne reçois aucun mail, non plus !
Modifié par ekke (16 Dec 2011 - 18:42)
je suis entrain d'essayer d'intégrer Paypal à mon site.
Pour le moment il est juste question d'acheter un accès pour avoir droit à d'autres 'zones' du site.
Le problème étant:
en testant, avec le service sandbox de Paypal (compte seller et buyer), la transaction s’effectue correctement mais l'UPDATE et l'INSERTION de données dans ma base ne sont pas pris en compte.
Si une personne veut bien lire le code, et peut être identifier ce qui ne va pas, ou même proposer des astuces, modifications.... je suis preneur !
Je remercie d'avance ceux qui ont prit la peine de lire le code
Voici donc le code:
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<input type='hidden' value="30" name="amount" />
<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://domaine.fr/repertoire/valide.php" />
<input name="cancel_return" type="hidden" value="http://domaine.fr/repertoire/annule.php" />
<input name="notify_url" type="hidden" value="http://domaine.fr/repertoire/validation.php" />
<input name="cmd" type="hidden" value="_xclick" />
<input name="business" type="hidden" value="email_test_biz@hotmail.fr" />
<input name="item_name" type="hidden" value="acces prestige" />
<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="<?php $_SESSION['Pseudo'] ?>" />
<input 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 le PHP de la page validation.php
<?php
// 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);
// On récupère toutes les données que l'on va traiter.
$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) {
// ERREUR HTTP
$message = 'Probleme de numéro de HTPP';
mail('mon_mail@domaine.fr', '[Fail]Acces prestige', $message);
}
else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
// transaction valide
if (strcmp ($res, "VERIFIED") == 0) {
// vérifier que payment_status a la valeur Completed
if ( $payment_status == "Completed") {
// vérifier que receiver_email est votre adresse email PayPal principale
if ( "email_test_biz@hotmail.fr" == $receiver_email) {
// traiter le paiement
$serveur = mysql_connect('.....', '.....', '....') or die ("Un erreur est survenue lors de la connection à la base de donnée!");
$database= mysql_select_db ('.....', $serveur) or die ("Un erreur est survenue lors de la selection de base de donnes!");
$req = mysql_query("UPDATE Ma-table-membre SET acces = 'oui' WHERE Pseudo = '$id_user' ") ;
$req = mysql_query("INSERT INTO Ma-Table-Facture VALUES (
'".mysql_real_escape_string($txn_id)."',
'".mysql_real_escape_string($item_name)."',
'".mysql_real_escape_string($payer_email)."',
'".mysql_real_escape_string($id_user)."',
'".mysql_real_escape_string($payment_amount)."')"
) ;
$message = 'Paiment de '.$id_user.' effectue';
mail('mon_mail@domaine.fr', '[Check]Acces prestige', $message);
}
else {
// Mauvaise adresse email paypal
$message = 'Transaction valide. Mauvaise adresse email paypal';
mail('mon_mail@domaine.fr'', '[Fail]Acces prestige', $message);
}
}
else {
// Statut de paiement: Echec
$message = 'Statut de paiement: Echec';
mail('mon_mail@domaine.fr', '[Fail]Acces prestige', $message);
}
}
else if (strcmp ($res, "INVALID") == 0) {
// Transaction invalide
$message = 'Transaction invalide';
mail('mon_mail@domaine.fr', '[Fail]Acces prestige', $message);
}
}
fclose ($fp);
}
?>
Je ne reçois aucun mail, non plus !
Modifié par ekke (16 Dec 2011 - 18:42)