e-book, plus de mail automatique

13 posts in this topic

Posted · Report post

Bonjour.

J'ai une boutique de e-book, mais depuis quelques jours mes clients ne reçoivent plus le mail automatique lorsqu'il commande en payant via paypal.

J'ai constaté que dans le statut des vente restait toujours en "Attente de paiement" alors que le paiement avait bien été effectué. Normlament il bascule en "réglée".

Il y a un petit problème mais je ne sais quel fichier pose problème : (version 6.01). Je n'ai pas fait de modif sur cette boutique ces dernier temps, je ne comprend pas.

Pouvez me dire quel fichier faut il que je vous envoie pour vérification des script pour que cela re fonctionne correctement ?

Merci.

Share this post


: post
Share on other sites

Posted · Report post

Bonjour coach,

le fichier qui est appelé par le serveur paypal est modules/paypal/ipn.php. Vous pouvez placer la fonction mail() de php correctement paramétré pour suivre l'activité de votre module paypal. Par exemple, vous pouvez placer un départ d'email en tête du fichier pour savoir si il est effectivement appelé par le serveur de paypal, un autre dans le test

					if ($payment_status == "Completed") {
$peel_status = 3;
}
[/code]

pour savoir si le paiement qui a eu lieu est effectivement réglé.

Autre chose, avez vous reçu un email dont le titre commence par

Alerte : Montant de la transaction Paypal

Cela donnera des informations nécessaire au débogage.

Merci.

Share this post


: post
Share on other sites

Posted · Report post

Bonjour.

Je met une copie du fichier en question dans le post suivant, (pas pu le mettre en pièce jointe)

Je reçois toujours les mail automatique venant de paypal qui m'indique par exemple : Objet nº 106 - Avis de réception.

Par contre, sur mon admin dans "vente de produit numérique", les mails de partent plus et le statut reste invariablement en "attente de paiement." Du coup je dois intervenir pour activer l'envoi du mail, ce qui ralentie la vitesse des livraisons.

Merci

Share this post


: post
Share on other sites

Posted · Report post

<?php

// This file should be in UTF8 without BOM - Accents examples : éèê

// +----------------------------------------------------------------------+

// | Copyright © 2004-2011 Advisto SAS, service PEEL - contact@peel.fr |

// +----------------------------------------------------------------------+

// | This file is part of PEEL Shopping 6.0, which is subject to an |

// | opensource GPL license: you are allowed to customize the code |

// | for your own needs, but must keep your changes under GPL |

// | More information: http://www.peel.fr/lire/licence-gpl-70.html'>http://www.peel.fr/lire/licence-gpl-70.html |

// +----------------------------------------------------------------------+

// | Author: Advisto SAS, RCS 479 205 452, France, http://www.peel.fr/ |

// +----------------------------------------------------------------------+

// $Id: ipn.php 14603 2011-02-18 16:00:21Z sdelaporte $

include("../../configuration.inc.php");

// Ce fichier est appelé directement pas Paypal après chaque transaction, échouée ou fructueuse

$req = 'cmd=_notify-validate';

foreach ($_POST as $key => $value) {

$req .= "&" . $key . "=" . urlencode($value);

}

// post back to PayPal system to validate

$header = "POST /cgi-bin/webscr HTTP/1.0\r\n";

$header .= "Content-Type: application/x-www-form-urlencoded\r\n";

$header .= "Content-Length: " . String::strlen($req) . "\r\n\r\n";

$fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30);

$item_name = $_POST['item_name'];

$item_number = intval($_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'];

// $pending_reason = $_POST['pending_reason'];

// $txn_type = $_POST['txn_type'];

if (!$fp) {

// HTTP ERROR

mail($support, 'Problème d\'échange de données Paypal IPN', 'Un paiement n\'a pas pu être pris en compte pour des raisons techniques. L\'IP du serveur qui a voulu confirmer une transaction est : ' . $_SERVER['REMOTE_ADDR']);

} else {

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

while (!feof($fp)) {

$res = fgets ($fp, 1024);

if (strcmp ($res, "VERIFIED") == 0) {

if ($payment_status == "Completed") {

$peel_status = 3;

send_mail_product_download($item_number);

} elseif ($payment_status == "Pending") {

$peel_status = 2;

} elseif ($payment_status == "Failed") {

$peel_status = 6;

} elseif ($payment_status == "Denied") {

$peel_status = 6;

} elseif ($payment_status == "Refunded") {

$peel_status = 9;

}

} elseif (strcmp ($res, "INVALID") == 0) {

$peel_status = 6;

}

if (!empty($peel_status)) {

update_order_payment_status($item_number, $peel_status);

unset($peel_status);

}

}

fclose ($fp);

}

?>

Share this post


: post
Share on other sites

Posted · Report post

Bonjour Coach,

Le fichier que vous m'avez transmis n'a pas de problème. Je vous propose d'ajouter des départs d'email à différents endroits du fichier, en plus de ceux reçu par paypal. Pour cela, il faut utiliser la fonction PHP mail() de cette façon :

mail ( 'votre_adresse_email' , 'EMAIL DE SUIVI MODULE PAYPAL - ipn.php' , 'ligne XXXX atteinte.');

Vous pouvez consulter cette page pour plus d'informations sur la fonction : http://www.php.net/manual/fr/function.mail.php

Simon.

Share this post


: post
Share on other sites

Posted · Report post

Bonjour Simon

J'ai oublier de préciser que j'avais fait faire par vos services une modification de ma boutique. En effet j'avais demander une prestation technique qui consistait à ce que les mail avec le lien vers le e-book soit envoyer automatiquement dès que le statut de la commande est réglée.

Dans ce cas est ce que l'erreur ne viendrait pas plutot du fichier qui pilote le statut de la commande ?

En effet, les commande réglé reste affiché avec le statut "en attente de paiement". Chose qui ne se produisait pas auparavant.

Je pense que si le statut se met à jour cela va résoudre le problème.

Quel est le fichier en question ?

Merci d'avance

Share this post


: post
Share on other sites

Posted · Report post

Bonjour coach,

Il y a plusieurs cause possible à votre problème. L'idée est de collecter des informations pour déterminé la cause du problème. Je souhaite donc procéder par étape, et par le début. Ajouter des emails de suivi dans le fichier ipn.php sert à savoir si ce fichier est appelé, et en mettant des emails différent à différents endroit du code permet de savoir si la fonction de mise à jour de statut est atteinte. Dans le cas contraire, il faut résoudre d'abord ce premier problème.

Ensuite, si la fonction est correctement appelé, nous continuerons l'investigation jusqu’à savoir ce qui pose problème. Il n'y aura plus qu'a corriger le problème.

Vous pouvez tester la fonction de mise à jour de statut depuis le back office, puisque cette fonction est la même qui est utilisé dans le fichier ipn.php.

Cette fonction s'appel update_order_payment_status() et est défini dans le fichier lib/fonctions/order.php

Simon.

Share this post


: post
Share on other sites

Posted · Report post

Bonjour.

J'ai ajouté les fonction que vous m'avez recommandé au début du fichier (voir ci dessous en gras et en bleu les fonction ajoué). Est ce que c'est comme ça qu'il faut faire ? et Que dois je faire, attendre une commande ?

<?php

// This file should be in UTF8 without BOM - Accents examples : éèê

// +----------------------------------------------------------------------+

// | Copyright © 2004-2011 Advisto SAS, service PEEL - contact@peel.fr |

// +----------------------------------------------------------------------+

// | This file is part of PEEL Shopping 6.0, which is subject to an |

// | opensource GPL license: you are allowed to customize the code |

// | for your own needs, but must keep your changes under GPL |

// | More information: http://www.peel.fr/lire/licence-gpl-70.html'>http://www.peel.fr/lire/licence-gpl-70.html |

// +----------------------------------------------------------------------+

// | Author: Advisto SAS, RCS 479 205 452, France, http://www.peel.fr/ |

// +----------------------------------------------------------------------+

// $Id: ipn.php 13366 2011-01-01 18:54:18Z gboussin $

include("../../configuration.inc.php");

// Ce fichier est appelé directement pas Paypal après chaque transaction, échouée ou fructueuse

if ($payment_status == "Completed") {

$peel_status = 3;

}

mail ( 'contact@velo2max.com' , 'EMAIL DE SUIVI MODULE PAYPAL - ipn.php' , 'ligne XXXX atteinte.');

$req = 'cmd=_notify-validate';

foreach ($_POST as $key => $value) {

$req .= "&" . $key . "=" . urlencode($value);

}

// post back to PayPal system to validate

$header = "POST /cgi-bin/webscr HTTP/1.0\r\n";

$header .= "Content-Type: application/x-www-form-urlencoded\r\n";

$header .= "Content-Length: " . String::strlen($req) . "\r\n\r\n";

$fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30);

$item_name = $_POST['item_name'];

$item_number = intval($_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'];

// $pending_reason = $_POST['pending_reason'];

// $txn_type = $_POST['txn_type'];

if (!$fp) {

// HTTP ERROR

mail($support, 'Problème d\'échange de données Paypal IPN', 'Un paiement n\'a pas pu être pris en compte pour des raisons techniques. L\'IP du serveur qui a voulu confirmer une transaction est : ' . $_SERVER['REMOTE_ADDR']);

} else {

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

while (!feof($fp)) {

$res = fgets ($fp, 1024);

if (strcmp ($res, "VERIFIED") == 0) {

if ($payment_status == "Completed") {

$peel_status = 3;

} elseif ($payment_status == "Pending") {

$peel_status = 2;

} elseif ($payment_status == "Failed") {

$peel_status = 6;

} elseif ($payment_status == "Denied") {

$peel_status = 6;

} elseif ($payment_status == "Refunded") {

$peel_status = 9;

}

} elseif (strcmp ($res, "INVALID") == 0) {

$peel_status = 6;

}

if (!empty($peel_status)) {

update_order_payment_status($item_number, $peel_status);

unset($peel_status);

}

}

fclose ($fp);

}

?>

Share this post


: post
Share on other sites

Posted · Report post

Bonjour coach,

Je vous propose plutôt ceci :

<?php

// This file should be in UTF8 without BOM - Accents examples : éèê

// +----------------------------------------------------------------------+

// | Copyright © 2004-2011 Advisto SAS, service PEEL - contact@peel.fr |

// +----------------------------------------------------------------------+

// | This file is part of PEEL Shopping 6.0, which is subject to an |

// | opensource GPL license: you are allowed to customize the code |

// | for your own needs, but must keep your changes under GPL |

// | More information: http://www.peel.fr/l...nce-gpl-70.html'>http://www.peel.fr/l...nce-gpl-70.html |

// +----------------------------------------------------------------------+

// | Author: Advisto SAS, RCS 479 205 452, France, http://www.peel.fr/ |

// +----------------------------------------------------------------------+

// $Id: ipn.php 13366 2011-01-01 18:54:18Z gboussin $

include("../../configuration.inc.php");

// Ce fichier est appelé directement pas Paypal après chaque transaction, échouée ou fructueuse

$req = 'cmd=_notify-validate';

foreach ($_POST as $key => $value) {

$req .= "&" . $key . "=" . urlencode($value);

}

// post back to PayPal system to validate

$header = "POST /cgi-bin/webscr HTTP/1.0\r\n";

$header .= "Content-Type: application/x-www-form-urlencoded\r\n";

$header .= "Content-Length: " . String::strlen($req) . "\r\n\r\n";

$fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30);

$item_name = $_POST['item_name'];

$item_number = intval($_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'];

// $pending_reason = $_POST['pending_reason'];

// $txn_type = $_POST['txn_type'];

if (!$fp) {

// HTTP ERROR

mail($support, 'Problème d\'échange de données Paypal IPN', 'Un paiement n\'a pas pu être pris en compte pour des raisons techniques. L\'IP du serveur qui a voulu confirmer une transaction est : ' . $_SERVER['REMOTE_ADDR']);

} else {

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

while (!feof($fp)) {

$res = fgets ($fp, 1024);

if (strcmp ($res, "VERIFIED") == 0) {

if ($payment_status == "Completed") {

mail ( 'contact@velo2max.com' , 'EMAIL DE SUIVI MODULE PAYPAL - ipn.php' , 'ligne 46 atteinte.');

$peel_status = 3;

} elseif ($payment_status == "Pending") {

$peel_status = 2;

} elseif ($payment_status == "Failed") {

$peel_status = 6;

} elseif ($payment_status == "Denied") {

$peel_status = 6;

} elseif ($payment_status == "Refunded") {

$peel_status = 9;

}

} elseif (strcmp ($res, "INVALID") == 0) {

$peel_status = 6;

}

if (!empty($peel_status)) {

update_order_payment_status($item_number, $peel_status);

unset($peel_status);

}

}

fclose ($fp);

}

?>

La différence avec votre version est que le mail se situe à un endroit où l'on est sur que la commande est réglé. J'ai également mis le numéro de ligne dans le corp de l'email.

Simon.

Share this post


: post
Share on other sites

Posted · Report post

J'ai donc intégrer le fichier après avoir fait la modification suggéré sur le fichier modules/paypal/ipn.php

Mais lors des nouvelles commande, je rencontre le même problème *

Pas d'envoi du mail automatique avec le lien de téléchargement

Le statut de commande reste : En attente de paiement, même si le paiement est effectué, et même si je valide l'envoi du Ebook.

Je me demande si ce n'est pas sur le statut de commande que cela bug ?

merci de vos futur conseil

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

avez-vous reçu le mail que vous avez intégré au fichier ipn.php ? Le but est de savoir si ce fichier à correctement été appeler par le serveur paypal.

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

avez-vous reçu le mail que vous avez intégré au fichier ipn.php ? Le but est de savoir si ce fichier à correctement été appeler par le serveur paypal.

Bonjour.

Non je n'ai pas reçu de mail.

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Le problème est déjà que votre fichier ipn.php n'est pas appelé par le serveur paypal.

pouvez-vous regarder si la ligne


<input type="hidden" name="notify_url" value="' . String::str_form_value($GLOBALS['wwwroot'] . '/modules/paypal/ipn.php') . '" />
[/CODE]

est bien présente dans le fichier modules\paypal\fonctions.php ?

Share this post


: post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

Twitter Advisto ecommerce

Facebook PEEL Shopping