Ga naar hoofdinhoud

Een Aangepaste Registrar Integratie Bouwen

De Domain Seller addon gebruikt een patroon genaamd Integration Registry. Elke registrar is een PHP-klasse die Domain_Selling_Capability implementeert en zichzelf registreert via de wu_domain_seller_register_capabilities action hook.

Deze handleiding laat zien hoe u een aangepaste registrar kunt aansluiten.

Het Interface

Uw klasse moet WP_Ultimo\Integrations\Capabilities\Domain_Selling_Capability implementeren en WP_Ultimo\Integrations\Base_Capability_Module uitbreiden.

Vereiste methoden:

namespace My\Plugin\Capabilities;

use WP_Ultimo\Integrations\Base_Capability_Module;
use WP_Ultimo\Integrations\Capabilities\Domain_Selling_Capability;

class My_Registrar_Selling extends Base_Capability_Module implements Domain_Selling_Capability {

// --- Vereiste identiteitsmethoden (van Base_Capability_Module) ---

public function get_capability_id(): string {
return 'domain-selling'; // altijd 'domain-selling'
}

public function get_title(): string {
return __('Domain Selling', 'my-plugin');
}

public function get_explainer_lines(): array {
return [
'will' => [__('Enable domain registration via My Registrar.', 'my-plugin')],
'will_not' => [],
];
}

// --- Kernvereiste methoden (van Domain_Selling_Capability) ---

/** Haalt alle beschikbare TLD's en groothandelprijzen op. */
public function sync_tlds(): array { ... }

/** Controleert de beschikbaarheid van $domain_name over $tlds. */
public function search_domains(string $domain_name, array $tlds = []): array { ... }

/** Haalt de groothandelprijs op voor een TLD voor N jaar. */
public function get_domain_pricing(string $tld, int $years = 1): array { ... }

/** Registreert een domein. Retourneert ['success' => true, 'expiry_date' => '...'] bij succes. */
public function register_domain(string $domain_name, array $registrant_info, int $years = 1): array { ... }

/** Vernieuwt een domein voor N jaar. */
public function renew_domain(string $domain_name, int $years = 1): array { ... }

/** Haalt domeininformatie op, inclusief status, vervaldatum en nameservers. */
public function get_domain_info(string $domain_name): array { ... }

/** Test de API-gegevens en connectiviteit. */
public function test_connection(): array { ... }
}

Optionele methoden

Implementeer deze om extra functionaliteiten vrij te schakelen. De addon detecteert ondersteuning via method_exists():

MethodeSchakelt vrij
supports_whois_privacy(): boolWHOIS privacy optie in productinstellingen
enable_whois_privacy(string $domain_name): arrayPrivacy automatisch inschakelen bij registratie
get_dns_records(string $domain_name): arrayKlant DNS-overzicht tabblad
add_dns_record(string $domain_name, array $record_data): arrayKlant kan DNS-records toevoegen
update_dns_record(string $domain, string $record_id, array $record_data): arrayKlant kan DNS-records bewerken
delete_dns_record(string $domain, string $record_id, array $data): arrayKlant kan DNS-records verwijderen
update_nameservers(string $domain_name, array $nameservers): arrayNameserverbeheer
get_epp_code(string $domain_name): arrayDomeinoverdracht (uitgaand)
transfer_domain(string $domain, string $auth_code, array $registrant_info, array $options): arrayDomeinoverdracht (inkomend)

Conventie voor retourwaarde

Alle methoden retourneren een array met minimaal een success-sleutel:

// Succes
return ['success' => true, 'data' => [...]];

// Falen
return ['success' => false, 'message' => 'Menselijk leesbare fout'];

Uw Capability Registreren

Registreer uw klasse met de wu_domain_seller_register_capabilities action:

add_action('wu_domain_seller_register_capabilities', function(\WP_Ultimo\Integrations\Integration_Registry $registry) {
$registry->add_capability('my-registrar', new \My\Plugin\Capabilities\My_Registrar_Selling());
});

Het eerste argument van add_capability() is de provider ID — een kleine slug die wordt gebruikt om uw registrar te identificeren in instellingen, productconfiguratie en logkanalen. Gebruik iets unieks (bijvoorbeeld de slug van uw bedrijf).


Credential Velden Toevoegen aan de Wizard

Om beheerders in staat te stellen credentials in te voeren via de setup wizard, registreert u uw integratie:

add_action('wu_domain_seller_register_integrations', function(\WP_Ultimo\Integrations\Integration_Registry $registry) {
$registry->add_integration('my-registrar', [
'name' => __('My Registrar', 'my-plugin'),
'fields' => [
[
'id' => 'my_registrar_api_key',
'label' => __('API Key', 'my-plugin'),
'type' => 'text',
],
[
'id' => 'my_registrar_api_secret',
'label' => __('API Secret', 'my-plugin'),
'type' => 'password',
],
],
]);
});

Credentials worden opgeslagen als network options met de field IDs als sleutels. Haal ze op in uw capability class met wu_get_setting('my_registrar_api_key').


Hooks voor Post-Registratie Acties

Gebruik deze actions om webhooks, provisioning, notificaties of CRM-updates te triggeren:

// Na succesvolle domeinregistratie
add_action('wu_domain_registration_completed', function($payment, $registration_data, $result) {
// $registration_data: domain_name, provider_id, years, expiry_date, customer_id
// $result: ruwe registrar respons
my_crm_update_domain($registration_data['domain_name'], $registration_data['customer_id']);
}, 10, 3);

// Na registratiefalen
add_action('wu_domain_registration_failed', function($payment, $registration_data, $error_message) {
my_alert_team("Domeinregistratie mislukt: {$registration_data['domain_name']}{$error_message}");
}, 10, 3);

// Na succesvolle verlenging
add_action('wu_domain_renewal_completed', function($payment, $renewal_data, $result) {
// Update uw facturatiesysteem, stuur een ontvangstbewijs, enz.
}, 10, 3);

// Na verlengingsfalen
add_action('wu_domain_renewal_failed', function($payment, $renewal_data, $error_message) {
// Waarschuw, retry-logica, enz.
}, 10, 3);

// Na voltooiing van domeinoverdracht
add_action('wu_domain_transfer_completed', function($domain, $transfer_data) {
// $domain is een WP_Ultimo\Models\Domain object
}, 10, 2);

// Na SES DKIM verificatie (indien SES integratie actief is)
add_action('wu_domain_ses_verified', function($domain) {
// $domain is een WP_Ultimo\Models\Domain object
});

Logging

Schrijf naar uw provider-specifieke logkanaal met wu_log_add():

wu_log_add('domain-seller-my-registrar', "{$domain_name} succesvol geregistreerd", 'info');
wu_log_add('domain-seller-my-registrar', "Registratie mislukt: {$error}", 'error');

Logs verschijnen onder Network Admin › Ultimate Multisite › Logs › domain-seller-my-registrar.