通过邮递员/ Shopify API创建Shopify订单

时间:2019-07-13 10:50:55

标签: javascript oauth postman shopify shopify-app

我碰到了this tutorial,它使用了世界上的每一种技术,旨在展示如何从头开始构建React应用以利用shopify API。但是,this page也描述了一个简单的API调用,以执行或多或少的我所需的工作。

目标是拥有一个完全自定义(极其简单)的结帐流程,并最终在shopify系统中进行。它会是这样的:

可以条带化购买->保存购物订单->谢谢页面重定向。

编辑:看来格式https://api_key:api_secret.@my-store.myshopify.com/admin/api/2019-07/orders.json解决了身份验证问题。通话:

GET https://key:secret@my-test-store.myshopify.com/admin/api/2019-07/orders.json 返回愉快 { "orders": [] },所以可以通过身份验证。

但是,进行POST https://key:secret@my-test-store.myshopify.com/admin/api/2019-07/orders.json

似乎要返回一个隐秘的页面,而不是像这样的错误(它只会导致您的演示商店/应用程序):

enter image description here

因此,总而言之,我有一家商店,一个经过授权的应用程序(可以成功进行身份验证),那么如何以编程方式为existing SKU添加订单?

2 个答案:

答案 0 :(得分:2)

您确定请求中没有cookie吗?因为如果添加Cookie,我可以重现您的确切问题。

使用curl可能更容易,以便对发布的内容有绝对的了解。例如:

# Edit to change app hostname, key/secret, and product/variant/customer ids 

curl -X POST 'https://key:secret@so57018447.myshopify.com/admin/api/2019-07/orders.json' \
-H 'Content-Type: application/json' \
-d '{
  "order": {
    "line_items": [
      {
        "product_id": 2017449607219,
        "variant_id": 17985741619251,
        "quantity": 1
      }
    ],
    "customer": {
      "id": 1257159000115
    },
    "financial_status": "pending"
  }
}
'

响应:

{
  "order": {
    "id":952834392115,
    "email":"",
    "closed_at":null,
    "created_at":"2019-07-15T14:38:18-04:00",
...

但是,如果您想坚持使用Postman,以下是支持屏幕截图,显示了没有cookie的成功和失败的原因:

确认未设置cookie:

enter image description here

成功发布到orders.json端点:

enter image description here

现在,添加一个cookie:

enter image description here

然后您的问题中得到了答复:

enter image description here

答案 1 :(得分:0)

如果您阅读了私人应用程序的文档

  

Shopify在使用基本HTTP身份验证的POST请求中不支持cookie。任何使用基本身份验证并包含cookie的POST请求都将失败,并显示200错误代码。使用具有基本身份验证的cookie可使您的应用暴露于CSRF攻击,例如会话劫持。

https://help.shopify.com/en/api/getting-started/authentication/private-authentication

这是故意的,在客户端这样做是犯罪的。如果您正在服务器端进行操作,则可以使用基本身份验证。但是在客户端,您不应该使用它

如果要在邮递员中使用,则需要将其与access_token

一起使用
  

通过包含请求标头X-Shopify-Access-Token: {access_token},私人应用可以通过Shopify进行身份验证,其中{access_token}被您的私人应用的Admin API密码代替。