Rails:Shopify 应用订单创建 webhook 作业未执行
Rails : Shopify app orders create webhook job not performing
我想在 Shopify 中创建订单时记录订单数据,我的 shopify rails 应用程序在 webhook 控制器中接收 web 挂钩数据,但作业未执行。我遵循了 shopify_app gem (8.2.6) 的文档,但它不起作用。
目前我正在使用 ngrok 隧道开发环境。
此问题与开发和生产环境有关。
活动版本:2020-04
这是配置
config.webhooks = [
{topic: 'customers/create', address: Rails.configuration.business_script_endpoint+'/custom/webhooks/customers_create', format: 'json'},
{topic: 'checkouts/create', address: Rails.configuration.business_script_endpoint+'/custom/webhooks/checkouts_create', format: 'json'},
{topic: 'orders/create', address: Rails.configuration.business_script_endpoint+'/custom/webhooks/orders_create', format: 'json'}
]
这是网络钩子控制器的代码
module ShopifyApp
class WebhooksController < ActionController::Base
include ShopifyApp::WebhookVerification
class ShopifyApp::MissingWebhookJobError < StandardError; end
def receive
puts 'Here in webhook receive'
params.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_job_klass_name.safe_constantize or raise ShopifyApp::MissingWebhookJobError
end
def webhook_job_klass_name(type = webhook_type)
puts [webhook_namespace, "#{type}_job"].compact.join('/')
[webhook_namespace, "#{type}_job"].compact.join('/').classify
end
def webhook_type
params[:type]
end
def webhook_namespace
ShopifyApp.configuration.webhook_jobs_namespace
end
end
end
我可以看到 puts 消息 这里在 webhook 接收
这是订单创建作业代码
class OrdersCreateJob < ActiveJob::Base
def perform(shop_domain:, webhook:)
shop = Shop.find_by(shopify_domain: shop_domain)
puts 'Order create job started'
end
end
我无法收到 puts 消息 Order create job started 因为它没有执行作业。
结帐创建网络钩子在这种情况下工作正常。其他两个订单和客户创建没有执行。
我需要做什么?
已找到此问题的解决方案。
当我更改网络钩子控制器接收功能时
webhook_job_klass.perform_later(job_args)
和
webhook_job_klass.perform_now(job_args)
工作正常。
我想在 Shopify 中创建订单时记录订单数据,我的 shopify rails 应用程序在 webhook 控制器中接收 web 挂钩数据,但作业未执行。我遵循了 shopify_app gem (8.2.6) 的文档,但它不起作用。
目前我正在使用 ngrok 隧道开发环境。 此问题与开发和生产环境有关。
活动版本:2020-04
这是配置
config.webhooks = [
{topic: 'customers/create', address: Rails.configuration.business_script_endpoint+'/custom/webhooks/customers_create', format: 'json'},
{topic: 'checkouts/create', address: Rails.configuration.business_script_endpoint+'/custom/webhooks/checkouts_create', format: 'json'},
{topic: 'orders/create', address: Rails.configuration.business_script_endpoint+'/custom/webhooks/orders_create', format: 'json'}
]
这是网络钩子控制器的代码
module ShopifyApp
class WebhooksController < ActionController::Base
include ShopifyApp::WebhookVerification
class ShopifyApp::MissingWebhookJobError < StandardError; end
def receive
puts 'Here in webhook receive'
params.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_job_klass_name.safe_constantize or raise ShopifyApp::MissingWebhookJobError
end
def webhook_job_klass_name(type = webhook_type)
puts [webhook_namespace, "#{type}_job"].compact.join('/')
[webhook_namespace, "#{type}_job"].compact.join('/').classify
end
def webhook_type
params[:type]
end
def webhook_namespace
ShopifyApp.configuration.webhook_jobs_namespace
end
end
end
我可以看到 puts 消息 这里在 webhook 接收
这是订单创建作业代码
class OrdersCreateJob < ActiveJob::Base
def perform(shop_domain:, webhook:)
shop = Shop.find_by(shopify_domain: shop_domain)
puts 'Order create job started'
end
end
我无法收到 puts 消息 Order create job started 因为它没有执行作业。
结帐创建网络钩子在这种情况下工作正常。其他两个订单和客户创建没有执行。 我需要做什么?
已找到此问题的解决方案。 当我更改网络钩子控制器接收功能时
webhook_job_klass.perform_later(job_args)
和
webhook_job_klass.perform_now(job_args)
工作正常。