Paypal Express Checkout

Suivre ce topic
Ce topic est suivi par : Personne...
Ce topic a été résolu
Ranarxhag

Ranarxhag Le 20 avril 2016 à 00:45 (Édité le 25 janvier 2019 à 17:50)

Salut les gars !

Pour le site Web d'un client, je dois réaliser un système d'abonnement en utilisant Paypal. Première fois que je fais ça et je me tourne direct vers Paypal Express Checkout. Seulement, le serveur sur lequel je travaille est un hébergement gratuit et ils ont désactivés l'affichage des erreurs donc me voilà.. dans la mer*** 😋

La transaction se déroule bien mais là où ça coince, c'est au niveau de la modification en base de donnée. Bizarrement, j'ai une erreur 500 (au lieu d'une erreur bien expliquée mais vu qu'ils ont désactivés...).

Je vous ai commenté mon code pour vous montrer à partir de où ça coince.

<?php
if(isset($_GET['id_abo']) AND $_GET['id_abo'] == 1)
{
   $product = array(
   "name" => "Abonnement Basic (1 maand)",
   "price"=> 12.0,
   "priceTVA" => 15.0,
   "count" => 1
   );
   
   require 'paypal.php';
   $paypal = new Paypal();
   $response = $paypal->request('GetExpressCheckoutDetails', array(
      'TOKEN' => $_GET['token']
   ));
   if($response){
      if($response['CHECKOUTSTATUS'] == 'PaymentActionCompleted'){
         die('Ce paiement a déjà été validé');
      }
   }else{
      var_dump($paypal->errors);
      die();
   }
   $params = array(
      'TOKEN' => $_GET['token'],
      'PAYERID'=> $_GET['PayerID'],
      'PAYMENTACTION' => 'Sale',
      'PAYMENTREQUEST_0_AMT' => $product['priceTVA'],
      'PAYMENTREQUEST_0_CURRENCYCODE' => 'EUR',
      'PAYMENTREQUEST_0_ITEMAMT' => $product['priceTVA']
   );
   
   $params['L_PAYMENTREQUEST_0_NAME1'] = $product['name'];
   $params["L_PAYMENTREQUEST_0_AMT1"] = $product['priceTVA'];
   $params["L_PAYMENTREQUEST_0_QTY1"] = $product['count'];
   $response = $paypal->request('DoExpressCheckoutPayment',$params);
   if($response){

      include('../../inc/db.php'); // Jusque ici, tout va bien...

      // A partir d'ici, ça ne fonctionne plus.. Si je retire ce bout de code, tout va bien. Si je le met, tout plante.. Il ne me semble pourtant pas avoir fait d'erreurs.
      $requser = $bdd->prepare('SELECT * FROM members WHERE id_member = ?');
      $requser->execute(array($_GET['id_user']));
      $userinfo = $requser->fetch();
      $insertidtransaction = $bdd->prepare('INSERT INTO orders(user_id, transaction_id, date_payment) VALUES(?, ?, NOW())');
      $insertidtransaction->execute(array($_GET['id_user'], $response['PAYMENTINFO_0_TRANSACTIONID']));
      $nowtime = time();
      if($userinfo['expiration_abo'] < $nowtime)
      {
      $update_abo = $bdd->prepare('UPDATE members SET id_abo = ?, expiration_abo = DATE_SUB(NOW(), INTERVAL -1 MONTH) WHERE id_member = ?');
      $update_abo->execute(array(1, $_GET['id_user']));
      
      header('Location: /account/galerie/abonnement/');
      }
      
   }else{
      var_dump($paypal->errors);
   }
} // Fin Basic 1 maand
?>

Voilà ! Donc c'est vraiment dans la condition if($response) { ... } qu'il y a un problème. Pile au moment du paiement..

Je vous remercie d'avance si vous pouviez m'éclairer !

Amicalement,
Ranarxhag 😉
Dwardower

Dwardower Le 20 avril 2016 à 09:29

Si les erreurs ne sont pas activées. Tu peux toujours les activées via pjp directement
Regarde les autres topics vite fait (pas trop vieux non plus) j'y ai mis le code php pour faire afficher les erreurs 
Ranarxhag

Ranarxhag Le 20 avril 2016 à 10:16

Effectivement.. mais il me semble qu'ils ont bien fait leur truc 😋

Mais j'ai trouvé la solution. A chaque fois que j'effectuais une requête pour extraire les données de ma base de donnée, ça plantait alors j'ai été re-vérifié et je n'étais pas retourné assez loin dans les dossiers (avec mon chemin absolu).

include('../../inc/db.php'); // C'est ce que j'avais fais.


include('../../../inc/db.php'); // C'est ce que j'aurais du faire.
Dwardower

Dwardower Le 20 avril 2016 à 10:55

Le problème est donc réglé ?
Ranarxhag

Ranarxhag Le 20 avril 2016 à 11:18

Yep 😉
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte