فاما سرورFama Server
خدمات ماژول برای نمایندگان
ابتدا باید یک پوشه جدید برای ماژول خود در مسیر /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 }
هوکها به شما این امکان را میدهند که در نقاط مختلف 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 });
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 داخلی آن پیدا کنید.