Drücke „Enter”, um zum Inhalt zu springen.

Automatische Domainverlängerung in WHMCS – so geht’s kundenfreundlich!

Philip Grassegger 0

Hey Leute,

jeder, der als Webhoster in Deutschland unterwegs ist, kennt’s:
Domains sind für viele Kunden das Wichtigste überhaupt – aber ausgerechnet WHMCS (das eigentlich Standard im Hosting ist) macht genau da Zicken.
Standardmäßig wird die Domain erst verlängert, wenn die Rechnung bezahlt ist. Klingt okay, ist aber in Deutschland echt problematisch!

Was, wenn die Rechnung mal nicht ankommt, im Spam landet oder der Kunde sie einfach verpennt?
In den USA ist das vielleicht normal, aber hier gibt’s dann lange Gesichter und Domains, die plötzlich weg sind.
Mal ehrlich – kein deutscher Provider lässt das zu, und unsere Kunden wollen wir ja behalten.


WHMCS kann das (immer noch) nicht out of the box?

Nope. Ich hab ewig gesucht, gefühlt das ganze WHMCS-Forum abgegrast, aber:
Das Feature kommt nicht! Auch der Support hat mir das bestätigt.
Also bleibt nur eins: Selbermachen!


Mein Fix: Automatische Domainverlängerung mit WHMCS-Hook

Ich hab mir einen kleinen, aber genialen Hook gebaut, der ganz automatisch prüft:

  • Welche Domains laufen in den nächsten 10 Tagen ab?
  • Ist die Domain überhaupt noch aktiv (nicht gekündigt)?
  • Und: Ist die automatische Verlängerung aktiviert?

Sind die Bedingungen erfüllt, schnappt sich mein Hook die Domain und verlängert sie sofort per WHMCS-API – ganz egal, ob der Kunde schon gezahlt hat oder nicht.
Das Coole: Das verwendete Domainmodul bleibt korrekt erhalten, also alles wie gewohnt.


Und wenn mal was schief geht?

Klar, manchmal klappt’s technisch nicht – dann:

  • Gibt’s direkt eine Admin-Mail an mich.
  • Der Hook versucht es einfach am nächsten Tag nochmal – solange, bis es klappt oder die Domain wirklich ausläuft.

Das Ganze läuft komplett automatisch im Hintergrund.


Wie sieht das im Code aus?

Einfach den Hook in /includes/hooks/ ablegen, fertig.

<?php

if (!defined("WHMCS")) {
    die("Du darfst diese Datei nicht direkt aufrufen.");
}

use WHMCS\Database\Capsule;

/**
 * Automatische Domainverlängerung für deutsche Webhoster
 * Prüft täglich alle Domains, die demnächst ablaufen und verlängert sie automatisch.
 * Du bekommst eine Info, ob es geklappt hat oder nicht.
 */
add_hook('DailyCronJob', 1, function($vars) {
    // Domains suchen, die in den nächsten 10 Tagen ablaufen
    $domainsToRenew = Capsule::table('tbldomains')
        ->whereBetween('expirydate', [
            date('Y-m-d'),
            date('Y-m-d', strtotime('+10 days'))
        ])
        ->where('status', '=', 'Active')
        ->where('donotrenew', '=', 0)
        ->get();

    foreach ($domainsToRenew as $domain) {
        // Versuch: Domain verlängern über die WHMCS-API
        $result = localAPI('DomainRenew', [
            'domainid' => $domain->id
        ], 'APIAdmin');

        if ($result['result'] === 'success') {
            // Hat geklappt! Admin bekommt eine Bestätigung.
            notifyAdmin(
                "Domain {$domain->domain} erfolgreich verlängert",
                "Die Domain <strong>{$domain->domain}</strong> wurde automatisch verlängert."
            );
        } else {
            // Fehler beim Verlängern – du bekommst sofort eine Info, inkl. Fehlertext
            notifyAdmin(
                "Fehler bei Domainverlängerung",
                "Die Verlängerung der Domain <strong>{$domain->domain}</strong> ist fehlgeschlagen.<br>Fehler: <pre>" . print_r($result, true) . "</pre>"
            );
        }
    }
});

/**
 * Schickt dir als Admin eine Nachricht ins WHMCS-Backend
 */
function notifyAdmin($subject, $message) {
    localAPI('SendAdminEmail', [
        'messagename'    => 'Default Admin Notification',
        'customsubject'  => $subject,
        'custommessage'  => $message
    ], 'Philip'); // Hier ggf. deinen Admin-User anpassen
}

Fazit

Mit so einem kleinen Script kannst du WHMCS einfach auf deutsche Erwartungen trimmen – und musst nicht jedes Mal hoffen, dass der Kunde rechtzeitig zahlt.
Kundenzufriedenheit steigt, und die Domains bleiben sicher bei dir.
Geht nicht, gibt’s nicht! Wer Fragen oder Ideen hat: Ab in die Kommentare oder direkt per Mail.

Viel Spaß beim Automatisieren!
Euer Philip


(PS: Wer’s nachbauen will – einfach fragen, ich helf gern weiter. Und ja, es sind wirklich nur ein paar Zeilen Code 😁)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert