envoi d'un fichier suite à paiement paypal ?

seabird

WRInaute occasionnel
Bonjour,

Je voudrais envoyer automatiquement un fichier suite à un paiement Paypal .
Je trouve quand même la doc par très explicite.
Bon j'ai fini par trouver comment envoyer un mail de notification suite au paiement.

J'ai renseigné le notify_url dans le formulaire de cette façon:


Code:
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="essai@yahoo.com">
<input name="custom" type="hidden" value="numerodeclient" />
<input type="hidden" name="item_name" value="document">
<input type="hidden" name="currency_code" value="EUR">
<input type="hidden" name="amount" value="0">
<input type="hidden" name="notify_url" value="notification.php"> 
<input type="image" src="https://www.paypal.com/fr_FR/FR/i/btn/btn_buynowCC_LG.gif" name="submit" alt="Effectuez vos paiements via PayPal : une solution rapide, gratuite et sécurisée">
</form>


ensuite dans le fichier notification.php j'ai :

Code:
/* Script de notification de paiement par Paypal par mail */
$emailto = "destinataire@destinataire.com";
$emailfrom = "essai@essai.com";
$sujetprefix = "[PAYPAL]";

// lecture du post de PayPal et ajout de 'cmd'
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = trim(urlencode(stripslashes($value)));
$req .= "&$key=$value";
}
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Host: www.paypal.com:80\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);
$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'];
$payment_date = $_POST['payment_date'];
$txn_id = $_POST['txn_id'];
$receiver_email = $_POST['receiver_email'];
$payer_email = $_POST['payer_email'];
$num_cart_items = $_POST['num_cart_items'];
$quantity = $_POST['quantity'];
$mc_fee = $_POST['mc_fee'];
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$address_street = $_POST['address_street'];
$address_zip = $_POST['address_zip'];
$address_city = $_POST['address_city'];
$address_state = $_POST['address_state'];
$address_country = $_POST['address_country'];
$address_country_code = $_POST['address_country_code'];
$payer_business_name = $_POST['payer_business_name'];
$payer_status = $_POST['payer_status'];
$memo = $_POST['memo'];
$invoice = $_POST['invoice'];

if (!$fp) {
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0) {


// *******ENVOI FICHIER ****************************

ENVOI DU FICHIER




// FIN ENVOI FICHIER *********************************


// Envoi du mail
$mail_From = "From: " . $emailfrom;
$mail_To = $emailto;
$mail_Subject = $sujetprefix . " Paiement PAYPAL valide et verifie";
$mail_Body = "Paypal vient de valider et recevoir un paiement par carte bancaire.";
$mail_Body .= "\n\n====================================================";
$mail_Body .= "\nVoici quelques informations sur la transaction:\n";
$mail_Body .= "\n" . "Transaction ID: " .  $txn_id ;
$mail_Body .= "\n" . "Date de paiement: " . $payment_date;
$mail_Body .= "\n" . "Etat du paiement: " . $payment_status;
$mail_Body .= "\n====================================================";
$mail_Body .= "\n\n" . "Les informations ci-dessous peuvent etre incompletes. \nAllez sur votre compte Paypal pour verifier qu'il ne manque pas une ligne de l'adresse ou un objet en commande.";
$mail_Body .= "\n\n====================================================";
$mail_Body .= "\n" . "Nombre d'objets dans le panier: " . $num_cart_items;
$mail_Body .= "\n" . "Objet en commande: " . $item_name;
$mail_Body .= "\n" . "Numero de l'objet: " . $item_number;
$mail_Body .= "\n" . "Quantite: " . $quantity;
$mail_Body .= "\n\n" . "Montant: " . $payment_amount . " " .$payment_currency;
$mail_Body .= "\n" . "Frais Paypal: " . $mc_fee;
$mail_Body .= "\n" . "Facture numero: " . $invoice;
$mail_Body .= "\n\n" . "Nom: " . $first_name . " " .$last_name;
$mail_Body .= "\n" . "Rue: " . $address_street;
$mail_Body .= "\n" . "Code postal: " . $address_zip;
$mail_Body .= "\n" . "Ville: " . $address_city;
$mail_Body .= "\n" . "Etat et Pays: " . $address_state . " " .$address_country . " " .$address_country_code;
$mail_Body .= "\n" . "Adresse e-mail: " . $payer_email;
$mail_Body .= "\n" . "Nom de l'entreprise: " . $payer_business_name;
$mail_Body .= "\n\n" . "Message du client: " . $memo;
$mail_Body .= "\n\n" . "Statut Paypal du client: " . $payer_status;
$mail_Body .= "\n====================================================";

foreach ($_POST as $key => $value){
$emailtext .= $key . " = " .$value ."\n";
}

mail($mail_To, $mail_Subject, $mail_Body . "\n\nVoici les donnees brutes recues par Paypal: \n\n" . $emailtext, $mail_From);

}
else if (strcmp ($res, "INVALID") == 0) {
// Envoi d'un mail si invalide

$mail_From = "From: " . $emailfrom;
$mail_To = $emailto;
$mail_Subject = $sujetprefix . " Paiement PAYPAL NON VALIDE";
$mail_Body = "Un client a voulu payer par Paypal mais la transaction n'est pas valide. La commande est annulee. \nCe message est envoye pour information, il n'y a rien a faire. \nhttps://www.paypal.com/fr/ \nCi-dessous, les donnees brutes envoyees par Paypal.";
$mail_Body .= "\n\n====================================================";
$mail_Body .= "\n\n" . "Nombre d'objets dans le panier: " . $num_cart_items;
$mail_Body .= "\n" . "Objet en commande: " . $item_name;
$mail_Body .= "\n" . "Numero de l'objet: " . $item_number;
$mail_Body .= "\n" . "Quantite: " . $quantity;
$mail_Body .= "\n\n" . "Montant: " . $payment_amount . " " .$payment_currency;
$mail_Body .= "\n" . "Frais Paypal: " . $mc_fee;
$mail_Body .= "\n" . "Facture numero: " . $invoice;
$mail_Body .= "\n\n" . "Nom: " . $first_name . " " .$last_name;
$mail_Body .= "\n" . "Rue: " . $address_street;
$mail_Body .= "\n" . "Code postal: " . $address_zip;
$mail_Body .= "\n" . "Ville: " . $address_city;
$mail_Body .= "\n" . "Etat et Pays: " . $address_state . " " .$address_country . " " .$address_country_code;
$mail_Body .= "\n" . "Adresse e-mail: " . $payer_email;
$mail_Body .= "\n" . "Nom de l'entreprise: " . $payer_business_name;
$mail_Body .= "\n\n" . "Message du client: " . $memo;
$mail_Body .= "\n\n" . "Statut Paypal du client: " . $payer_status;
$mail_Body .= "\n====================================================";

foreach ($_POST as $key => $value){
$emailtext .= $key . " = " .$value ."\n";
}

mail($mail_To, $mail_Subject, $mail_Body . "\n\nVoici les donnees brutes recues par Paypal: \n\n" . $emailtext, $mail_From);

}
}
fclose ($fp);
}

Je voudrais donc mettre le code pour envoyer le fichier en téléchargement à l'endroit ou j'ai mis ENVOI DU FICHIER en utilisant readfile . Mais il faudrait que je change le header qui a été déjà défini.
Je coince un peu la . Ou alors ce n'est pas comme ça que je dois procéder ?
Quelqu'un sait comment faire ?

Merci
 

seabird

WRInaute occasionnel
Merci pour ta suggestion, mais j'ai fait autrement.
Je m'en suis sorti en rajoutant l'url de retour apres le paiement
Code:
<input type="hidden" name="return" value="telechargement.php">
Je lance donc le téléchargement du fichier automatiquement en vérifiant dans ma BDD si le paiement a bien eu lieu. ( écriture dans la bdd qui s'est faite grâce au fichier notification.php )

Par contre un petit détail: sur la page de paiement apparait:

PayPal traite de manière sécurisée les paiements de contact@mondomaine.fr. Vous pouvez effectuer votre règlement en quelques clics.

et

Est ce que l'on peut personnaliser et remplacer contact@mondomaine.fr par autre chose.
je suppose que cela doit être possible. Mais je ne vois pas comment faire ?

Merci
 

deblocks

Nouveau WRInaute
Bonjour,

J'aimerai savoir comment rediriger mes clients à la suite d'un paiement paypal vers une page de téléchargement ??? Je suis un peu perdu. J'ai créé un lien "acheter" via paypal et que j'ai introduit dans ma page. J'ai egalement ajouté un :

<input type="hidden" name="return" value="Adresse de ma page web où je veux rediriger">

Ensuite sur paypal dans mes préférences j'ai pu spécifier l'url de redirection. Mais mes clients m'informent qu'ils ne sont pas redirigés et je me retrouve dans l'obligation d'envoyer le fichier manuellement..

Mon niveau PHP est modeste....seabird pouvez-vous m'aider ??? merci beaucoup
 

Discussions similaires

Haut