使用Python与eBay API进行交互
- 获取秘钥与访问sandbox
- 创建ebay开发者账号
- 创建sandbox测试用户
- 获取Python Ebay SDK
- Trading API
- 生成令牌
- 使用 AddItem API 调用创建项目
获取秘钥与访问sandbox
创建ebay开发者账号
- 创建一个developer帐户,以获取将包含在 API 调用中以对我们进行身份验证的凭据。导航到Ebay developers program website,然后单击导航菜单中
register
。 - 账号注册成功后,就可以继续访问开发者网站功能。要生成API秘钥和凭证,可以导航到应用程序秘钥页面。在这里可以看到
sandbox
和production
生成密钥。sandbox
是eBay网站的一种副本,其主要功能是让开发人员在安全的环境中执行测试,而不必担心损坏真实的商店。production
相反,是"真实"的环境。
每个API秘钥有三个元素组成:App ID
、Dev ID
和Cert ID
。若要使用某些特定的API,例如Trading API
,并与store进行交互时,还需要获取Token
。
创建sandbox测试用户
当你还在eBay开发者网站时,在顶部菜单点击Tools & samples" -> “Ebay Sandbox” -> "Sandbox user registration。将被重定向到包含该Register for Sandbox表单的页面。此表单将用于创建sandbox用户,如下截图所示,它将具有TESTUSER_前缀:
获取Python Ebay SDK
在命令行直接使用pip python包管理器安装:
pip install ebaysdk
在开始调用API以及向它们传递参数之前,我们应该注意在文件根目录下创建ebay.yaml
。我们可以用它来存储我们的证书,而不是在每次准备API调用时直接提供它们。
name: ebay_api_config
# Trading API Sandbox - https://www.x.com/developers/ebay/products/trading-api
api.sandbox.ebay.com:
compatability: 719
appid: ENTER_YOUR_APPID_HERE
certid: ENTER_YOUR_CERTID_HERE
devid: ENTER_YOUR_DEVID_HERE
token: ENTER_YOUR_TOKEN_HERE
# Trading API - https://www.x.com/developers/ebay/products/trading-api
api.ebay.com:
compatability: 719
appid: ENTER_YOUR_APPID_HERE
certid: ENTER_YOUR_CERTID_HERE
devid: ENTER_YOUR_DEVID_HERE
token: ENTER_YOUR_TOKEN_HERE
# Finding API - https://www.x.com/developers/ebay/products/finding-api
svcs.ebay.com:
appid: ENTER_YOUR_APPID_HERE
version: 1.0.0
# Shopping API - https://www.x.com/developers/ebay/products/shopping-api
open.api.ebay.com:
appid: ENTER_YOUR_APPID_HERE
version: 671
Trading API
生成令牌
在调用Trading API
,并与sandbox交互时,必须提供App ID
、Dev ID
、Cert ID
和我们现在要生成的一个令牌。
在eBay开发者网站,导航到应用程序秘钥页面,在Sandbox
的App ID
的左侧点击User Tokens
,将被重定向到下图中的部分:
点击按钮Sign in to Sandbox
,进入到sandbox site 的登录页面。必须使用之前创建好的sandbox "test "用户。一旦登录成功,则提示确认你要授予对你的账户数据的访问权。
点击 "同意 "按钮,你将被重新引导到token生成页面。在这里你会看到新生成的令牌。
下一步就是复制文件中的令牌和其他凭据ebay.yaml
。
使用 AddItem API 调用创建项目
在项目的根目录中,创建新的Python文件additem.py
。
#!/usr/bin/env python3
from ebaysdk.trading import Connection
if __name__ == '__main__':
api = Connection(config_file="ebay.yaml", domain="api.sandbox.ebay.com", debug=True)
request = {
"Item": {
"Title": "Professional Mechanical Keyboard",
"Country": "US",
"Location": "IT",
"Site": "US",
"ConditionID": "1000",
"PaymentMethods": "PayPal",
"PayPalEmailAddress": "nobody@gmail.com",
"PrimaryCategory": {"CategoryID": "33963"},
"Description": "A really nice mechanical keyboard!",
"ListingDuration": "Days_10",
"StartPrice": "150",
"Currency": "USD",
"ReturnPolicy": {
"ReturnsAcceptedOption": "ReturnsAccepted",
"RefundOption": "MoneyBack",
"ReturnsWithinOption": "Days_30",
"Description": "If you are not satisfied, return the keyboard.",
"ShippingCostPaidByOption": "Buyer"
},
"ShippingDetails": {
"ShippingServiceOptions": {
"FreeShipping": "True",
"ShippingService": "USPSMedia"
}
},
"DispatchTimeMax": "3"
}
}
api.execute("AddItem", request)