Files
Fuyuzakura/ShowActs/show-to-Docu.php
T

123 lines
4.3 KiB
PHP

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
// ==========================================
// 1. KONFIGURATION
// ==========================================
$api_key = 'API KEY einfügen';
$template_id = 1; // Die ID deines Templates
$api_url = 'API URL EINFÜGEN';
// ==========================================
if ($_SERVER["REQUEST_METHOD"] !== "POST") {
die("Ungültige Anfrage. Bitte nutze das Formular.");
}
$data = [
"act_name" => trim($_POST['act_name'] ?? ''),
"person_count" => intval($_POST['person_count'] ?? 1),
"duration" => intval($_POST['duration'] ?? 0),
"description" => trim($_POST['description'] ?? ''),
"tech_needs" => trim($_POST['tech_needs'] ?? ''),
"contact_name" => trim($_POST['contact_name'] ?? ''),
"email" => filter_var(trim($_POST['email'] ?? ''), FILTER_VALIDATE_EMAIL),
"total_price" => trim($_POST['total_price'] ?? ''),
"terms_accepted" => isset($_POST['terms']) ? true : false
];
if (empty($api_key) || $api_key === 'DEIN_DOCUSEAL_API_KEY') {
die("Konfigurationsfehler: API-Key wurde nicht hinterlegt.");
}
if (!$data['email'] || empty($data['act_name']) || empty($data['contact_name'])) {
die("Validierungsfehler: Bitte fülle alle Pflichtfelder korrekt aus.");
}
if (!$data['terms_accepted']) {
die("Validierungsfehler: Die Teilnahmebedingungen müssen akzeptiert werden.");
}
$payload = [
"template_id" => $template_id,
"send_email" => false,
"submitters" => [
[
"email" => $data['email'],
"name" => $data['contact_name'],
"fields" => [
[
"name" => "act_name",
"default_value" => $data['act_name']
],
[
"name" => "ansprechpartner",
"default_value" => $data['contact_name']
],
[
"name" => "email",
"default_value" => $data['email']
],
[
"name" => "anzahl_personen",
"default_value" => (string)$data['person_count']
],
[
"name" => "dauer_minuten",
"default_value" => (string)$data['duration']
],
[
"name" => "beschreibung",
"default_value" => $data['description']
],
[
"name" => "technik",
"default_value" => $data['tech_needs']
],
[
"name" => "gesamtbetrag",
"default_value" => $data['total_price']
],
[
"name" => "teilnahmebedingungen",
"default_value" => true
]
]
]
]
];
$ch = curl_init($api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-Auth-Token: ' . $api_key,
'Content-Type: application/json'
]);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curl_error = curl_error($ch);
if ($http_code === 200 || $http_code === 201) {
$responseData = json_decode($response, true);
$submitter = $responseData[0] ?? [];
$signing_url = $submitter['url'] ?? null;
if (!$signing_url && !empty($submitter['slug'])) {
$signing_url = "URL EINFÜGEN" . $submitter['slug'];
}
if ($signing_url) {
header("Location: " . $signing_url);
exit;
} else {
echo "<h1>Fehler: Konnte den Signatur-Link nicht generieren!</h1>";
echo "<b>Rohe API-Antwort:</b><br><pre>" . htmlspecialchars($response) . "</pre>";
exit;
}
} else {
echo "<h1>🚨 VERBINDUNG ZU DOCUSEAL FEHLGESCHLAGEN 🚨</h1>";
echo "<p><b>HTTP-Code:</b> " . htmlspecialchars($http_code) . "</p>";
echo "<p><b>API-Antwort von DocuSeal:</b> <span style='color:red;'>" . htmlspecialchars($response) . "</span></p>";
echo "<p><b>Interner cURL-Fehler:</b> " . htmlspecialchars($curl_error) . "</p>";
exit;
}