bonjour
j'ai suivie le tuto sur le système d'abonnement paypal mais j'ai un problème le paiement s'éffectue très bien mais j'ai pas le log de paypal dans mon dossier tmp,
l'erreur peut venir d'où?
merci

13 réponses


wenz
Auteur

ok désolé,
voici le code de mon modeèl transaction.php

<?php
class Transaction extends AppModel {
function requestPaypal($price,$name,$custom)
     {

     $request=array(
               'METHOD'=>'BMCreateButton',
               'VERSION'=>'87',
               'USER'=>Configure::read('Paypal.USER'),
               'PWD'=>Configure::read('Paypal.PWD'),
               'SIGNATURE'=>Configure::read('Paypal.SIGNATURE'),
               'BUTTONCODE'=>'HOSTED',
               'BUTTONTYPE'=>'BUYNOW',
               'BUTTONSUBTYPE'=>'SERVICES',
               'l_BUTTONVAR0'=>'buisness='.Configure::read('Paypal.mail'),
               'l_BUTTONVAR1'=> "item_name=$name",
               'l_BUTTONVAR2'=> "amount=$price",
               'l_BUTTONWAR3'=>"currency_code=EUR",
               'l_BUTTONVAR4'=>"no_note=1",
               'l_BUTTONVAR5'=>"notify=".Router::url('paypal/notify',true),
               'l_BUTTONVAR6'=>"return=".Router::url('paypal/success',true),
               'l_BUTTONVAR7'=>"cancel=".Router::url('paypal/cancel',true),
               'l_BUTTONVAR8'=>"custom=$custom",
               );

              $request= http_build_query($request);
               $curlOptions = array(
            CURLOPT_URL => "https://api-3t.sandbox.paypal.com/nvp",
            CURLOPT_VERBOSE => 1,
            CURLOPT_SSL_VERIFYPEER => true,
            CURLOPT_SSL_VERIFYHOST => 2,
            CURLOPT_CAINFO => APP.'Vendor'.DS.'cacert.pem',
            CURLOPT_RETURNTRANSFER => 1,
            CURLOPT_POSTFIELDS => $request
        );
            $ch = curl_init();
            curl_setopt_array($ch,$curlOptions);
            $response = curl_exec($ch);

        if(curl_errno($ch)){
            debug(curl_error($ch)); die();
            return false;
        }else{
            curl_close($ch);
            parse_str($response,$responseArray);
            return $responseArray'EMAILLINK'];
            die();

        }

     }

}

le code de ma fonction abonnement

public function abonnement() {
     if (!$this->Auth->user('id')) {
             $this->redirect('/users/login');
        }
        if(!empty($this->request->data)){
            $duration = $this->request->data'duration'];
            $uid = $this->Auth->user('id');
            if(Configure::read("Site.prices.$duration")){
               $price = number_format(Configure::read("Site.prices.$duration"),2);
               $name="abonnement $duration mois";
               $custom="action=abonnement&uld=$uid&duration=$duration";
               $this->loadModel('Transaction');
               $url=$this->Transaction->requestPaypal($price,$name,$custom);
               if($url){
                   $this->redirect($url);
               }

    }
        }
 }

merci

wenz
Auteur

j'ai pas compris ta question

Tes fonctions ne génèrent pas de log dans le code que je vois

wenz
Auteur

ok merci, normalement ça doit être comment?

wenz
Auteur

Grafikart Désolé voici le code de mon Paypalcontroller

<?php
class PaypalController extends AppController {
 Public $uses=array('User','Transaction');

     /**
    * Create a Bootstrap Modal
    * @param string $id the modal id
    * @param string $header the text in the header
    * @param string $body the content of the body
    * @param array $buttons informations about open, close and save buttons
    * @param array $options
    * @return string
    */

  public function 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_currency = $_POST'mc_currency'];
        $address=$_POST'address_street'];
        $country=$_POST'address_street'];
        $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');die();
        if (!$fp) {

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

        if ( $payment_status == "Completed") {
        if ( $email_account == $receiver_email) {

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

          public function succes() {

              }

          function cancel(){

             }

}
wenz
Auteur

svp personne n'a une idée à me donner, je ne sais plus d'ou vient le problème
merci

wenz
Auteur

Bonjour
quand j'ai deplacé le code de notify dans success j'ai le log de payapl mais j'ai juste un array, j'ai besoin de votre aide svp
et dans la vue succes j'ai cette erreur:

Notice (8): Undefined index: item_name [APP\Controller\PaypalController.php, line 38]

Notice (8): Undefined index: item_number [APP\Controller\PaypalController.php, line 39]

Notice (8): Undefined index: payment_status [APP\Controller\PaypalController.php, line 40]

Notice (8): Undefined index: mc_gross [APP\Controller\PaypalController.php, line 41]

Notice (8): Undefined index: mc_currency [APP\Controller\PaypalController.php, line 42]

Notice (8): Undefined index: address_street [APP\Controller\PaypalController.php, line 43]

Notice (8): Undefined index: address_street [APP\Controller\PaypalController.php, line 44]

Notice (8): Undefined index: address_city [APP\Controller\PaypalController.php, line 45]

Notice (8): Undefined index: address_name [APP\Controller\PaypalController.php, line 46]

Notice (8): Undefined index: txn_id [APP\Controller\PaypalController.php, line 47]

Notice (8): Undefined index: receiver_email [APP\Controller\PaypalController.php, line 48]

Notice (8): Undefined index: payer_email [APP\Controller\PaypalController.php, line 49]

Notice (8): Undefined index: custom [APP\Controller\PaypalController.php, line 50]

quelqu'un à une idée.

merci

Bonjour,

Je rencontre le même problème que toi, as-tu finalement résolu ton bug ? Si oui, peux-tu m'expliquer comment stp ?
Merci d'avance,

The-Devil

wenz
Auteur

Salut man,
je n'ai plus utiliser le système de graph, regarde ce lien si ça peut d'aider

Bonjour,

J'ai finalement, réussi à implementer le système décrit dans le tutoriel en y ajoutant quelques modifications.
Merci quand même de ta réponse,
Cordialement,

The-Devil

wenz
Auteur

ok ravi, mais dit moi tu as utiliser celui de graf ou le tuto que je t'ai envoyé?

J'ai utiliser le tutoriel, mais j'ai du faire quelques modifications.