Bonjour,

j'essai de mettre un systeme de paiement sur mon site jai regardé le tuto de grafikart sur cakephp (systeme d abonnement ) je l'ai adapté à mon cas mais le probleme le notify url n'est jamais appelé et pourtant l url de succes est appelé a la fin de la transaction (pas d'insertion a la base de donnée) merci pour votre aide

Ce que je fais

 public function notify(){
    debug("coucou");die("notify");
        $email_account = Configure::read('Paypal.mail');
        $req = 'cmd=_notify-validate';

        foreach ($_POST as $key => $value) {
            $value = urlencode(stripslashes($value));
            $req .= "&$key=$value";
        }

        $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('ssl://www.'.Configure::read('Paypal.sandbox').'paypal.com', 443, $errno, $errstr, 30);

        $item_name        = $_POST['item_name'];
        $item_number      = $_POST['item_number'];
        $payment_status   = $_POST['payment_status'];
        $payment_amount   = $_POST['mc_gross'];
        $payment_tax      = $_POST['tax'];
        $payment_ht       = $payment_amount - $payment_tax;
        $payment_currency = $_POST['mc_currency'];
        $address          = $_POST['address_street'];
        $country          = $_POST['address_country'];
        $city             = $_POST['address_city'];
        $name             = $_POST['address_name'];
        $txn_id           = $_POST['txn_id'];
        $receiver_email   = $_POST['receiver_email'];
        $payer_email      = $_POST['payer_email'];
        parse_str($_POST['custom'],$custom);

       $this->log($_POST, 'paypal');
        if (!$fp) {

        } else {
            fputs ($fp, $header . $req);
            while (!feof($fp)) {
                $res = fgets ($fp, 1024);
                if (strcmp ($res, "VERIFIED") == 0) {
                     $this->log('paypal','paiement');
                    // vérifier que payment_status a la valeur Completed
                    if ( $payment_status == "Completed") {
                        if ( $email_account == $receiver_email) {

                           //debug($custom);die();

                            if($custom['action'] == 'Paypalpayment'){

                                $this->Soutiens->save([
                                    'price' => $payment_ht,
                                    'tax'   => $payment_tax,
                                    'txnid' => $txn_id,

                                    'action' => 'paiement',

                                    'name'=> $name,
                                    'country'=> $country,
                                    'city'  => $city,
                                    'address'=> $address
                                ]);

                            }

                        }
                    }
                    else {
                        // Statut de paiement: Echec
                        $this->log('echec','paiement');
                    }
                    exit();
                }
                else if (strcmp ($res, "INVALID") == 0) {
                    // Transaction invalide
                }
            }
            fclose ($fp);
        }
    }

4 réponses


as tu bien fait la config sur ton compte paypal ?
Et est ce que paypal est capable de rejoindre ton site( Heberger en ligne ou configurer ta box pour que ton serveur soie rejoignable ? ) ?

tincode
Auteur

bonjour oui mon appli est en ligne et tout est bien configuré car jai les notif dans le dashboard de paypal. je suis déja passé à Stripe car cest facile et simple à utilisé

Bonjour.

je suis déja passé à Stripe car cest facile et simple à utilisé

Tu n'utilises donc plus PayPal mais Stripe si je comprends bien, il n'est donc plus utile de te répondre à ce sujet puisque tu as abandonné PayPal pour ton système de paiement.

tincode
Auteur

Cest en attendant de trouver une solution pour paypal. Les 2 technos seront présentes sur l'appli