且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

使用Shopify Admin API创建产品

更新时间:2023-10-25 16:21:52

您有几个问题。在回答之前,重要的是要澄清我从您的措辞和示例代码中假定的一些误解。有3种类型的Shopify Apps

  1. 公共
  2. 自定义
  3. 私有

因此,如果您正在构建专用应用程序,则提供的代码将无法用于创建产品,因为专用应用程序使用基本身份验证,而公共和自定义应用程序使用OAuth 2.0管理身份验证。

我在我的项目中使用同构FETCH,它应该可以在服务器和 客户端。

即使Shopify API可以在服务器和客户端上运行,也不要从客户端调用Shopify API,因为这会暴露您的私人应用凭据。

若要实现您尝试执行的操作,您需要修改Reaction App和后端代码。

  1. 向按钮添加事件侦听器
  2. 向后端服务器发送POST请求
  3. 通过API在Shopify上创建产品
  4. 使用上一步返回的ID将产品添加到购物车
  5. 返回购物车URL作为响应

Reaction中的示例代码将如下所示

function Product() {
  const addProduct = async () => {
    const cart = await fetch("/your-end-point", {
      method: "post",
      body: JSON.stringify({
        // add product params
      }),
    });
  };

  return <button onClick={addProduct}>Add Product</button>;
}

ReactDOM.render(<Product />, document.getElementById("root"));
然后在Node.js应用程序中处理Shopify API部件。我建议使用Official Node.js module for Shopify而不是FETCH。

示例代码将如下所示

const Shopify = require("shopify-api-node");
router.post("/your-end-point", async (req, res) => {
  try {
    const shopify = new Shopify({
      shopName: "your-shop-name",
      apiKey: "your-api-key",
      password: "your-app-password",
    });
    const product = await shopify.product.create(req.body);
    // use product ID from previous request
    const checkout = await shopify.checkout.create({
      /*checkout params */
    });
    res.status(200).send(checkout);
  } catch (ex) {
    console.log(ex);
  }
});