Как использовать WHMCS Local API (внутренний API) - PullRequest
0 голосов
/ 08 мая 2019

Как использовать WHMCS LocalAPI (InternaAPI)

Привет, у меня возникла проблема с использованием WHMCS LocalAPI. Документация WHMCS очень плохая и неясна в отношении этой проблемы, когда я запускаю этот код, появляется пустая страница и что-то происходит

<?php
require('../init.php');
require('../includes/api.php');
$command = 'AddOrder';
$postData = array(
    'clientid' => '1',
    'domain' => array('domain1.com'),
    'billingcycle' => array('annually'),
    'domaintype' => array('register',),
    'regperiod' => array(1),
    'nameserver1' => 'ns1.demo.com',
    'nameserver2' => 'ns2.demo.com',
    'paymentmethod' => 'zarinpalgw',
);
$adminUsername = 'myadminname'; // Optional for WHMCS 7.2 and later

$results = localAPI($command, $postData, $adminUsername);
print_r($results);


?>

Я ожидал добавить порядок после запуска этого кода. Внешний API очень медленный и по какой-то причине мне не подходит, например, у меня динамический IP, а внешний API работает со статическим IP, потому что IP должен распознаватьсяв WHMCS-> Общие настройки-> Безопасность

1 Ответ

0 голосов
/ 09 мая 2019

Код Internal API в вашем примере выглядит так, как будто он должен работать. Временное включение ошибок PHP может помочь сузить точную причину этой проблемы ( Настройка> Общие параметры> Прочее> Ошибки отображения ), хотя я полагаю, что это связано с тем, как вы инициализируете среду WHMCS в своем PHP файл.

WHMCS предоставляет конкретные рекомендации по созданию пользовательских страниц, что, по-видимому, является тем, что вы пытались сделать в представленном примере. Пользовательские PHP-файлы должны находиться в корневом каталоге WHMCS, однако require('../init.php'); указывает, что ваш скрипт в данный момент находится в подкаталоге. Вы также не должны требовать api.php, так как он уже обрабатывается init.php. Перемещение вашего скрипта в корневой каталог WHMCS и закомментирование строки require('../includes/api.php'); должно помочь решить проблему с пустой страницей.

Обратите внимание: приведенный вами пример не отображает обычный клиентский интерфейс WHMCS и не проверяет, вошел ли пользователь в систему. Если это функциональность, которая вам также понадобится, вы можете создайте страницу с тем же интерфейсом и функциональностью, что и у собственной страницы клиентской области WHMCS. Ниже приведена слегка измененная версия примера кода, который WHMCS предоставляет в своем руководстве для создания страниц клиентской области :

<?php

// Define WHMCS namespaces
use WHMCS\ClientArea;
use WHMCS\Database\Capsule;

// Initialize WHMCS client area
define('CLIENTAREA', true);
require __DIR__ . '/init.php';
$ca = new ClientArea();
$ca->setPageTitle('Your Page Title Goes Here');
$ca->addToBreadCrumb('index.php', Lang::trans('globalsystemname'));
$ca->addToBreadCrumb('mypage.php', 'Your Custom Page Name');
$ca->initPage();

// Uncomment to require a login to access this page
//$ca->requireLogin();

// Uncomment to assign variables to the template system
//$ca->assign('variablename', $value);

// Code to run when the current user IS logged in
if ($ca->isLoggedIn()) {
    $clientName = Capsule::table('tblclients')->where('id', '=', $ca->getUserID())->pluck('firstname');
    $ca->assign('clientname', $clientName);

// Code to run when the current user is NOT logged in
} else {
    $ca->assign('clientname', 'Random User');
}

// Setup the primary and secondary sidebars
Menu::addContext();
Menu::primarySidebar('announcementList');
Menu::secondarySidebar('announcementList');

// Define the template filename to be used (without the .tpl extension)
$ca->setTemplate('mypage');

// Display the contents of the page (generated by the Smarty template)
$ca->output();
...