Veuillez vous connecter ou créer un compte pour suivre ce topic
Ce topic est suivi par: Personne...
Ce topic a été résolu
Auteur Sujet: Paypal Express Checkout

Ranarxhag

Messages: 51

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*** Tire la langue

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 Clin d'oeil
Publicité

Dwardower

Messages: 121

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

Messages: 51

Effectivement.. mais il me semble qu'ils ont bien fait leur truc Tire la langue

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

Messages: 121

Le problème est donc réglé ?

Ranarxhag

Messages: 51

Yep Clin d'oeil


Veuillez vous connecter ou créer un compte pour poster une réponse