Ebay Api - 使用php添加产品
我在使用eBay API时遇到问题,我正尝试将我的库存上传到我的eBay商店。我已经注册为开发人员并阅读了教程和示例,但出于某种原因,这不会起作用,下面是我通过数据库生成的当前XML。Ebay Api - 使用php添加产品
<?xml version="1.0" encoding="utf-8"?>
<AddItems xmlns="urn:ebay:apis:eBLBaseComponents">
<ErrorLanguage>en_US</ErrorLanguage>
<WarningLevel>High</WarningLevel>
<Item>
<Title>Fun Novelty Routemaster Red Bus Mug</Title>
<Description><p>Fun Novelty Routemaster Red Bus Mug</p><p>If you are looking for a novelty gift thats practical and looks great, then check out our funky kitchen and ceramics range.</p><p>The range is made from dolomite ceramics and finished in a high gloss glaze. Each comes in a decorative gift box to complete the look, plus if its a kitchen item then dolomite is food and microwave safe but cannot be put in the dishwasher.</p></Description>
<PrimaryCategory><CategoryID>14899</CategoryID>
</PrimaryCategory>
<StartPrice>9.99</StartPrice>
<CategoryMappingAllowed>true</CategoryMappingAllowed>
<ConditionID>1000</ConditionID>
<Country>GB</Country>
<Currency>GBP</Currency>
<DispatchTimeMax>3</DispatchTimeMax>
<ListingDuration>Days_30</ListingDuration>
<ListingType>FixedPriceItem</ListingType>
<PaymentMethods>PayPal</PaymentMethods>
<PayPalEmailAddress>[email protected]</PayPalEmailAddress>
<PictureDetails><GalleryType>Gallery</GalleryType>
</PictureDetails>
<PostalCode>95125</PostalCode>
<ProductListingDetails><UPC>5055071655654</UPC>
<IncludeStockPhotoURL>true</IncludeStockPhotoURL>
<IncludePrefilledItemInformation>true</IncludePrefilledItemInformation>
<UseFirstProduct>true</UseFirstProduct>
<UseStockPhotoURLAsGallery>true</UseStockPhotoURLAsGallery>
<ReturnSearchResultOnDuplicates>true</ReturnSearchResultOnDuplicates>
</ProductListingDetails>
<Quantity>6</Quantity>
<ReturnPolicy><ReturnsAcceptedOption>ReturnsAccepted</ReturnsAcceptedOption>
<RefundOption>MoneyBack</RefundOption>
<ReturnsWithinOption>Days_14</ReturnsWithinOption>
<Description>If you are not satisfied, return the item for refund. </Description>
<ShippingCostPaidByOption>Buyer</ShippingCostPaidByOption>
</ReturnPolicy>
<ShippingDetails><ShippingType>Flat</ShippingType>
<ShippingServiceOptions><ShippingServicePriority>1</ShippingServicePriority>
<ShippingService>UK_RoyalMailFirstClassStandard</ShippingService>
<FreeShipping>true</FreeShipping>
<ShippingServiceAdditionalCost>0.00</ShippingServiceAdditionalCost>
</ShippingServiceOptions>
</ShippingDetails>
<Site>UK</Site>
</Item>
<RequesterCredentials>
<eBayAuthToken>AUTHC CODE</eBayAuthToken>
</RequesterCredentials>
<WarningLevel>High</WarningLevel>
</AddItems>
,这里是来自eBay
结果The AddItem called failed due to the following error(s):
Error: [21843] The job context object is not supported by Action Service Framework.
我的头和卷曲
$headers = array(
'X-EBAY-API-SITEID:'.SITEID,
'X-EBAY-API-CALL-NAME:AddItem',
'X-EBAY-API-REQUEST-ENCODING:'.RESPONSE_ENCODING,
'X-EBAY-API-COMPATIBILITY-LEVEL:' . API_COMPATIBILITY_LEVEL,
'X-EBAY-API-DEV-NAME:' . API_DEV_NAME,
'X-EBAY-API-APP-NAME:' . API_APP_NAME,
'X-EBAY-API-CERT-NAME:' . API_CERT_NAME,
'Content-Type: text/xml;charset=utf-8'
);
// initialize our curl session
$session = curl_init(API_URL);
// set our curl options with the XML request
curl_setopt($session, CURLOPT_HTTPHEADER, $headers);
curl_setopt($session, CURLOPT_POST, true);
curl_setopt($session, CURLOPT_POSTFIELDS, $xmlRequest);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
// execute the curl request
$responseXML = curl_exec($session);
// close the curl session
curl_close($session);
// return the response XML
return $responseXML;
当从的AddItem更改为AddFixedPriceItemRequest错误更改
Schema XML request error: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize..
当运行前充足的API测试工具它不会工作相同的结果,并且还运行测试工具与示例代码提供它的工作原理,直到我将该示例XML复制到我的文件并尝试运行该程序,然后我收到错误消息回来?
UPDATE
说明标签内的HTML标签打破了XML。对于要使用CDATA附上你的描述一种解决方法:
<Description><![CDATA[ <p>Fun Novelty .. put in the dishwasher.</p>]]></Description>
详情:
-
Error: [21843] The job context object is not supported by Action Service Framework.
似乎是由头部和XML之间的不匹配挑衅。
看到这里的细节:https://stackoverflow.com/a/13791811/2797243
Schema XML request error: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize..
可以有很多原因,你都recieiving这个错误,但我们将只关注2种情况:
- 您可能会收到此错误,因为请求xml文档中给定的根元素没有匹配eBay架构中的任何元素声明。
回答名称:错误20170 - 架构XML请求错误 回答链接:https://ebaydts.com/eBayKBDetails?KBid=897
- 另一个常见原因是您的具有HTML或XML保留字符。对于需要使用CDATA附上描述的解决方法。
eBayAuthToken位于XML的底部。 – nats0128
@ nats0128 ups,对不起。我编辑答案。 –
@ nats0128 descr中的html是问题所在。 –
尝试改变:
<AddItems xmlns="urn:ebay:apis:eBLBaseComponents">
到
<AddItemsRequest xmlns="urn:ebay:apis:eBLBaseComponents">
和:
</AddItems>
到
</AddItemsRequest>
同样的错误,改变了你所说的,甚至把头文件中的Additem改成了AddItemsRequest,并且带回了错误:[2] API调用“AddItemsRequest”在此版本中无效或不受支持。 @Isaac – nats0128
你为什么不使用https://github.com/davidtsadler/ebay-sdk-php做?我会推荐它。 –