whmcs

خدمات ماژول برای نمایندگان

 ایجاد یک ماژول سفارشی در WHMCS

ساختار اولیه ماژول

ابتدا باید یک پوشه جدید برای ماژول خود در مسیر /modules/servers ایجاد کنید. فرض کنیم نام ماژول شما CustomAPI است:

/modules/servers/CustomAPI/

در این پوشه، دو فایل ایجاد کنید:

  • config.php
  • CustomAPI.php

فایل config.php

این فایل تنظیمات اصلی ماژول را شامل می‌شود.

<?php

if (!defined("WHMCS")) {
    die("This file cannot be accessed directly");
}

function CustomAPI_MetaData()
{
    return array(
        'DisplayName' => 'Custom API Module',
        'APIVersion' => '1.0',
    );
}

function CustomAPI_ConfigOptions()
{
    return array(
        'API Endpoint' => array(
            'Type' => 'text',
            'Size' => '50',
            'Default' => 'https://api.example.com',
            'Description' => 'Enter the API endpoint here',
        ),
        'API Key' => array(
            'Type' => 'password',
            'Size' => '50',
            'Description' => 'Enter your API key',
        ),
    );
}

 

فایل CustomAPI.php

این فایل شامل عملکردهای اصلی ماژول است.

<?php

if (!defined("WHMCS")) {
    die("This file cannot be accessed directly");
}

function CustomAPI_CreateAccount(array $params)
{
    // Retrieve the configuration options
    $apiEndpoint = $params['configoption1'];
    $apiKey = $params['configoption2'];
    
    // Prepare the data for API request
    $data = array(
        'username' => $params['clientsdetails']['email'],
        'password' => $params['password'],
        'serviceid' => $params['serviceid'],
    );
    
    // Initialize cURL
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $apiEndpoint . "/createAccount");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        "Authorization: Bearer " . $apiKey
    ));

    $response = curl_exec($ch);
    curl_close($ch);

    $result = json_decode($response, true);

    if ($result['success']) {
        return "success";
    } else {
        return "Error: " . $result['message'];
    }
}

function CustomAPI_TerminateAccount(array $params)
{
    // Similar logic for terminating the account
}

function CustomAPI_SuspendAccount(array $params)
{
    // Similar logic for suspending the account
}

function CustomAPI_UnsuspendAccount(array $params)
{
    // Similar logic for unsuspending the account
}

 

ایجاد هوک (Hook) برای عملیات خاص

هوک‌ها به شما این امکان را می‌دهند که در نقاط مختلف WHMCS از عملکردهای خاص خود استفاده کنید. به عنوان مثال، فرض کنید می‌خواهید پس از پرداخت یک فاکتور، اطلاعاتی را به سامانه اختصاصی خود ارسال کنید.

<?php

add_hook('InvoicePaid', 1, function($vars) {
    $invoiceId = $vars['invoiceid'];

    // Retrieve the invoice and client details
    $invoiceData = localAPI('GetInvoice', ['invoiceid' => $invoiceId]);
    $clientData = localAPI('GetClientsDetails', ['clientid' => $invoiceData['userid']]);

    // Prepare the data for API request
    $data = array(
        'invoiceId' => $invoiceId,
        'amount' => $invoiceData['total'],
        'clientEmail' => $clientData['email'],
    );

    // Initialize cURL
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://api.example.com/invoicePaid");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($ch);
    curl_close($ch);

    // Optionally log the response or handle errors
});

 

استفاده از API داخلی WHMCS

WHMCS دارای یک API داخلی است که می‌تواند در ماژول‌ها و هوک‌ها استفاده شود. به عنوان مثال، برای ایجاد یک فاکتور می‌توانید از API داخلی استفاده کنید:

<?php

$command = 'CreateInvoice';
$postData = array(
    'userid' => $userId,
    'date' => 'today',
    'duedate' => 'today',
    'paymentmethod' => 'paypal',
    'itemdescription1' => 'Custom Service',
    'itemamount1' => '10.00',
    'itemtaxed1' => '0',
);

$adminUsername = 'admin';
$results = localAPI($command, $postData, $adminUsername);

if ($results['result'] == 'success') {
    echo "Invoice created successfully.";
} else {
    echo "Failed to create invoice: " . $results['message'];
}

 

مستندات

در مستندات WHMCS، می‌توانید اطلاعات کاملی درباره توابع مختلف و نحوه استفاده از API داخلی آن پیدا کنید.