我创建了一个WoodPress REST API自定义端点,用作WooCommerce中的Webhook URL,以便转换接收到的数据,然后将其发送到第三方系统,但该端点显然没有接收到任何数据。我通过使用Postman将一些JSON数据发送到我的自定义端点来测试代码,它只有在安装另一个P之后才能工作;ugin以启用基本身份验证。我想知道问题是否是因为webhook需要身份验证才能将数据发布到同一个域?如果是这样的话,我不知道在WooCommerce的Webhook设置中在哪里设置基本身份验证。
这是我的代码:
function woocbz_CallAPI($method, $url, $data = false)
{
$curl = curl_init();
switch ($method) {
case "POST":
curl_setopt($curl, CURLOPT_POST, 1);
if ($data) {
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
break;
case "PUT":
curl_setopt($curl, CURLOPT_PUT, 1);
break;
default:
if ($data) {
$url = sprintf("%s?%s", $url, http_build_query($data));
}
}
// Optional Authentication:
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "username:password");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
function woocbz_order_created(WP_REST_Request $request)
{
$method = \'POST\';
$url = \'https://webhook.site/2e5e23db-68ef-4d03-b9ec-687309d35166\';
$data = $request->get_json_params();
$user_data = array(
\'order_id\' => $data[\'id\'],
\'memo\' => $data[\'order_key\'],
\'status\' => $data[\'status\']
);
$resultado = woocbz_CallAPI($method, $url, $user_data);
return $data;
}
add_action(
\'rest_api_init\',
function () {
register_rest_route(
\'woocbz/v1\',
\'/new-order\',
array(
\'methods\' => \'POST\',
\'callback\' => \'woocbz_order_created\',
\'permission_callback\' => function () {
return true;
}
)
);
}
);
任何帮助都将不胜感激。