Paypal Express Checkout
- Accueil
- Forum
- Programmation
- PHP
- Paypal Express Checkout
Ranarxhag Le 20 avril 2016 à 00:45 (Édité le 25 janvier 2019 à 17:50)
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 Le 20 avril 2016 à 09:29 (Édité le 1 janvier 1970 à 01:00)
Regarde les autres topics vite fait (pas trop vieux non plus) j'y ai mis le code php pour faire afficher les erreurs
Ranarxhag Le 20 avril 2016 à 10:16 (Édité le 1 janvier 1970 à 01:00)
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.