开源 > shopify_python_api
Python

shopify_python_api

ShopifyAPI 库允许 Python 开发人员以编程方式访问商店的管理部分

ShopifyAPI 库允许 Python 开发人员以编程方式访问商店的管理部分。

该 API 使用 pyactiveresource 进行访问,以提供类似于 ruby Shopify API gem 的接口。数据本身以 XML 格式通过 HTTP 发送,以与 Shopify 进行通信,Shopify 提供尽可能遵循 REST 原则的 Web 服务。

安装

要轻松安装或升级到最新版本,请使用 pip

shell
pip install --upgrade ShopifyAPI

easy_install

shell
easy_install -U ShopifyAPI

用法

要求

所有 API 使用都通过 Shopify 应用程序进行,这些应用程序由店主为自己的商店创建,或由 Shopify 合作伙伴供其他店主使用

入门

ShopifyAPI 使用 pyactiveresource 与 REST Web 服务进行通信。必须首先使用特定商店的完全授权 URL 配置 pyactiveresource。要获取该 URL,您可以按照以下步骤操作

  1. 首先在合作伙伴管理界面或您的商店管理界面中创建一个新应用程序。对于私有应用程序,您需要 API_KEY 和 PASSWORD,否则您需要 API_KEY 和 SHARED_SECRET。

  2. 对于私有应用程序,您只需要如下设置基本站点 URL

    python
    shop_url = "https://%s:%s@SHOP_NAME.myshopify.com/admin" % (API_KEY, PASSWORD)
    shopify.ShopifyResource.set_site(shop_url)
    

    就这么简单,您完成了,跳到第 6 步并开始使用 API!对于合作伙伴应用程序,您需要在实例化 Session 类之前向其提供两个参数

    python
    shopify.Session.setup(api_key=API_KEY, secret=SHARED_SECRET)
    
  3. 为了访问商店的数据,应用程序需要来自该特定商店的访问令牌。这是一个分为两个阶段的过程。在第一次与商店交互之前,应用程序应将用户重定向到以下 URL

    GET https://SHOP_NAME.myshopify.com/admin/oauth/authorize
    

    并带有以下参数

    • client_id – 必填 – 您的应用程序的 API 密钥
    • scope – 必填 – 所需的作用域列表(此处说明:http://docs.shopify.com/api/tutorials/oauth)
    • redirect_uri – 可选 – 身份验证完成后,商家将被发送到的 URL。默认为应用程序设置中指定的 URL,并且必须与该 URL 的主机相同。

    我们添加了 create_permision_url 方法,以简化此过程,首先实例化您的会话对象

    python
    session = shopify.Session("SHOP_NAME.myshopify.com")
    

    然后调用

    python
    scope=["write_products"]
    permission_url = session.create_permission_url(scope)
    

    或者,如果您想要自定义 redirect_uri

    python
    permission_url = session.create_permission_url(scope, "https://my_redirect_uri.com")
    
  4. 授权后,商店会将所有者重定向到您应用程序的返回 URL,并带有名为“code”的参数。这是一个临时令牌,应用程序可以使用该令牌交换永久访问令牌。进行以下调用

    POST https://SHOP_NAME.myshopify.com/admin/oauth/access_token
    

    并带有以下参数

    • client_id – 必填 – 您的应用程序的 API 密钥
    • client_secret – 必填 – 您的应用程序的共享密钥
    • code – 必填 – 您在步骤 3 中收到的代码

    您将在响应中获得永久访问令牌。

    有一种方法可以发出请求并为您获取令牌。将从上一次调用中收到的所有参数(shop、code、timestamp、signature)作为字典传递,该方法将验证参数,提取临时代码,然后请求您的令牌

    python
    token = session.request_token(params)
    

    此方法会将令牌保存到会话对象并返回。对于未来的会话,只需在创建会话对象时传递令牌即可。

    python
    session = shopify.Session("SHOP_NAME.myshopify.com", token)
    
  5. 必须先激活会话才能使用

    python
    shopify.ShopifyResource.activate_session(session)
    
  6. 现在,您已准备好向您的商店发出授权的 API 请求!数据将作为 ActiveResource 实例返回

    python
    shop = shopify.Shop.current
    
    # Get a specific product
    product = shopify.Product.find(179761209)
    
    # Create a new product
    new_product = shopify.Product()
    new_product.title = "Burton Custom Freestyle 151"
    new_product.product_type = "Snowboard"
    new_product.vendor = "Burton"
    success = new_product.save() #returns false if the record is invalid
    # or
    if new_product.errors:
        #something went wrong, see new_product.errors.full_messages() for example
    
    # Update a product
    product.handle = "burton-snowboard"
    product.save()
    

    或者,您可以使用 temp 初始化会话并执行命令,该命令还处理临时设置 ActiveResource::Base.site

    python
    with shopify.Session.temp("SHOP_NAME.myshopify.com", token):
       product = shopify.Product.find()
    
  7. 如果要使用其他商店,则首先需要清除会话:

    python
    shopify.ShopifyResource.clear_session
    

控制台

此软件包还包括 shopify_api.py 脚本,以便轻松打开交互式控制台以使用 API 和商店。

  1. 获取一个私有 API 密钥和密码,以用于您的商店(“入门”中的第 2 步)

  2. 使用 shopify_api.py 脚本保存商店的凭据,以便快速登录。该脚本使用 PyYAML 以与 ruby shopify_api 相同的格式保存和加载连接配置。

    shell
    shopify_api.py add yourshopname
    

    按照商店域名、API 密钥和密码的提示操作。

  3. 启动连接的控制台。

    shell
    shopify_api.py console
    
  4. 要查看完整命令列表,请键入

    shell
    shopify_api.py help
    

使用开发版本

可以使用以下命令构建开发版本

    shell
    python setup.py sdist

然后可以使用 pip 安装该软件包

    shell
    pip install --upgrade dist/ShopifyAPI-*.tar.gz

或 easy_install

    shell
    easy_install -U dist/ShopifyAPI-*.tar.gz

注意

从源树运行时,请使用 bin/shopify_api.py 脚本。它会将 lib 目录添加到 sys.path 的开头,因此不会使用已安装的版本。

限制

目前不支持

其他资源

版权所有 (c) 2012 “Shopify inc.”。有关详细信息,请参阅 LICENSE。