Bonjour à tous
Je suis entraine de déveloper un sistème de payment sur mon site web avec Paypal. J'ai deux petit problèmes que je renconte.
Le didaticiel est le suivant :
1 J'écrit cette ligne dans mon controller PaypalController :
2014-12-03 22:20:49 Error: Tidy not executable.
$this->log($_POST,'paypal');
Pour voir les donné posté dans l'action notify de mon controller.
Je suis aller voir dans mon error.log car je ne voit pas le fichier paypal.log qui est créer dans mon tmp/log/
Il m'affiche :
2014-12-03 22:20:49 Error: Tidy not executable.
C'est un plugin "tidy " un module php que j'ai oublié d'installer sur ma machine vagrant. D'alleur comment on installe un module php sur une machine vagrant déjà. :( Je me rappelle plus comment,.
Je ne veux pas recommencer la configuration de ma machine vagrant.
2 J'ai une erreur de syntax qui me retourne quand la trasation est aprouvé par paypal sur ma vue success
Error: syntax error, unexpected ''name'' (T_CONSTANT_ENCAPSED_STRING), expecting ')' aroundFile: /var/www/local.dev/MusicalityMaker/app/Controller/PaypalController.php aroundLine: 60
En faite c'est dans la sauvegarde de transaction qui fait planter mon script au complet. Une fois la transation enregistré dans ma table mm_transactions je met le membre prenium selon sa duré de son abonnement choisi.
$this->Transaction->save(array(
'price' => $payment_ht,
'tax' => $payment_tax,
'txnid' => $txn_id,
'user_id' => $uid,
'action' => 'subscription',
'amount' => $duration
'name' => $name,
'cuntry' => $country,
'city' => $city,
'adress' => $address
));
Merci de votre aide en avance :P
Salut il te manque une virgule après $duration et pour installer tidy tu te connectes en ssh dessus et suivant l'os tu l'installes en ligne de commande
Je ne vois plus l'erreur mais, la transation n'est pas sauvegarder dans ma basse de donnée quand la transaction est un succès. Je ne vois pas le champ "end_subscription" remplit.
voici le code source de la sauvegarde de la transaction et de mettre le membre prenium :
if (!$fp) {
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0) {
// vérifier que payment_status a la valeur Completed
if ( $payment_status == "Completed") {
if ( $email_account == $receiver_email) {
if ($custom['action'] == 'subscription') {
$duration = $custom['duration'];
$uid = $custom['uid'];
if($payment_ht == Configure::read("subscriptions.prices.$duration")){
// Save the transaction in database
$this->loadMoel('Transaction');
$this->Transaction->save(array(
'price' => $payment_ht,
'tax' => $payment_tax,
'txnid' => $txn_id,
'user_id' => $uid,
'action' => 'subscription',
'amount' => $duration,
'name' => $name,
'cuntry' => $country,
'city' => $city,
'adress' => $address
));
// We put the member free to prenium with date of end
$this->User->id = $uid;
$date = new DateTime();
$date->add(new DateIntervcal("P".$duration."M"));
$this->User->saveField('User.end_subscription',$date->format('Y-m-d H:i:s'));
} else {
$this->log('teste','error');
}
}
}
} else {
// Statut de paiement: Echec
}
exit();
} else if (strcmp ($res, "INVALID") == 0) {
// Transaction invalide
}
}
fclose ($fp);
Vu sur la doc http://book.cakephp.org/2.0/fr/models/saving-your-data.html#model-savefield-string-fieldname-string-fieldvalue-validate-false
Lors de l’utilisation de cette méthode, $fieldName ne doit contenir que le nom du champ, pas le nom du model et du champ.
Donc je pense que tu dois faire un
$this->User->saveField('end_subscription',$date->format('Y-m-d H:i:s'));
Pour tidy un petit
sudo apt-get install php5-tidy
Suffira