2016-02-03 81 views
0

我正在建立我的第一个RoR webapp的过程中,我目前正试图与Shopify建立一个整合。我想在Shopify中创建一个订单。为此,我想使用Shopify webhook。第二步是设置它,以便在处理订单后,我将使用Shopify API更新一些记录。现在我主要关心的是接收webhooks。我一直在寻找Shopify gem的文档,但是我的RoR技能有限,我似乎无法弄清楚。我一直在网上搜索几个小时,但找不到任何明确的示例/解释。消费webhooks shopify-api

我很困惑这个宝石; shopify-api(https://docs.shopify.com/api/authentication/using-api-gem-with-private-app-credentials)。我在Shopify中创建了一个私人应用程序,但之后我迷路了。我应该在哪里放置这段代码,接收webhook后如何调用?

在我看来,这个宝石主要用于访问Shopify API而不是使用WebHooks。我在这一切都错了吗?

回答

2

为了从Shopify接收更改(特别是Order Creation事件),您无需使用任何宝石或第三方进行集成!

这里是我在我的应用程序之前做过的步骤:

1.在您的应用程序提供API接收网络挂接事件

下面是一个例子:

您的路线:

post '/shopify/create_order', to: 'shopify#create_order' 

你的控制器:

class ShopifyController < ApplicationController 
    def create_order 
    # process shopify order here: all info in `params` 
    end 
end 

2.配置从您的Shopify Settings调用webhook。,配置的网址是:

http://your_production_url/shopify/create_order 

如果你想从本地主机进行测试,去step 3

3.(可选)测试从本地主机

下载这个免费的工具:ngrok并将其提取到您的机器。

ngrok http 3000 

所以你会得到从控制台输出这样的: 在你的终端运行ngrok通过此命令生成的转发URL到localhost

enter image description here

复制生成的URL( (例如http://fbc5cf88.ngrok.io),并添加到您在第2步中的Shopify设置

4.(可选但很关键)在您的应用中设置隐私,确保只有Shopify可以打电话给你的API。按照此documentation

Shopify还提供了API与Shopify整合资源:创建/更新productcollectioncollectmetafield,...你可以直接使用它。全部描述在Shopify API documentation。但随着Shopify工作的最简单的方法是shopify_api宝石提供的接口与Shopify(通过ActiceResource)工作

+0

非常感谢。这为我解决了问题。我发现这段代码可以用来验证webhooks:https://github.com/csaunders/shopProductSink/blob/038e8c3f76e96e8c12d0b1c14d1c32a48c679907/app/models/shop_product_sink/webhooks.rb 如果我为这段代码创建了一个模型,我如何使用/将其包含在我的订单控制器中?我目前正在接收我的临时环境中的webhooks,并且订单已成功创建,但它们未经过身份验证,因此任何人都可以创建订单。 – stoerebink

+0

干杯,我刚刚获得认证工作。感谢指针! – stoerebink

0

大概读了上documentation on Webhooks会帮助你找出很多你需要做的

什么从本质上说,这里有你需要开始使用Web挂钩什么概述:

1.创建Web挂钩

,你需要注意的PARAMS做到这一点:

  • 话题:你要挂钩的类型(例如, orders/create
  • 地址:https://myapp.domain.com/hooks/order_create
:你会在(用于如被消耗挂钩的端点的URL

2.创建端点将响应挂钩

注创建时钩 更多信息,您先前指定的同一网址:您还需要实现一个方法来验证您通过终端接收请求来来自Shopify,detailed here.

+0

感谢队友,绝对有帮助 – stoerebink

+0

干杯,我刚拿到认证工作。感谢指针! – stoerebink