Skip to main content

Δημιουργία Ενσωμάτωσης Προσαρμοσμένου Registrar

Το Addon Domain Seller χρησιμοποιεί ένα μοτίβο που ονομάζεται Integration Registry. Κάθε registrar είναι μια κλάση PHP που υλοποιεί το Domain_Selling_Capability και καταγράφεται μέσω του action hook wu_domain_seller_register_capabilities.

Αυτό το εγχειρίδιο δείχνει πώς να συνδέσετε έναν προσαρμοσμένο registrar.

Η διεπαφή (The interface)

Η κλάση σας πρέπει να υλοποιεί το WP_Ultimo\Integrations\Capabilities\Domain_Selling_Capability και να κληρονομεί από το WP_Ultimo\Integrations\Base_Capability_Module.

Απαιτούμενες μεθόδους:

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 {

// --- Απαιτούμενες μεθόδους ταυτότητας (από Base_Capability_Module) ---

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

// --- Βασικές απαιτούμενες μεθόδους (από Domain_Selling_Capability) ---

/** Συγχρονίζει όλες τις διαθέσιμες TLDs και τις τιμές λιανικής πώλησης. */
public function sync_tlds(): array { ... }

/** Ελέγχει τη διαθεσιμότητα του $domain_name σε διάφορες TLDs. */
public function search_domains(string $domain_name, array $tlds = []): array { ... }

/** Λαμβάνει την τιμή λιανικής πώλησης για μια TLD για N χρόνια. */
public function get_domain_pricing(string $tld, int $years = 1): array { ... }

/** Εγγράφει ένα domain. Επιστρέφει ['success' => true, 'expiry_date' => '...'] σε επιτυχία. */
public function register_domain(string $domain_name, array $registrant_info, int $years = 1): array { ... }

/** Επανακυκλοφορεί ένα domain για N χρόνια. */
public function renew_domain(string $domain_name, int $years = 1): array { ... }

/** Λαμβάνει τις πληροφορίες εγγραφής, την ημερομηνία λήξης και τα nameservers. */
public function get_domain_info(string $domain_name): array { ... }

/** Δοκιμάζει τα στοιχεία σύνδεσης API και τη συνδεσιμότητα. */
public function test_connection(): array { ... }
}

Προαιρετικές μεθόδους

Υλοποιήστε αυτές τις μεθόδους για να ξεκλειδώσετε επιπλέον λειτουργίες. Το addon ανιχνεύει την υποστήριξη μέσω του method_exists():

ΜέθοδοςΞεκλειδώνει
supports_whois_privacy(): boolΕπιλογή ιδιωτικότητας WHOIS στις ρυθμίσεις του προϊόντος
enable_whois_privacy(string $domain_name): arrayΑυτόματη ενεργοποίηση ιδιωτικότητας κατά την εγγραφή
get_dns_records(string $domain_name): arrayκαρτέλα προβολής DNS για τον πελάτη
add_dns_record(string $domain_name, array $record_data): arrayΟ πελάτης μπορεί να προσθέσει DNS records
update_dns_record(string $domain, string $record_id, array $record_data): arrayΟ πελάτης μπορεί να επεξεργαστεί DNS records
delete_dns_record(string $domain, string $record_id, array $data): arrayΟ πελάτης μπορεί να διαγράψει DNS records
update_nameservers(string $domain_name, array $nameservers): arrayΔιαχείριση nameservers
get_epp_code(string $domain_name): arrayΜεταβίβαση domain (εξόδου)
transfer_domain(string $domain, string $auth_code, array $registrant_info, array $options): arrayΜεταβίβαση domain (εισόδου)

Συνθήκη επιστροφής τιμής

Όλες οι μεθόδους επιστρέφουν ένα array με τουλάχιστον το κλειδί success:

// Επιτυχία
return ['success' => true, 'data' => [...]];

// Αποτυχία
return ['success' => false, 'message' => 'Human-readable error'];

Καταχώριση της ικανότητάς σας (Registering your capability)

Καταχωρήστε την κλάση σας χρησιμοποιώντας το action wu_domain_seller_register_capabilities:

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());
});

Το πρώτο όρισμα του add_capability() είναι το provider ID — ένα lowercase slug που χρησιμοποιείται για την αναγνώριση του registrar σας στις ρυθμίσεις, τη διαμόρφωση του προϊόντος και τα κανάλια καταγραφής (log). Χρησιμοποιήστε κάτι μοναδικό (π.χ., το slug της εταιρείας σας).


Προσθήκη πεδίων στο Wizard των στοιχείων σύνδεσης

Για να επιτρέψετε στους διαχειριστές να εισάγουν τα στοιχεία σύνδεσης μέσω του setup wizard, καταχωρήστε την ενσωμάτωσή σας:

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

Τα στοιχεία σύνδεσης αποθηκεύονται ως network options χρησιμοποιώντας τα field IDs ως keys. Αποκτήστε πρόσβαση σε αυτά στην κλάση capability σας με το wu_get_setting('my_registrar_api_key').


Hooks για ενέργειες μετά την καταχώριση (Post-registration actions)

Χρησιμοποιήστε αυτούς τους actions για να ενεργοποιήσετε webhooks, provisioning, ειδοποιήσεις ή ενημερώσεις CRM:

// Μετά την επιτυχή εγγραφή domain
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);

// Μετά την αποτυχία εγγραφής
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);

// Μετά την επιτυχή ανανέωση
add_action('wu_domain_renewal_completed', function($payment, $renewal_data, $result) {
// Ενημερώστε το billing system σας, στείλτε μια απόδειξη κ.λπ.
}, 10, 3);

// Μετά την αποτυχία ανανέωσης
add_action('wu_domain_renewal_failed', function($payment, $renewal_data, $error_message) {
// Ειδοποίηση, λογική επαναπροέκλισης κ.λπ.
}, 10, 3);

// Μετά την ολοκλήρωση της μεταβίβασης domain
add_action('wu_domain_transfer_completed', function($domain, $transfer_data) {
// $domain είναι ένα αντικείμενο WP_Ultimo\Models\Domain
}, 10, 2);

// Μετά τη επαλήθευση SES DKIM (αν είναι ενεργή η ενσωμάτωση SES)
add_action('wu_domain_ses_verified', function($domain) {
// $domain είναι ένα αντικείμενο WP_Ultimo\Models\Domain
});

Καταγραφή (Logging)

Γράψτε στο κανάλι καταγραφής ειδικό για τον πάροχο σας χρησιμοποιώντας το 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');

Τα logs εμφανίζονται κάτω από Network Admin › Ultimate Multisite › Logs › domain-seller-my-registrar.