2016-02-03 78 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