2016-11-30 40 views
1

我想執行任務時在Shopify創建訂單,但它似乎如果不聽網絡掛接,我想不通爲什麼。我遵循shopify_app gem的文檔,但它不起作用。Shopify API網絡掛接沒有收到Ruby on Rails的

我跑

rails g shopify_app:add_webhook -t orders/create -a https://example.com/webhooks/orders_create 

初始化程序shopify_app.rb

ShopifyApp.configure do |config| 

... 

    config.webhooks = [ 
    {topic: 'orders/create', address: 'https://myappwebaddress_not_showing_on_stackoverflow/webhooks/orders_create', format: 'json'}, 
    ] 

... 
end 

我使用WebhooksController

module ShopifyApp 
    class WebhooksController < ApplicationController 
    include ShopifyApp::WebhookVerification 


    class ShopifyApp::MissingWebhookJobError < StandardError; end 

    def receive 
     params.try(:permit!) 
     job_args = {shop_domain: shop_domain, webhook: webhook_params.to_h} 
     webhook_job_klass.perform_later(job_args) 
     head :no_content 
    end 

    private 

    def webhook_params 
     params.except(:controller, :action, :type) 
    end 

    def webhook_job_klass 
     "#{webhook_type.classify}Job".safe_constantize or raise ShopifyApp::MissingWebhookJobError 
    end 

    def webhook_type 
     params[:type] 
    end 
    end 
end 

我知道創建網絡掛接,因爲我的應用程序視圖中顯示它並顯示出來。

[#<ShopifyAPI::Webhook:0x007f183012d578 @attributes={"id"=>462377288, "address"=>"https://myappwebaddress_not_showing_on_stackoverflow/webhooks/orders_create", "topic"=>"orders/create", "created_at"=>"2016-11-29T20:29:24-08:00", "updated_at"=>"2016-11-29T20:29:24-08:00", "format"=>"json", "fields"=>[], "metafield_namespaces"=>[]}, @prefix_options={}, @persisted=true>] 

當我通過Shopify創建訂單時,我的應用程序中沒有任何反應。

我要補充,我使用sidekiq處理作業。 Sidekiq正在工作,因爲當我在Shopify中「安裝」應用程序時,它會處理創建webhook的工作。

我缺少處理網絡掛接?我是否還需要在routes.rb中創建一些內容?文檔中沒有說我需要。我試圖創建一個路線post 'webhooks/orders_create' => 'webhooks#receive' 但是,這並沒有做任何事情。

什麼我需要做什麼?

+0

具有u創建Shopify上的網頁鉤? –

+0

我的應用程序在用戶「安裝」我的應用程序時創建webhook。所以,我通過我的Rails應用程序中的初始化程序創建webhook – Doughtz

+0

登錄到shopify管理員面板,單擊設置 - >通知 - >檢查webhook是否存在? –

回答

1

的問題是,由於開發服務器託管於CLOUD9,是隻能通過我的瀏覽器訪問網絡掛接無法訪問端點。