我正在构建我的第一个RoR webapp,我正在尝试与Shopify建立集成。每当在Shopify中创建一个订单时,我想在我的Web应用程序中创建一个订单。为此,我想使用Shopify webhook。第二步是设置它,以便在处理完订单后我将使用Shopify API更新一些记录。目前我主要担心的是接收webhooks。我一直在寻找Shopify宝石的文档,但凭借我有限的RoR技能,我似乎无法弄明白。我一直在网上搜索几个小时,但找不到任何明确的例子/解释。
我对这个宝石感到困惑; shopify-api(https://docs.shopify.com/api/authentication/using-api-gem-with-private-app-credentials)。我在shopify中创建了一个私有应用程序,但之后我就输了。我应该在哪里放置这个代码,如何在收到webhook后调用它?
在我看来,这个gem主要用于访问Shopify API而不是使用webhooks。我错了吗?
答案 0 :(得分:2)
要从Shopify接收更改(尤其是ErrorCode=UserErrorAdlsUnauthorizedAccess
事件),您不需要使用任何宝石或第三方进行整合!
以下是我之前在我的应用中执行的步骤:
<强> 1。在您的应用中提供api以接收webhook活动
以下是一个例子:
您的路线:
Order Creation
你的控制器:
post '/shopify/create_order', to: 'shopify#create_order'
<强> 2。配置从您的Shopify Settings调用webhook。配置的网址将为:
class ShopifyController < ApplicationController
def create_order
# process shopify order here: all info in `params`
end
end
如果您想从localhost进行测试,请转到http://your_production_url/shopify/create_order
第3。 (可选)从您的localhost进行测试
下载此免费工具:ngrok并将其解压缩到您的计算机上。 在终端中运行ngrok,通过以下命令为您的localhost生成转发URL:
step 3
所以你将从控制台得到这样的输出:
复制上面生成的网址(例如http://fbc5cf88.ngrok.io)并在步骤2中添加到Shopify设置
<强> 4。 (可选但很关键)在您的应用中设置隐私,以确保只有Shopify可以拨打您的API。请遵循此documentation
Shopify还提供api以与Shopify资源集成:创建/更新ngrok http 3000
,product
,collection
,collect
,...您可以直接使用它。所有内容都在Shopify API documentation进行了描述。但使用Shopify的最简单方法是shopify_api gem,它提供了与Shopify一起使用的界面(通过metafield
)
答案 1 :(得分:0)
大概阅读documentation on Webhooks可以帮助你弄清楚你需要做的很多事情
从本质上讲,这里是您开始使用Web挂钩所需内容的概述:
1。创建您的Web挂钩
POST /admin/webhooks.json
)你需要注意的参数:
orders/create
)https://myapp.domain.com/hooks/order_create
)2。创建将响应挂钩的端点
注意:您还需要实施一种方法来验证通过端点收到的请求来自Shopify,detailed here.