如何使用WHMCS本地api(内部API)

时间:2019-05-08 18:49:18

标签: api whmcs

如何使用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一起使用,因为必须在WHMCS->常规设置->安全性

中识别IP

1 个答案:

答案 0 :(得分:0)

示例中的Internal API代码看起来应该可以工作。暂时启用PHP错误可以帮助缩小导致此问题(Setup > General Settings > Other > Display Errors)的确切原因,尽管我认为这是由于您在PHP文件中初始化WHMCS环境的方式所致。

WHMCS提供了有关构建自定义页面的特定准则,这似乎是您在提供的示例中尝试执行的操作。自定义PHP文件必须位于WHMCS根目录中,但是require('../init.php');表示您的脚本当前位于子目录中。您也不应该需要api.php,因为init.php已经在处理它。 将脚本移至WHMCS根目录并注释掉require('../includes/api.php');行,有望解决空白页问题。

请注意::您提供的示例不会显示正常的WHMCS客户端界面,也不会检查用户是否已登录。如果您要使用此功能,那么您也需要可以创建具有与本机WHMCS客户区页面相同的界面和功能的页面。以下是WHMCS在其creating client area pages指南中提供的示例代码的略微修改版本:

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