我在一个项目中使用 ebay SDK 一段时间了。
最近我尝试导入一些商品,例如手表、手机壳等...并且我使用了 eBay 自己通过 eBay 返回的英国商店页面上的类别 ID他们的“get_category_suggestions”API端点,但eBay似乎有选择地决定拒绝某些项目并引发服务器错误!
为了测试,我做了一个测试固定项目上传函数,如下所示,并带有示例函数调用:
def addFixedItem(title: str, description: str, category: str, photos: list, price: float, ebayconfig: str, ebaydomain: str):
api = Connection(config_file=f"{ebayconfig}", domain=f"{ebaydomain}", debug=False)
request = {
"Item": {
"Title": f"{title}",
"Country": "CN",
"Location": "Shenzhen",
"Site": "US",
"ConditionID": 1000,
"PrimaryCategory": {"CategoryID": f"{category}"},
"Description": f"""<![CDATA[
{description}
]]>""",
"PictureDetails": {
"PictureURL": photos
},
"ListingDuration": "Days_10",
"StartPrice": f"{price}",
"Currency": "USD",
"ShippingDetails": {
"ShippingServiceOptions": {
"FreeShipping": "True",
"ShippingService": "ShippingMethodStandard"
}
},
"DispatchTimeMax": "3",
"ItemSpecifics": {
"NameValueList": [
{"Name": "Brand", "Value": "ADDIESDIVE"},
{"Name": "Department", "Value": "Mens"},
{"Name": "Type", "Value": "Wristwatch"}
]
}
}
}
api.execute("AddFixedPriceItem", request)
print(api.response_json())
addFixedItem("testproditemspecific", '<h1>test text</h1><br><img src="x">', 170, ["https://thissiteisntreal.svg", ], 150, "ebay.yaml", "api.sandbox.ebay.com")
调用时这个函数的键盘类别 ID 为 170,它导入得非常好,如下所示
但是如果我使用手表的建议类别 ID 导入它:31387
我收到错误->
AddFixedPriceItem: Class: RequestError, Severity: Error, Code: 10007, System error. System error. Unable to process your request. Please try again later.'
这应该是服务器端错误,但显然不是我可以控制的,何时发生和不发生
这是一个超级奇怪的问题,我想在这里记录它,以及与人们合作尝试解决它
遇到的问题很有趣,而且答案可能比仅仅是 eBay 服务器端问题更复杂。让我们分解一下可能的原因以及我们如何解决这些问题。
可能原因和解决方案
-
类别特定要求: 正如所怀疑的那样,某些 eBay 类别比其他类别有更严格的规则和要求。手表就是一个很好的例子,因为它通常需要特定的产品标识符(例如,UPC、EAN、ISBN)或其他与品牌、型号和材料相关的属性。
-
要做什么:
- 仔细查看 eBay 文档: 仔细查看 https://developer.ebay.com/devzone/xml/docs/reference/ebay/ 中有关类别 31387(手表)的特定 listing 要求。
- 比较工作列表: 在 eBay 上查找属于类别 31387 的成功列表,并将其与尝试提交的内容进行比较。请注意所有额外的字段或差异。
- 使用“GetCategorySpecifics”: 使用 eBay Trading API 的“GetCategorySpecifics”调用检索类别 31387 的所有必需和推荐的项目属性。这将告诉需要提供哪些其他数据。
-
ItemSpecifics 问题: 在“ItemSpecifics”部分中包含的“NameValueList”可能与所选类别不完全兼容或格式不正确。
-
要做什么:
- 验证 NameValueList: 确保“Department”、“Type”和“Brand”的所有值都对类别 31387 有效。再次,“GetCategorySpecifics”调用将对此有所帮助。
- 检查格式: 验证“ItemSpecifics”的整体格式是否符合 eBay API 文档中的预期结构。即使是微小的差异也会导致问题。
-
沙盒与生产环境: 请记住,在 eBay 沙盒中测试。虽然沙盒对于实验非常有用,但它的行为有时可能与生产环境略有不同。
-
要做什么:
- 测试生产环境(谨慎): 在对的生产 eBay 帐户进行任何更改之前,请确保已准备好处理潜在的列表问题或错误。仔细检查生产环境中的类别要求,因为它们可能与沙盒略有不同。
-
速率限制和 eBay API 问题: eBay 有速率限制,以防止他们的系统过载。如果在短时间内发出太多请求,可能会遇到错误。此外,eBay 的 API 有时可能会遇到临时中断或技术困难。
-
要做什么:
- 处理速率限制: 在的代码中实现错误处理和指数退避。如果收到速率限制错误,请等待一段时间,然后重试请求。
- 检查 eBay API 状态: 访问 eBay 开发者门户以查看是否有任何已知的 API 中断或问题报告。
调试步骤
-
启用调试日志记录: 在的 eBay SDK 配置中启用详细的调试日志记录。这将提供有关 API 请求和响应的更多信息,从而帮助确定问题的根源。
-
隔离问题: 创建一个最小化的测试用例,仅包含提交到类别 31387 所需的基本信息。这将有助于排除其他因素,例如代码的其他部分中的问题。
-
联系 eBay 支持: 如果排除了所有其他原因并且仍然遇到问题,请务必联系 eBay 开发者支持以获取帮助。向他们提供有关遇到的错误、正在使用的 API 调用以及已采取的任何调试步骤的具体详细信息。
请记住,在处理任何 API 时,耐心和系统调试是关键! 祝你好运,我希望这有帮助!
标签:python,xml,ebay-api,ebay-sdk From: 78794216