PHP中的eBay API调用返回“缺少特定于商品的品牌”错误

PHP中的eBay API调用返回“缺少特定于商品的品牌”错误,php,ebay-api,Php,Ebay Api,My API与易趣的集成开始显示以下错误消息: [结果]=>21919403:缺少项目特定品牌。将品牌添加到此列表,输入有效值,然后重试 我知道这与缺少XML标记有关。我甚至尝试将标签添加到这个xml中;它不起作用: $requestXmlBody .= "<ItemSpecifics> "; foreach ($ebayApi_itemspecifics as $ebayApi_itemspecifickey=>$ebayApi_itemspecificvalue) {

My API与易趣的集成开始显示以下错误消息:

[结果]=>21919403:缺少项目特定品牌。将品牌添加到此列表,输入有效值,然后重试

我知道这与缺少XML标记有关。我甚至尝试将标签添加到这个xml中;它不起作用:

$requestXmlBody .= "<ItemSpecifics> ";
foreach ($ebayApi_itemspecifics as $ebayApi_itemspecifickey=>$ebayApi_itemspecificvalue) {
    $requestXmlBody .= "<NameValueList><Name>" . str_replace('&', '&amp;', $ebayApi_itemspecifickey) . "</Name>
                        <Value>".$ebayApi_itemspecificvalue."</Value></NameValueList>";           
}

$requestXmlBody .= "  <NameValueList>
        <Name>Brand</Name>
        <Value>Navdari</Value>
    </NameValueList> 
  </ItemSpecifics>";

在过去一年中,易趣一直在转换许多产品类别,要求在每个物品上提供UPC/品牌/MPN信息。幸运的是,卖家可以使用默认值

您应该使用的最佳实践流程如下:

获取类别详细信息以确定需要哪些字段。使用GetCategoryFeatures调用获取这些详细信息。通常需要处理4个标识符:

UPC MPN/品牌 ISBN 伊恩 一旦你确定在这种情况下你的物品缺少什么,你就需要品牌,你可以尝试在物品细节中应用适当的信息,看起来你已经尝试过了。如果这不起作用,您可以尝试加载默认值。再一次最佳实践有点复杂,但

使用GeteBayDetails API调用检索DetailNameCodeType.ProductDetails。您正在查找“ProductDetails.ProductIdentifierUnavailableText”。这是您可以添加到ItemSpecifics中的默认文本,以提交没有品牌的列表。 一旦所有这些都完成了,您就可以简单地将默认文本插入到您的列表中并试一试。通常对于“品牌”,您只需插入“无品牌”。我可以说我在硬编码值时遇到了一些奇怪的问题。偶尔我会有一个UPC“不适用”的列表失败,如果我检索到默认文本“不适用”,并将UPC设置为检索到的UPC默认值,那么它工作得很好。这可能与字符集编码有关,特别是因为这是eBay要求您在获得应用程序认证时处理的事情之一,如果我记得的话,必须是UTF-8


不幸的是,我使用的是eBay的.NET SDK,因此我的所有代码不会直接转移到您的问题上,尽管这是完全相同的问题。我猜在您的情况下,易趣根本不知道您要提交的品牌。

在过去一年中,易趣一直在转换许多产品类别,要求在每个物品上提供UPC/brand/MPN信息。幸运的是,卖家可以使用默认值

您应该使用的最佳实践流程如下:

获取类别详细信息以确定需要哪些字段。使用GetCategoryFeatures调用获取这些详细信息。通常需要处理4个标识符:

UPC MPN/品牌 ISBN 伊恩 一旦你确定在这种情况下你的物品缺少什么,你就需要品牌,你可以尝试在物品细节中应用适当的信息,看起来你已经尝试过了。如果这不起作用,您可以尝试加载默认值。再一次最佳实践有点复杂,但

使用GeteBayDetails API调用检索DetailNameCodeType.ProductDetails。您正在查找“ProductDetails.ProductIdentifierUnavailableText”。这是您可以添加到ItemSpecifics中的默认文本,以提交没有品牌的列表。 一旦所有这些都完成了,您就可以简单地将默认文本插入到您的列表中并试一试。通常对于“品牌”,您只需插入“无品牌”。我可以说我在硬编码值时遇到了一些奇怪的问题。偶尔我会有一个UPC“不适用”的列表失败,如果我检索到默认文本“不适用”,并将UPC设置为检索到的UPC默认值,那么它工作得很好。这可能与字符集编码有关,特别是因为这是eBay要求您在获得应用程序认证时处理的事情之一,如果我记得的话,必须是UTF-8


不幸的是,我使用的是eBay的.NET SDK,因此我的所有代码不会直接转移到您的问题上,尽管这是完全相同的问题。我猜在您的情况下,易趣根本不识别您试图提交的品牌。

以下是可行的解决方案:

$this->item->ProductListingDetails = new Types\ProductListingDetailsType();
$this->item->ProductListingDetails->UPC = 'Does not apply';

$this->item->ItemSpecifics = new Types\NameValueListArrayType();

$specific = new Types\NameValueListType();
$specific->Name = 'Brand';
$specific->Value[] = 'BrandValue';
$this->item->ItemSpecifics->NameValueList[] = $specific;

$specific = new Types\NameValueListType();
$specific->Name = 'MPN';
$specific->Value[] = 'MPNValue';
$this->item->ItemSpecifics->NameValueList[] = $specific;

以下是工作解决方案:

$this->item->ProductListingDetails = new Types\ProductListingDetailsType();
$this->item->ProductListingDetails->UPC = 'Does not apply';

$this->item->ItemSpecifics = new Types\NameValueListArrayType();

$specific = new Types\NameValueListType();
$specific->Name = 'Brand';
$specific->Value[] = 'BrandValue';
$this->item->ItemSpecifics->NameValueList[] = $specific;

$specific = new Types\NameValueListType();
$specific->Name = 'MPN';
$specific->Value[] = 'MPNValue';
$this->item->ItemSpecifics->NameValueList[] = $specific;

请注意,我会考虑修改您的代码列表以使其更可读。请注意,我会考虑修改您的代码列表以使其更可读。