e59-website/html/pay/check_payment.php
2024-08-16 19:44:05 +00:00

151 lines
6.6 KiB
PHP

<?php
require("../../include/variables.php");
require("../../include/init.php");
require("../../include/main-functions.php");
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require './vendor/autoload.php';
$pdo = sqlConnect($sqlDatabaseHost, $sqlDatabaseName, $sqlDatabaseUser, $sqlDatabasePass);
$rawData = file_get_contents('php://input');
$data = json_decode($rawData, true);
if (isset($data['id'])) {
$id = $data['id'];
$client_id = 'cc_classic_znsSCWtxQRTJJVFaGqBgIjCqdES0e';
$client_secret = 'cc_sk_classic_WA2N5s5qZBk0aN0qozTfQh7RxXXjzFYa6JlYnRi7GNmQxIgeF1';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.sumup.com/token");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'grant_type' => 'client_credentials',
'client_id' => $client_id,
'client_secret' => $client_secret
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$responseData = json_decode($response, true);
$access_token = $responseData['access_token'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.sumup.com/v0.1/checkouts/$id");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer $access_token",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
$responseData = json_decode($response, true);
if (isset($responseData['id'])) {
$date = date('Y-m-d H:i:s', strtotime($responseData['date']));
$description = $responseData['description'];
$username = substr($description, strpos($description, '@') + 1);
$request = $pdo->prepare("SELECT ID FROM users WHERE username = :username");
$request->bindParam(":username", $username);
$request->execute();
$userid = $request->fetchAll(PDO::FETCH_ASSOC);
if (strpos($description, 'BUY') === 0) {
// Récupérer les trois lettres après PAY
$product = substr($description, 3, 3);
$type = 2;
// Vérifier le type d'article
if ($product === 'ADH') {
$product_id = 1; // Article de type 1
$pay_action = "payé son adhésion de 1 EUR";
if ($userid) {
$request = $pdo->prepare("UPDATE adherents SET etape_adhesion = 3 WHERE userid = :userid");
$request->bindParam(":userid", $userid[0]['ID']);
$request->execute();
$request = $pdo->prepare("UPDATE users SET role = 10 WHERE userid = :userid");
$request->bindParam(":userid", $userid[0]['ID']);
$request->execute();
}
} else {
$product_id = null; // Cas où le type n'est pas ADH
$pay_action = "payé un truc à " . $responseData['amount'] . " EUR";
}
} elseif (strpos($description, 'DON') === 0) {
// Article de type NULL pour les chaînes qui commencent par DON
$product_id = null;
$pay_action = "fait un don de " . $responseData['amount'] . " EUR";
$type = 1;
} else {
// Si la chaîne ne commence ni par PAY ni par DON
$product_id = null;
}
// Récupérer le nom d'utilisateur après le @
$request = $pdo->prepare("INSERT INTO checkouts (amount, reference, date, description, checkout_id, status, transaction_id, userid, type, product) VALUES (:amount, :reference, :date, :description, :checkout_id, :status, :transaction_id, :userid, :type, :product)");
$request->bindParam(":amount", $responseData['amount']);
$request->bindParam(":reference", $responseData['checkout_reference']);
$request->bindParam(":date", $date);
$request->bindParam(":description", $responseData['description']);
$request->bindParam(":checkout_id", $responseData['id']);
$request->bindParam(":status", $responseData['status']);
$request->bindParam(":transaction_id", $responseData['transaction_id']);
$request->bindParam(":userid", $userid[0]['ID']);
$request->bindParam(":type", $type);
$request->bindParam(":product", $product_id);
$request->execute();
$mail = new PHPMailer(true);
try {
// Paramètres du serveur SMTP
$mail->isSMTP(); // Utiliser SMTP
$mail->Host = 'outlook.office365.com'; // Serveur SMTP Exchange
$mail->SMTPAuth = true; // Activer l'authentification SMTP
$mail->Username = 'smtp@e59.fr'; // Nom d'utilisateur SMTP
$mail->Password = 'WTFdoto5678TFWT'; // Mot de passe SMTP
$mail->SMTPSecure = 'tls'; // Activer le cryptage TLS
$mail->Port = 587; // Port TCP pour TLS
$mail->CharSet = "UTF-8";
// Destinataires
$mail->setFrom('sumup@e59.fr', 'Paiements E59');
$mail->addAddress('finances@e59.fr');
// Vous pouvez ajouter d'autres destinataires en utilisant $mail->addAddress()
// $mail->addAddress('autre-destinataire@example.com');
// Vous pouvez aussi ajouter des destinataires en copie (CC) ou en copie cachée (BCC)
// $mail->addCC('cc@example.com');
// $mail->addBCC('bcc@example.com');
// Pièces jointes (si nécessaire)
// $mail->addAttachment('/path/to/file.pdf'); // Ajouter un fichier joint
// Contenu de l'email
$mail->isHTML(true); // Activer le format HTML pour l'email
$mail->Subject = "Nouveau paiement";
$mail->Body = "<!DOCTYPE html><html lang='fr'><head><meta charset='UTF-8'><meta name='viewport' content='width=device-width, initial-scale=1.0'><title>Nouveau paiement</title><style>.content {font-family: Bahnschrift;margin: 0 auto;width: 80%;text-align: center;}</style></head><body><div class='content'><h3>Un nouveau paiement a eu lieu sur e59.fr/pay</h3><p>$username a $pay_action</p></div></body></html>";
$mail->AltBody = "$username a $pay_action";
// Envoyer l'email
$mail->send();
// Préparation de la requête de suppression
} catch (Exception $e) {
error_log("Erreur de Mailer: {$mail->ErrorInfo}");
}
}
}
?>