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

Emag Marketplace API读取指定ID产品报价时筛选器失效问题求助

Emag Marketplace API读取指定ID产品报价时筛选器失效问题求助

看起来你遇到的问题是调用Emag Marketplace API读取ID为33的产品报价时,筛选条件没生效,返回了所有产品条目对吧?我来帮你分析下可能的问题点和对应的解决方案:


1. 认证方式冲突,可能导致参数识别异常

你在代码里同时用了两种Basic认证的设置方式:CURLOPT_USERPWD和手动构造Authorization请求头。这两种方式本质上是重复的,服务器可能接收到混乱的认证信息,进而影响对请求参数的正确解析。

建议只保留其中一种认证方式,比如去掉CURLOPT_USERPWD,只用手动构造的Authorization头,这样能避免冲突。

2. 参数传递方式可能不符合API要求

首先你需要确认Emag API的product_offer/read接口,到底是用GET参数传递产品ID,还是需要通过POST请求体来传递。有些读取类接口也可能要求用POST传递筛选条件,而不是URL参数。

另外要注意:如果接口要求JSON格式的请求体,直接传递键值对是不行的,需要把参数编码成JSON字符串。

修正后的代码示例

方案一:保留GET请求,修正认证方式

$ch = curl_init();

// 统一管理认证凭证
$authUser = 'email@address.hu';
$authPass = 'pass';
$authCredentials = $authUser . ':' . $authPass;

curl_setopt($ch, CURLOPT_URL, 'https://marketplace.emag.hu/api-3/product_offer/read?id=33');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); // 建议开启SSL验证,提升安全性
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0); // 如果不需要响应头,设为0避免干扰结果
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
// 只保留手动构造的Authorization头
curl_setopt($ch, CURLOPT_HTTPHEADER, array( 
    "Authorization: Basic " . base64_encode($authCredentials),
    'Content-Type: application/json'
)); 

// 增加错误检查,方便排查问题
$result = curl_exec($ch);
if(curl_errno($ch)){
    echo 'Curl请求错误: ' . curl_error($ch);
}
curl_close($ch);
print($result);

方案二:改用POST请求,传递JSON格式参数

如果API要求用POST传递筛选条件,可以试试这个版本:

$ch = curl_init();

$authUser = 'email@address.hu';
$authPass = 'pass';
$authCredentials = $authUser . ':' . $authPass;

curl_setopt($ch, CURLOPT_URL, 'https://marketplace.emag.hu/api-3/product_offer/read');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
// 构造JSON格式的请求体
$postData = json_encode(array('id' => 33));
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_HTTPHEADER, array( 
    "Authorization: Basic " . base64_encode($authCredentials),
    'Content-Type: application/json'
)); 

$result = curl_exec($ch);
if(curl_errno($ch)){
    echo 'Curl请求错误: ' . curl_error($ch);
}
curl_close($ch);
print($result);

额外建议

  • 优先查看Emag Marketplace API的官方文档,确认product_offer/read接口的正确请求方法和参数名称,这是解决问题最直接的依据(比如有些API可能用product_id而不是id作为参数名)。
  • 不要长期将CURLOPT_SSL_VERIFYPEER设为false,这会带来安全风险。如果遇到SSL证书验证失败,可以下载对应CA证书,用CURLOPT_CAINFO指向证书文件。

备注:内容来源于stack exchange,提问作者mdean

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 12:13:12