如何解决Rails:Shopify 应用订单创建的 webhook 作业不执行
我想在 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',{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)
一切正常。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。