Bonjour.
Je poste aujourd'hui car depuis plusieurs semaines de travaille je n'est toujours pas trouver la solution à mon problème.
En gros j'ai créée un système de payement Paypal sur un site utilisant un model MVC. J'ai don créée un contrôleur Paypal qui gère le payement grâce au script ipn (celui de grafikart) mais le problème c'est que quand le payemnt se produit Paypal appelé bien ma page. Mais je n’arrive pas a exécute des des fonction et je suis obliger de refaire une connexion a ma BBD. Qui normalement ne devrais pas se faire vue que la connexion est déjà pressente dans mon contrôleurs frontal.
Donc en gros si j’exécute se code la il sera parfaitement exécuté : (fichier inclus dans l’exécution ipn si payement ok )
[code] $bd = new PDO('mysql: ; dbname= ', ' ', ' ');
$bd->query("SET NAMES 'utf8'");

                  // donne le statut  
                $req = $bd->prepare("UPDATE compte SET lot= 1337 WHERE id = :id");
                $req->execute(array(':id' => $id));
                $req->closeCursor();

                // récupére le nom de compte associer a l'id 

                $req = $bd->prepare('SELECT compte FROM   compte WHERE id = :id');
                $req->bindValue(':id',$id, PDO::PARAM_STR);
                $req->execute();
                $nb = $req->fetch();
                $req->closeCursor();  

                //inset dans le log 

                $req = $bd->prepare('INSERT INTO logs_boutique(Achat, Solde, Joueur, Detail) VALUES(:achat, :solde, :joueur, :detail)');
                $req->bindValue(':achat', $item_name, PDO::PARAM_STR);
                $req->bindValue(':solde', $payment_amount, PDO::PARAM_INT);
                $req->bindValue(':joueur',$nb['compte'], PDO::PARAM_STR);
                $req->bindValue(':detail', $detail, PDO::PARAM_STR);
                $req->execute();
                $req->closeCursor();

                ?>[/code]

Donc cela fonctionne mais ce n'est pas très prope mois je voudrais faire ça :
[code]
$bd = new PDO('mysql: ; dbname= ', ' ', ' ');
$bd->query("SET NAMES 'utf8'");

                  function donneLot($bd) {  
                $req = $bd->prepare("UPDATE compte SET lot= 1337 WHERE id = :id");
                $req->execute(array(':id' => $id));
                $req->closeCursor();
                   }
                // récupére le nom de compte associer a l'id 
                function recuId($bd) {
                $req = $bd->prepare('SELECT compte FROM   compte WHERE id = :id');
                $req->bindValue(':id',$id, PDO::PARAM_STR);
                $req->execute();
                $nb = $req->fetch();
                $req->closeCursor();  
                }
                //inset dans le log 
               function donneLot($bd,$item_name,$payment_amount,$detail) {
                $req = $bd->prepare('INSERT INTO logs_boutique(Achat, Solde, Joueur, Detail) VALUES(:achat, :solde, :joueur, :detail)');
                $req->bindValue(':achat', $item_name, PDO::PARAM_STR);
                $req->bindValue(':solde', $payment_amount, PDO::PARAM_INT);
                $req->bindValue(':joueur',$nb['compte'], PDO::PARAM_STR);
                $req->bindValue(':detail', $detail, PDO::PARAM_STR);
                $req->execute();
                $req->closeCursor();
                  } 

[/code]
Et donc juste inclure dans mon script ipn : function donneLot($bd); function recuId($bd); etc ..
dans cela (bout de script ipn )
[code]
// En dev mettre Pending en prod Completed
if ( $payment_status == "Pending") {
//vérification de l'email si = a émail
if ( $email_account == $receiver_email) {
//bon regard que le mec veut pas nous arnaquér
if ( $payment_amount == $sommeTotalJr) {

                    include_once dirname(__FILE__).'/../../modeles/general/paypal.php';

                 file_put_contents('log.txt', print_r($_POST,true));
        }
        else 
        { //tentative de fraude 
          file_put_contents('log.txt', 'Tentative de fraude avec l\'ip '.$_SERVER['REMOTE_ADDR'].'.'); 

                }
            }

[/code]

J'esper que vous pourrez me venir en aide
cordialement.

j'ai une 2e question est t'il possible de faire passer plusieurs champ dans custom ?

Aucune réponse