Shopify API Webhook没有收到Ruby on Rails

时间:2016-11-30 04:40:39

标签: ruby-on-rails shopify webhooks

我想在Shopify中创建订单时执行一项工作,但好像什么都没有收听webhook,我无法弄清楚原因。我按照shopify_app gem的文档进行操作,但它无法正常工作。

我跑了

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

我知道webhook已创建,因为我在应用视图中显示它并显示。

[#<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正在工作,因为当我&#34;安装&#34; Shopify中的应用程序,它处理创建webhook的工作。

处理webhook时我缺少什么?我还需要在routes.rb中创建一些东西吗?文档中没有任何内容说我需要。我尝试创建路线post 'webhooks/orders_create' => 'webhooks#receive' 但是,那没有做任何事情。

我需要做什么?

1 个答案:

答案 0 :(得分:1)

问题是webhook无法访问端点,因为开发服务器托管在cloud9上,只能通过我的浏览器访问。