Bonjour,
je suis un débutant en train de suivre le tutoriel CakePHP - Créer un système d'abonnement.
Au clic sur le bouton s'abonner j'ai les erreurs suivantes :
/app/Model/Transaction.php (line 48)
array(
'TIMESTAMP' => '2014-10-29T13:05:16Z',
'CORRELATIONID' => '431c91f43e5c0',
'ACK' => 'Failure',
'VERSION' => '87',
'BUILD' => '000000',
'L_ERRORCODE0' => '10002',
'L_SHORTMESSAGE0' => 'Security error',
'L_LONGMESSAGE0' => 'Security header is not valid',
'L_SEVERITYCODE0' => 'Error'
)
Y a-t-il une âme charitable pour m'orienter ?!!
Bonjour.
Pourrais-tu nous en dire plus s'il te plaît ?
Je suppose que tu parles du tutoriel concernant le système d'abonnement via PayPal ?
Le code que tu as mit est suffisamment compréhensible actuellement, mais à l'avenir, penses à mettre tes codes dans la balise appropriée, si possible.
Pour en revenir au problème, il est possible que l'APi de PayPal ait eu des modifications et de ce fait causer des erreurs qui ne devraient pas avoir lieu normalement.
Donc si tu pouvais nous détailler un peu plus le problème, nous pourrions t'aider plus efficacement.
Merci Lartak11 pour ta généreuse intervention.
J'étais presque sûr (après une semaine de barbotage) que ça venait de
l'API paypal vu le code erreur 10002
(https://developer.paypal.com/webapps/developer/docs/classic/api/errorcodes/).
Mais quand je vérifie mes informations d'identification pour la SANDBOX :
https://api-3t.sandbox.paypal.com/nvp?&user=xxxxxxxxxx&pwd=xxxxxxxxxx&
signature=xxxxxxxxxx&version=70.
0&METHOD=SetExpressCheckout&RETURNURL=http://www.paypal.com/test.php&CANCELURL=
http://www.paypal.com/test.php&PAYMENTACTION=Sale&AMT=50&CURRENCYCODE=USD
J'obtiens :
TOKEN=EC%2d6WX96774YB3654739&TIMESTAMP=2014%2d10%2d29T17%3a27%3a58Z&
CORRELATIONID=9b8f3d0c4e1f9&ACK=Success&VERSION=70%2e0&BUILD=13565888
Je vois ACK=Success alors que le code me donne 'ACK' => 'Failure',
/app/Model/Transaction.php (line 48)
array(
'TIMESTAMP' => '2014-10-29T17:51:41Z',
'CORRELATIONID' => '26aa7bf26f5cb',
'ACK' => 'Failure',
'VERSION' => '87',
'BUILD' => '000000',
'L_ERRORCODE0' => '10002',
'L_SHORTMESSAGE0' => 'Security error',
'L_LONGMESSAGE0' => 'Security header is not valid',
'L_SEVERITYCODE0' => 'Error'
)
Voici le code (je pense qu'il a été réalisé en 2012. Je me demande
s'il ne faut pas revoir le parametrage.):
<?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' => 'business='.Configure::read('Paypal.mail'),
'L_BUTTONVAR1' => "item_name=$name",
'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),
'L_BUTTONVAR8' => "custom=$custom",
);
$request = http_build_query($request);
// debug($request); die();
$curlOptions = array(
CURLOPT_URL => "https://api-3t.".Configure::read('Paypal.sandbox')."paypal.com/nvp",
CURLOPT_VERBOSE => 1,
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_SSL_VERIFYHOST => 2,//au départ c'est 1 que j'ai remplacé par 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_errno($ch)); die();
return false;
}else{
curl_close($ch);
parse_str($response,$responseArray);
//debug($responseArray); die();
}
//debug($response); die();
}
}
Merci encore