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
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
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(){
}
}
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
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