Bonsoir !
Me voilà de retour parmi vous ! :) Il y a près d'un mois, j'ai posé une question sur le forum concernant le tutoriel Paypal Express Checkout et ensuite, j'ai fais une sorte de "pause" sur le codage pendant un moment et je n'ai donc plus vérifié le forum ni mon topic et le voilà maintenant fermé à tout nouveau message.
Le lien : https://www.grafikart.fr/forum/topics/21350
J'ai reçu deux réponses et je vous avoue ne pas trop savoir comment les implanter dans mon site.. et puis surtout, ça me parait très facile soudainement à intégrer. Est-ce que je dois simplement copier-coller leur réponses et les modifier à ma guise et ça fonctionne ?
Sinon, j'ai entendu parler de Wordpress mais je ne m'y étais jamais attardé. Il y a peu, j'ai été jeter un coup d'oeil et j'ai vu qu'il existait des plugins Paypal pour Wordpress et je me posais la question : est-il possible d'intégrer Wordpress et son plugin Paypal uniquement sur UNE page de mon site ? Ainsi, le plugin gère les payements pour les abonnements et modifie comme je le désire dans ma base de données.
Bref.. Un tas de questions qui doivent vous paraitre idiotes mais s'il y a bien un truc sur lequel je cale, c'est ce système de payement !
Je vous remercie énormément pour les réponses que vous m'apportez à chaque post au passage ! :)
Amicalement,
Boris
Bonjour,
Intégré Wordpress pour seulement une page de ton site serait presque impossible (je dis presque car il existe surement des moyens compliqués pour le faire).
Effectivement faire une vérification paypal est assé simple il te suffit de faire un bouton html du style:
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick" />
<input type="hidden" name="business" value="ton email paypal" />
<input type="hidden" name="item_name" value="le nom de ton article" />
<input type="hidden" name="amount" value="le prix en euro" />
<input type="hidden" name="currency_code" value="EUR" />
<input type="hidden" name="no_note" value="1" />
<input name="no-shipping" type="hidden" value="1">
<input name="tax" type="hidden" value="0.00">
<input name="bn" type="hidden" value="PP-BuyNowBF">
<input type="hidden" name="lc" value="FR" />
<input type="hidden" name="notify_url" value="l'url de vérification(très important)" />
<input type="hidden" name="cancel_return" value="l'url d'anulation de l'achat">
<input type="hidden" name="return" value="l'url de retour">
<button name="submit" type="submit" class="btn btn-primary" alt="PayPal - la solution de paiement en ligne la plus simple et la plus sécurisée !">Acheter</button>
</form>
Et ensuite dans ta page de vérification tu feras un code php dans ce genre:
<?php
header('Content-type: text/html; charset=utf-8');
// read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
// post back to PayPal system to validate
$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 ('www.paypal.com', 80, $errno, $errstr, 30);
// assign posted variables to local variables
$item_name = $_POST['item_name'];
$item_number = $_POST['item_number']; // id commande
$payer_email = $_POST['payer_email'];
$payment_status = $_POST['payment_status']; // Completed,
$payment_amount = $_POST['mc_gross']; //0.01
$receiver_email = $_POST['receiver_email'];
if (!$fp)
{
}
else
{
fputs ($fp, $header . $req);
while (!feof($fp))
{
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0)
{
if ($payment_status == "Completed")//Important pour être sur que l'achat a été effectué
{
if($receiver_email == "ton e-mail paypal")//Pour vérifier que tu es bien le bénéficiaire
{
if($payment_amount == "5.00")//Pour vérifier que la somme reçut est la bonne
{
//Ici tu mets le code a executé lorsque tu es sur que l'achat est effectué.
}
}
}
}
else if (strcmp ($res, "INVALID") == 0)
{
}
}
fclose ($fp);
}
?>
Donc le code que tu m'as donné fonctionne ? J'avais vu qu'il était possible de faire des payements via l'adresse émail paypal (Comme tu m'as montre juste au dessus je suppose) mais est-ce vraiment sécurisé et automatique ? Ça vaut le paypal express checkout ? :)
Je te remercie de ta réponse en tout cas !
Boris
Si tu fais bien les vérifications ça sera effectivement sécurisé et c'est automatisé oui.
Ok !
Bon je sais que je pose beaucoup de questions mais c'est vraiment un truc que je n'ai jamais fait auparavant donc j'ai un peu de mal :)
Comment je peux faire pour utiliser cela sur la version sandbox de PayPal ? Ainsi je pourrai faire autant de tests que je veux sans devoir vraiment payer :)
Je te remercie encore et encore de m'aider car j'étais vraiment paumé ! :)
Boris
Pour moi aussi c'était dur au debut. Et pour effectuer les tests je mettais le montant à 0.01 € (solutions de simplicité ) car je n'avais pas envie de chercher comment faire pour le tester avec la version développer de paypal mais si tu veux vraiment faire comme ça essaye de regarder dans les docs de paypal tout est expliqué il faut juste parler anglais.
Très bonne idée pour le 0,1€ ! C'est tout con mais je n'y avais pas pensé :D
Maintenant que j'ai fini la mise en page de la page d'achat je m'attaque à ton code quand je rentre et reviens pour les nouvelles !
Merci !!
Boris
Re-bonjour !
Je me suis un peu attardé sur le code et je pense que j'ai bien commencé mais là, je bloque à nouveau..
Pour ce qui est des URL de vérification, etc, dois-je mettre l'url au complet (http://www.coucou.com) ou alors j'indique juste un chemin tel que abonnement/verify.php ?
Ensuite, le code que tu m'as donné pour la page de vérification, puis-je le faire sur la même page où il y a les payements ? Je m'explique.
En fait, je dois faire un système d'abonnement et donc il y a plusieurs offres alors je pensais à vérifier si tel bouton a été cliqué, tu execute son code. Et à chaque bouton, il y aura des infos et des vérifications différentes concernant le prix, le nom de l'article, etc.
Et là, j'ai essayé avec un simple bouton pour la transaction mais je paye, l'argent part bien mais rien ne se modifie dans la base de données.. comme si la page verify.php n'était pas appelée :/
Tu dois mettre l'url au complet et non il faut que tu le fasses sur une page apart mais tu as moyen de passer tes paramètres personnalisé, je ne suis pas chez moi mais quand je rentres je te montres comment faire.
Bon, j'ai été voir le tutoriel Paypal de Grafikart sur la manière dont tu m'as dis de le faire un peu plus haut (je n'avais pas vu ce tuto :D uniquement celui sur Paypal Express Checkout). Mais d'après les commentaires, cette façon de faire n'est plus vraiment d'actualité seulement.. c'est la seule manière de faire qui me permet de comprendre ce que je fais. Est-ce que je peux toujours l'utiliser sans problèmes de sécurité ni quoi que ce soit ? :) Est-ce que cette façon de faire risque de disparaître ? :)
Je te remercie !
Boris
Je ne sais pas si ils ont prévu de supprimer cette méthode mais pour mon site je l'utilise encore et je n'ai aucun problème de sécurité ni compatibilité :)
<?php
header('Content-type: text/html; charset=utf-8');
// read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
// post back to PayPal system to validate
$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 ('www.sandbox.paypal.com', 443, $errno, $errstr, 30);
// assign posted variables to local variables
$item_name = $_POST['item_name'];
$item_number = $_POST['item_number']; // id commande
$payer_email = $_POST['payer_email'];
$payment_status = $_POST['payment_status']; // Completed,
$payment_amount = $_POST['mc_gross']; //0.01
$receiver_email = $_POST['receiver_email'];
$id_user = $_POST['custom'];
if (!$fp)
{
}
else
{
fputs ($fp, $header . $req);
while (!feof($fp))
{
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0)
{
if ($payment_status == "Completed")//Important pour être sur que l'achat a été effectué
{
if($receiver_email == "boris95098-facilitator@live.com")// L'adresse mail de mon compte sandbox
{
if($payment_amount == "50.00")//Pour vérifier que la somme reçut est la bonne
{
// Simple test pour voir si quelque chose se modifie
include('../../inc/db.php');
$abo = $bdd->prepare('UPDATE members SET abo_valide = ? WHERE id_member = ?');
$abo->execute(array(0, $id_user));
}
}
}
}
else if (strcmp ($res, "INVALID") == 0)
{
}
}
fclose ($fp);
}
C'est bizarre.. Rien ne se change en base de donnée. Mon code est-il erroné ?
Je peux voir ton html ?, j'ai repéré l'erreur mais pour te corriger j'ai besoin de ton code html.
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick" />
<input type="hidden" name="business" value="boris95098-facilitator@live.com" />
<input type="hidden" name="item_name" value="Abonnement Basic (1 maand)" />
<input type="hidden" name="amount" value="50.00" />
<input type="hidden" name="currency_code" value="EUR" />
<input type="hidden" name="no_note" value="1" />
<input name="no-shipping" type="hidden" value="1">
<input name="tax" type="hidden" value="0.00">
<input name="bn" type="hidden" value="PP-BuyNowBF">
<input type="hidden" name="lc" value="FR" />
<input type="hidden" name="notify_url" value="http://kunstkoning.livehost.fr/account/galerie/abonnement/verify.php" />
<input type="hidden" name="cancel_return" value="http://kunstkoning.livehost.fr/account/galerie/abonnement/cancel.php">
<input type="hidden" name="return" value="http://kunstkoning.livehost.fr/account/galerie/abonnement/return.php">
<input name="custom" type="hidden" value="<?php echo $_SESSION['id']; ?>" />
<input type="submit" class="btn btn-success" style="border-radius: 0px; margin-top: 5px; margin-bottom: 5px" value="Kies deze aanbieding !">
</form>
Bon.. J'ai été voir le tutoriel de grafikart au complet, j'ai même copié /collé le code qu'il donne tout en le modifiant à ma manière, j'ai été voir sur des forums des personnes qui ont également ce problème de bdd qui ne change pas et j'ai même été voir sur le site de paypal mais rien.. c'est fou quand-même ! :P
Le tuto de grafikart est plus a jour :x je t'envoie mon code qui fonctionne car je l'utilise ;)
Ce fichier s'apelle paypal.php ( ou y'a simplement la redirection
<?php
define('DB_HOST', 'localhost');
define('DB_NAME', '');
define('DB_USERNAME', '');
define('DB_PASSWORD', ''); //Connexion a la BDD
$bdd = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USERNAME, DB_PASSWORD);
if(!isset($_SESSION["pseudo"])){
header("Location: ../index.php");
exit();
} // pas connexion on retourne vers l'indes
if(isset($_GET['id']) && Is_Numeric($_GET['id']))// On vérifie bien que l'ID soit un nombre pour moi l'id est le montant
{
function getPath()
{
$temp = "http://".$_SERVER['HTTP_HOST'];
if($_SERVER['PHP_SELF'][strlen($_SERVER['PHP_SELF'])-1] == "/")
{
$temp.=$_SERVER['PHP_SELF'];
} else {
$temp.=dirname($_SERVER['PHP_SELF']);
}
if($temp[strlen($temp)-1]=="/")
{
$temp = substr($temp, 0, strlen($temp)-1);
}
return dirname($temp);
}
$id = (int)$_GET['id'];
$SQLGetLogs = $bdd -> query("SELECT * FROM `grade` WHERE `price` = '".$id."' LIMIT 1"); // on récupere toutes les infos pour voir si ça correspond bien
while($getInfo = $SQLGetLogs -> fetch(PDO::FETCH_ASSOC))
{
$coins = $getInfo['coins'];
$pseudo = $_SESSION["pseudo"];
$email = "Ton Email PayPal";
}
if($id === NULL) { die("Veuillez choisir un grade"); }
$paypalurl = "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_xclick&amount=".urlencode($id)."&business=".urlencode($email)."&item_name=".urlencode($coins."_".$pseudo)."&item_number=1&return=tonsite/return.php"."&rm=2¬ify_url=Tonlien/ipn.php"."&cancel_return=tonsite/erreur.php"."&no_note=1¤cy_code=EUR";
header("Location: ".$paypalurl);
}
?>
Attention, remplis bien dans le $paypalURL ton lien exemple http://grafikart.fr/ et non les dossier
Le fichier IPN.PHP
<?php
define('DB_HOST', 'localhost');
define('DB_NAME', '');
define('DB_USERNAME', '');
define('DB_PASSWORD', ''); //Connexion a la BDD
$bdd = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USERNAME, DB_PASSWORD);
$date = date("d m Y / H:i"); // l'a j'ai changer car c'est pas très correct de faire ça x)
function get_ip() {
if (isset($_SERVER['HTTP_CLIENT_IP'])) {
return $_SERVER['HTTP_CLIENT_IP'];
}
elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
return $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else {
return (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '');
}
}
// CONFIG: Enable debug mode. This means we'll log requests into 'ipn.log' in the same directory.
// Especially useful if you encounter network errors or other intermittent problems with IPN (validation).
// Set this to 0 once you go live or don't require logging.
define("DEBUG", 1);
// Set to 0 once you're ready to go live
define("USE_SANDBOX", 1);
// define("LOG_FILE", "./ipn.log");
// file_put_contents("logdudebut.txt", print_r($GLOBALS, true)."\r\n", FILE_APPEND);
// Read POST data
// reading posted data directly from $_POST causes serialization
// issues with array data in POST. Reading raw POST data from input stream instead.
$raw_post_data = file_get_contents('php://input');
$raw_post_array = explode('&', $raw_post_data);
$myPost = array();
foreach ($raw_post_array as $keyval) {
$keyval = explode ('=', $keyval);
if (count($keyval) == 2)
$myPost[$keyval[0]] = urldecode($keyval[1]);
}
// read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-validate';
if(function_exists('get_magic_quotes_gpc')) {
$get_magic_quotes_exists = true;
}
foreach ($myPost as $key => $value) {
if($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1) {
$value = urlencode(stripslashes($value));
} else {
$value = urlencode($value);
}
$req .= "&$key=$value";
}
// Post IPN data back to PayPal to validate the IPN data is genuine
// Without this step anyone can fake IPN data
if(USE_SANDBOX == true) {
$paypal_url = "https://www.sandbox.paypal.com/cgi-bin/webscr";
} else {
$paypal_url = "https://www.paypal.com/cgi-bin/webscr";
}
$ch = curl_init($paypal_url);
if ($ch == FALSE) {
return FALSE;
}
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
if(DEBUG == true) {
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLINFO_HEADER_OUT, 1);
}
// CONFIG: Optional proxy configuration
//curl_setopt($ch, CURLOPT_PROXY, $proxy);
//curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
// Set TCP timeout to 30 seconds
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close'));
// CONFIG: Please download 'cacert.pem' from "http://curl.haxx.se/docs/caextract.html" and set the directory path
// of the certificate as shown below. Ensure the file is readable by the webserver.
// This is mandatory for some environments.
//$cert = __DIR__ . "./cacert.pem";
//curl_setopt($ch, CURLOPT_CAINFO, $cert);
$res = curl_exec($ch);
if (curl_errno($ch) != 0) // cURL error
{
if(DEBUG == true) {
error_log(date('[Y-m-d H:i e] '). "Can't connect to PayPal to validate IPN message: " . curl_error($ch) . PHP_EOL, 3, LOG_FILE);
}
curl_close($ch);
exit;
} else {
// Log the entire HTTP response if debug is switched on.
if(DEBUG == true) {
error_log(date('[Y-m-d H:i e] '). "HTTP request of validation request:". curl_getinfo($ch, CURLINFO_HEADER_OUT) ." for IPN payload: $req" . PHP_EOL, 3, LOG_FILE);
error_log(date('[Y-m-d H:i e] '). "HTTP response of validation request: $res" . PHP_EOL, 3, LOG_FILE);
}
curl_close($ch);
}
// Inspect IPN validation result and act accordingly
// Split response headers and payload, a better way for strcmp
$tokens = explode("\r\n\r\n", trim($res));
$res = trim(end($tokens));
if (strcmp ($res, "VERIFIED") == 0) {
$mc_gross = $_POST['mc_gross'];
$payment_currency = $_POST['mc_currency'];
$txn_id = $_POST['txn_id'];
$receiver_email = $_POST['receiver_email'];
$payer_email = $_POST['payer_email'];
$item_name = $_POST['item_name'];
$payement = explode("_", $item_name);
$pseudo = $payement[1];
$coins = $payement[0];
$reduc = $payement[2];
$pricesql = $bdd -> prepare("SELECT * FROM `grade` WHERE coins = :coins");
$pricesql -> execute(array(":coins" => $coins));
$price = $pricesql -> fetchColumn(4);
if($reduc > 1){
$pricereduc = $price * (1 - $reduc/100);
if ($receiver_email == "tonemailpaypal" && $pricereduc == $mc_gross && $payment_currency == "EUR" && $txn_id == true) //Modifie bien le receiver_email pour que ça soit ton email idem pour payment_currency {
$labdd = $pricereduc."€ (".$price."€ ".$reduc."%)";
//La on le passe VIP
// check whether the payment_status is Completed
// check that txn_id has not been previously processed
// check that receiver_email is your PayPal email
// check that payment_amount/payment_currency are correct
// process payment and mark item as paid.
// assign posted variables to local variables
//$item_number = $_POST['item_number'];
//$payment_status = $_POST['payment_status'];
$insert = $bdd->prepare("INSERT INTO payement(idtransaction, price, achat, emailpaypal, pseudo, fraude, date, ip) VALUES(?, ?, ?, ?, ?, ?, ?, ?)");
$insert->execute(array($txn_id, $labdd, $coins." Coins", $payer_email, $pseudo, "Non", time(), get_ip()));
file_put_contents("OK.txt", print_r($GLOBALS, true)."\r\n", FILE_APPEND);
if(DEBUG == true) {
error_log(date('[Y-m-d H:i e] '). "Verified IPN: $req ". PHP_EOL, 3, LOG_FILE);
}
}
//La personne a essayer de frauder (changer l'email ou la somme ou la money)
// file_put_contents("fraude.txt", print_r($GLOBALS, true)."\r\n", FILE_APPEND);
// $fraude = $bdd->prepare("INSERT INTO payement(idtransaction, price, achat, emailpaypal, pseudo, fraude) VALUES(?, ?, ?, ?, ?, ?)");
// $fraude->execute(array($txn_id, $mc_gross, $coins." Coins", $payer_email, $pseudo, $receiver_email."/".$mc_gross."/".$payment_currency));
// }
// else if (strcmp ($res, "INVALID") == 0) {
// file_put_contents("faux.txt", print_r($GLOBALS, true)."\r\n", FILE_APPEND);
// log for manual investigation
// Add business logic here which deals with invalid IPN messages
// if(DEBUG == true) {
// error_log(date('[Y-m-d H:i e] '). "Invalid IPN: $req" . PHP_EOL, 3, LOG_FILE);
// }
// }
}else{
if ($receiver_email == "inubhack1@gmail.com" && $price == $mc_gross && $payment_currency == "EUR" && $txn_id == true) {
//La on le passe VIP
// check whether the payment_status is Completed
// check that txn_id has not been previously processed
// check that receiver_email is your PayPal email
// check that payment_amount/payment_currency are correct
// process payment and mark item as paid.
// assign posted variables to local variables
//$item_number = $_POST['item_number'];
//$payment_status = $_POST['payment_status'];
$insert = $bdd->prepare("INSERT INTO payement(idtransaction, price, achat, emailpaypal, pseudo, fraude, date, ip) VALUES(?, ?, ?, ?, ?, ?, ?, ?)");
$insert->execute(array($txn_id, $price."€", $coins." Coins", $payer_email, $pseudo, "Non", time(), get_ip()));
file_put_contents("OK.txt", print_r($GLOBALS, true)."\r\n", FILE_APPEND);
}
}
}
?>
Je te conseille de dés que la personne a cliquer sur Payment, de créé dans ta table payement une colonne avec toutes les infos prix ect pour vérifier qu'il n'a pas modifier le prix chez PayPal etc
J'ai juste chercher sur internet https://github.com/paypal/PayPal-PHP-SDK puis j'ai trifouiller le code un peu x)
Re-bonjour !
Merci pour vos réponses les gars ! Pour finir, je me suis re-tourné vers Paypal Express Checkout et soudainement, en ayant un peu pratiqué sur l'autre système, tout est devenu parfaitement clair ! Donc pour finir je finirai avec Paypal Express Checkout ! Quoi qu'il en soit et je le dis souvent mais pas assez, merci de vos réponses et de votre aide ! :)
J'en profite au passage pour faire part d'un problème. Dans ma page process.php, tout fonctionne mais dès que je veux faire les modifications dans la base de donnée, ça ne fonctionne plus et l'hébergeur gratuit sur lequel je suis a désactivé l'affichage des erreurs donc je n'arrive pas à trouver la solution qui doit surement être toute bête.. !
J'ai commenté pour vous indiquer où ça bug :)
<?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'); // Avec ceci, ça fonctionne encore..
// A partir d'ici, dès que j'introduis ce code dans la condition if($response), ça ne fonctionne plus....
$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à ! J'espère que vous pourrez m'aider !
Merci !
Boris
Problème réglé :)
J'avais mis ça :
include('../../inc/db.php');
Alors que j'aurai dut mettre ça :
include('../../../inc/db.php');
Donc il n'arrivait pas à se connecter à la base de donnée et les requêtes provoquaient des erreurs :)