Bonjour à tous,
j'ai actuellement un souci au niveau de la connexion à Paypal via CakePHP. J'ai suivi le tuto, mon site est sur un serveur web et l'extension cURL est bien activé. Je précise que je tourne sous CakePHP2.2.2.
Voici le code situé dans mon model Transaction :
public function requestPaypal($price){
// Tableau de configuration du bouton Paypal
$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' => 'business='.Configure::read('Paypal.mail'),
'L_BUTTONVAR1' => 'item_name=Jeu du tir Gun Shop',
'L_BUTTONVAR2' => 'amount='.$price,
'L_BUTTONVAR3' => 'currency_code=EUR',
'L_BUTTONVAR4' => 'no_note=1',
'L_BUTTONVAR5' => 'notify_url='.Router::url('/paypal/notify', true),
'L_BUTTONVAR6' => 'return='.Router::url('/paypal/success', true),
'L_BUTTONVAR7' => 'cancel='.Router::url('/paypal/cancel', true)
);
// Création d'une url valide
$request = http_build_query($request);
// Tabelau de configuration de cURL
$curlOptions = array(
CURLOPT_URL => 'https://api-3t.' . Configure::read('Paypal.sandbox') . 'paypal.com/nvp',
CURLOPT_VERBOSE => 1,
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_SSL_VERIFYHOST => 1,
CURLOPT_CAINFO => APP.'Vendor'.DS.'cacert.pem',
CURLOPT_RETURNTRANSFERT => 1,
CURLOPT_POSTFIELDS => $request
);
// Initialisation de cURL et envoi sécurisé à Paypal
$init = curl_init();
curl_setopt_array( $init, $curlOptions );
$response = curl_exec( $init );
// Vérification des retours de données Paypal
if( curl_errno($init) ){
return false;
}else{
curl_close( $init );
parse_str( $response, $responseArray );
return $responseArray'EMAILLINK'];
}
}
Lorsque j'appel cette méthode depuis mon Controller :
public function index(){
// Chargement de la configuration
$this->loadModel('Setting');
$config = $this->Setting->getConfig('paypal');
// Chargement et lancement de la transaction
$this->loadModel('Transaction');
$url = $this->Transaction->requestPaypal( $config'paypal_amount'] );
// Redirection vers URL si elle existe
if( $url ) $this->redirect( $url );
}
J'ai des erreurs dans ma vue :
Notice (8): Use of undefined constant CURLOPT_RETURNTRANSFERT - assumed 'CURLOPT_RETURNTRANSFERT' [APP/Model/Transaction.php, line 37]
Warning (2): curl_setopt_array() [function.curl-setopt-array]: Array keys must be CURLOPT constants or equivalent integer values [APP/Model/Transaction.php, line 43]
ACK=Failure&L_ERRORCODE0=81002&L_SHORTMESSAGE0=Unspecified%20Method&L_LONGMESSAGE0=Method%20Specified%20is%20not%20Supported&L_SEVERITYCODE0=Error
Warning: get_class() expects parameter 1 to be object, resource given in /misc/9/000/263/732/2/user/web/gunshop.soft-monkey.com/lib/Cake/Utility/Debugger.php on line 574
Warning: get_object_vars() expects parameter 1 to be object, resource given in /misc/9/000/263/732/2/user/web/gunshop.soft-monkey.com/lib/Cake/Utility/Debugger.php on line 580
Warning: Invalid argument supplied for foreach() in /misc/9/000/263/732/2/user/web/gunshop.soft-monkey.com/lib/Cake/Utility/Debugger.php on line 581
Notice (8): Undefined index: EMAILLINK [APP/Model/Transaction.php, line 52]
Je ne sais pas d'ou peut venir le problème. Est-ce que cela vient de cURL ou bien peut être que depuis le tuto, des mises à jour ont été faite du côté Paypal ce qui expliquerai pourquoi cela ne marche pas?
Merci d'avance pour votre aide.
PS : Désolé pour le long post
le premier message d'erreur indique que la constante CURLOPT_RETURNTRANSFERT n'existe pas. la bonnne constante ne serait-elle pas : CURLOPT_RETURNTRANSFER (sans le T ?)
Les autres messages découlent surement de cette première erreur.
Merci maxfr, j'ai pas les yeux en face des trous ce soir moi.
Bon aller dodo, sa ira mieux demain.
Merci encore