Bonjour,
Après avoir suivi le tutorial Cakephp-paypal avec succès, j'essai d'ajouter un mon système la possibilité d'envoyer plusieurs articles (le panier de l'utilisateur) à paypal. Ainsi lorsqe mon utilisateur arrive sur paypal, il saura exactement quels produits il paie.
Pour ce faire, j'ai modifier le model transaction de mon projet comme suit:
function requestPaypal($price, $name, $custom){
$price = number_format($price, 2);
$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' => 'PRODUCTS',
'L_BUTTONVAR0' => 'business='.Configure::read('Paypal.mail'),
'L_BUTTONVAR1' => "currency_code=CHF",
'L_BUTTONVAR2' => "no_note=1",
'L_BUTTONVAR3' => "notify_url=".Router::url('/paiements/notification',true),
'L_BUTTONVAR4' => "return=".Router::url('/paiements/success',true),
'L_BUTTONVAR5' => "cancel=".Router::url('/paiements/cancel',true),
'L_BUTTONVAR6' => "custom=1"
);
//Va permettre d'incrémenter le numéro de L_BUTTONVAR
$i = 7;
//Permet de savoir sur quel item on travail
$j = 1;
//On va traverser le tableau des produits
foreach ($custom['panier'] as $key => $produit) {
if(!empty($produit['prix_avec_rabais']) && $produit['prix_avec_rabais'] < $produit['Produit']['prix']){
$produit['Produit']['prix'] = $produit['prix_avec_rabais'];
}
//Ajout du titre de l'article dans la variable paypal
$request['L_BUTTONVAR'.$i] = 'item_name_'.$j.'='.$produit['Produit']["nom"];
$i++;
$request['L_BUTTONVAR'.$i] = "item_number_".$j."=".$produit['Produit']['id'];
$i++;
$request['L_BUTTONVAR'.$i] = "amount_".$j."=".$produit['Produit']['prix'];
$i++;
$request['L_BUTTONVAR'.$i] = "quantity_".$j."=".$produit['quantite'];
$i++;
$j++;
}
$request = http_build_query($request);
$curlOptions = array(
CURLOPT_URL => "https://api-3t.".Configure::read('Paypal.sandbox')."paypal.com/nvp",
CURLOPT_VERBOSE => 1,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_CAINFO => APP.'Vendor'.DS.'cacert.pem',
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_POSTFIELDS => $request,
CURLOPT_HTTPHEADER => array( 'Expect:','Connection: Close')
);
$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);
/*$responseArray['WEBSITECODE'] = str_replace('"_s-xclick"','"_cart"',$responseArray['WEBSITECODE']);
die(debug($responseArray['WEBSITECODE']));*/
return $responseArray['EMAILLINK'];
}
Cette fonction "requestPaypal" génère un lien et mon utilisateur est redirigé sur paypal. Sauf que sur paypal, aucun item n'est visible. C'est indiqué à l'utilisateur d'ajouter ces articles. Ce qui n'est pas du tout ce que je souhaite faire.
Voir capture d'écran:
Comment puis-je faire pour faire fonctionner ce système de bouton générer via le model.
Je sais qu'il m'est possible d'utiliser un formulaire html sur ma view affichante le bouton paypal, mais je trouve que cette solution n'est pas top..l'utilisateur pouvant facilement modifier les valeurs des inputs paypal..
MERCI D'AVANCE