Skip to main content

Pagtukod og Custom nga Integrasyon sa Registrar

Ang Domain Seller addon naggamit og Integration Registry nga pattern. Ang matag registrar usa ka PHP class nga nag-implement sa Domain_Selling_Capability ug nagparehistro sa kaugalingon pinaagi sa wu_domain_seller_register_capabilities nga action hook.

Kini nga giya nagpakita kung unsaon pagkonektar sa custom nga registrar.

Ang interface

Ang imong class kinahanglan nga mo-implement sa WP_Ultimo\Integrations\Capabilities\Domain_Selling_Capability ug mo-extend sa WP_Ultimo\Integrations\Base_Capability_Module.

Gikinahanglan nga mga method:

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 {

// --- Required identity methods (from Base_Capability_Module) ---

public function get_capability_id(): string {
return 'domain-selling'; // always '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' => [],
];
}

// --- Core required methods (from Domain_Selling_Capability) ---

/** Pull all available TLDs and wholesale pricing. */
public function sync_tlds(): array { ... }

/** Check availability of $domain_name across $tlds. */
public function search_domains(string $domain_name, array $tlds = []): array { ... }

/** Get wholesale price for a TLD for N years. */
public function get_domain_pricing(string $tld, int $years = 1): array { ... }

/** Register a domain. Returns ['success' => true, 'expiry_date' => '...'] on success. */
public function register_domain(string $domain_name, array $registrant_info, int $years = 1): array { ... }

/** Renew a domain for N years. */
public function renew_domain(string $domain_name, int $years = 1): array { ... }

/** Get registration status, expiry date, nameservers. */
public function get_domain_info(string $domain_name): array { ... }

/** Test API credentials and connectivity. */
public function test_connection(): array { ... }
}

Opsyonal nga mga method

I-implement kini aron maablihan ang dugang nga mga feature. Ang addon makamatikod sa suporta pinaagi sa method_exists():

MethodMaablihan
supports_whois_privacy(): boolOpsyon sa WHOIS privacy sa mga setting sa produkto
enable_whois_privacy(string $domain_name): arrayAwtomatikong mo-enable sa privacy sa panahon sa pagparehistro
get_dns_records(string $domain_name): arrayTab sa customer alang sa pagtan-aw sa DNS
add_dns_record(string $domain_name, array $record_data): arrayMakadugang ang customer og DNS records
update_dns_record(string $domain, string $record_id, array $record_data): arrayMaka-edit ang customer og DNS records
delete_dns_record(string $domain, string $record_id, array $data): arrayMakapanas ang customer og DNS records
update_nameservers(string $domain_name, array $nameservers): arrayPagdumala sa nameserver
get_epp_code(string $domain_name): arrayPagbalhin sa domain (paingon sa gawas)
transfer_domain(string $domain, string $auth_code, array $registrant_info, array $options): arrayPagbalhin sa domain (paingon sa sulod)

Kombensyon sa return value

Ang tanang method mobalik og array nga adunay labing menos usa ka success nga key:

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

// Failure
return ['success' => false, 'message' => 'Human-readable error'];

Pagparehistro sa imong capability

Iparehistro ang imong class gamit ang wu_domain_seller_register_capabilities nga 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());
});

Ang unang argumento sa add_capability() mao ang provider ID — usa ka lowercase nga slug nga gigamit aron mailhan ang imong registrar sa settings, configuration sa produkto, ug mga log channel. Gamita ang usa ka talagsaon (pananglitan, slug sa imong kompanya).


Pagdugang og credential fields sa wizard

Aron tugotan ang mga admin nga mosulod og credentials pinaagi sa setup wizard, iparehistro ang imong integration:

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',
],
],
]);
});

Ang credentials gitipigan isip network options gamit ang field IDs isip mga key. Kuhaa kini sa imong capability class gamit ang wu_get_setting('my_registrar_api_key').


Mga hook para sa mga aksyon human sa pagparehistro

Gamita kini nga mga aksyon aron mag-trigger og webhooks, provisioning, notifications, o CRM updates:

// After successful domain registration
add_action('wu_domain_registration_completed', function($payment, $registration_data, $result) {
// $registration_data: domain_name, provider_id, years, expiry_date, customer_id
// $result: raw registrar response
my_crm_update_domain($registration_data['domain_name'], $registration_data['customer_id']);
}, 10, 3);

// After registration failure
add_action('wu_domain_registration_failed', function($payment, $registration_data, $error_message) {
my_alert_team("Domain registration failed: {$registration_data['domain_name']}{$error_message}");
}, 10, 3);

// After successful renewal
add_action('wu_domain_renewal_completed', function($payment, $renewal_data, $result) {
// Update your billing system, send a receipt, etc.
}, 10, 3);

// After renewal failure
add_action('wu_domain_renewal_failed', function($payment, $renewal_data, $error_message) {
// Alert, retry logic, etc.
}, 10, 3);

// After domain transfer completes
add_action('wu_domain_transfer_completed', function($domain, $transfer_data) {
// $domain is a WP_Ultimo\Models\Domain object
}, 10, 2);

// After SES DKIM verification (if SES integration is active)
add_action('wu_domain_ses_verified', function($domain) {
// $domain is a WP_Ultimo\Models\Domain object
});

Pag-log

Pagsulat ngadto sa channel sa log nga espesipiko sa imong provider gamit ang wu_log_add():

wu_log_add('domain-seller-my-registrar', "Registered {$domain_name} successfully", 'info');
wu_log_add('domain-seller-my-registrar', "Registration failed: {$error}", 'error');

Ang mga log makita ubos sa Admin sa Network › Ultimate Multisite › Mga Log › domain-seller-my-registrar.