You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用WHMCS API与curl添加订单时自定义字段未插入问题

WHMCS AddOrder API自定义字段无法写入的解决办法

你的代码中customfields参数的格式错误是导致字段值无法写入系统的核心问题,同时你也遗漏了ID为184的自定义字段值。

问题分析

WHMCS的AddOrder API对customfields参数的要求是:直接传入base64编码后的序列化数组,而不是将编码后的值再包裹进一个PHP数组中。你当前的写法array(base64_encode(...))会导致API无法正确解析字段数据。

修正后的代码

<?php
// 初始化cURL会话
$ch = curl_init();

// 设置API参数
$postfields = array(
    'action' => 'AddOrder',
    'username' => 'username',
    'password' => 'password',
    'accesskey' => '12345678',
    'clientid' => '456',
    'pid' => '37',
    // 修正格式:直接传入base64编码的序列化数组,包含两个自定义字段
    'customfields' => base64_encode(serialize(array(
        "183" => "Google",
        "184" => "你的第二个自定义字段值"
    ))),
    'paymentmethod' => 'banktransfer',
    'responsetype' => 'json',
);

// 设置cURL选项
curl_setopt($ch, CURLOPT_URL, 'https://example.com/includes/api.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postfields));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// 执行请求并获取响应
$response = curl_exec($ch);

// 检查cURL错误
if (curl_errno($ch)) {
    echo 'cURL错误: ' . curl_error($ch);
}

// 关闭cURL会话
curl_close($ch);

// 输出响应
echo $response;
?>

额外验证要点

  • 确认ID183、184的自定义字段是与产品ID37关联的字段,如果是全局订单自定义字段,需核对WHMCS版本是否支持通过AddOrder API直接写入
  • 检查API账号的权限,确保拥有AddOrder接口的调用权限,以及自定义字段的读写权限
  • 可以单独打印base64_encode(serialize(...))的结果,在WHMCS后台的API测试工具中验证格式是否正确

内容的提问来源于stack exchange,提问作者Shamar Gray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 21:56:01