shopify webhooks 未在生产中触发
shopify webhooks not firing in production
我使用 shopify-api-node 包制作了一个私人应用程序,它在使用 ngrok 的本地开发中运行完美。
我注册了一个 webhook "products/update",它工作正常。
已注册 url 本地:https://example.ngrok.io/webhooks/product-update
但是在生产环境中注册了同一个 webhook,webhook 没有被触发
已注册 url 生产:https://custom.example.in/webhooks/product-update
当本地服务器和生产服务器都是 运行 时,webhook 仅被触发到本地服务器(通过 ngrok 建立隧道)。
我在生产中使用 nginx 作为反向代理。我已经检查了 nginx 的 access.log 文件,但是 shopify 没有触发 webhook 请求。我尝试创建一个新的私人应用程序但没有帮助。
可能是什么问题?提前致谢。
您需要提供更多信息。你怎么知道生产环境中的 webhook 没有触发?您是否证明了创建 webhook 本身时已创建?当您检查 Webhook 对象时,它看起来像什么?一切都好吗?
如果 webhook 存在,并且对象看起来都不错,接下来要调查的是您的 public 生产服务器。
99/100 webhook 问题不是 Shopify 而是开发人员做错的。在询问问题之前,请确保您已完成所有操作!
一些常见问题是:
- 无效的 SSL 证书,例如一个是 self-signed 或一个缺少中间证书。您可以使用 https://www.ssllabs.com/ssltest/
检查问题
- 您的服务器或应用未配置为接受
POST
请求,而是仅接受其他方法。在命令行中,您可以通过使用 curl
向您的 webhook 端点发出 POST 请求来检查这一点。
- 您的应用已实现网络钩子验证逻辑,并且您正在尝试使用您的开发应用密码来验证生产网络钩子。
- 您创建的 webhook 已被取消,因为 Shopify 没有足够快地收到 200 状态响应。您可以使用 Webhooks API 列出 Webhooks 并验证您的 Webhooks 是否仍在注册。
确保您已使用 certificate.crt、[ 设置 next.js 服务器的 SSL =18=]private.key
和 ca_bundle.crt.
示例:
var options = {
key: fs.readFileSync(__dirname + "/../certificates/server.key"),
cert: fs.readFileSync(__dirname + "/../certificates/server.crt"),
ca: fs.readFileSync(__dirname + "/../certificates/ca_bundle.crt"),
};
http.createServer(server.callback()).listen(8081);
https.createServer(options, server.callback()).listen(443);
我使用 shopify-api-node 包制作了一个私人应用程序,它在使用 ngrok 的本地开发中运行完美。 我注册了一个 webhook "products/update",它工作正常。
已注册 url 本地:https://example.ngrok.io/webhooks/product-update
但是在生产环境中注册了同一个 webhook,webhook 没有被触发
已注册 url 生产:https://custom.example.in/webhooks/product-update
当本地服务器和生产服务器都是 运行 时,webhook 仅被触发到本地服务器(通过 ngrok 建立隧道)。
我在生产中使用 nginx 作为反向代理。我已经检查了 nginx 的 access.log 文件,但是 shopify 没有触发 webhook 请求。我尝试创建一个新的私人应用程序但没有帮助。
可能是什么问题?提前致谢。
您需要提供更多信息。你怎么知道生产环境中的 webhook 没有触发?您是否证明了创建 webhook 本身时已创建?当您检查 Webhook 对象时,它看起来像什么?一切都好吗?
如果 webhook 存在,并且对象看起来都不错,接下来要调查的是您的 public 生产服务器。
99/100 webhook 问题不是 Shopify 而是开发人员做错的。在询问问题之前,请确保您已完成所有操作!
一些常见问题是:
- 无效的 SSL 证书,例如一个是 self-signed 或一个缺少中间证书。您可以使用 https://www.ssllabs.com/ssltest/ 检查问题
- 您的服务器或应用未配置为接受
POST
请求,而是仅接受其他方法。在命令行中,您可以通过使用curl
向您的 webhook 端点发出 POST 请求来检查这一点。 - 您的应用已实现网络钩子验证逻辑,并且您正在尝试使用您的开发应用密码来验证生产网络钩子。
- 您创建的 webhook 已被取消,因为 Shopify 没有足够快地收到 200 状态响应。您可以使用 Webhooks API 列出 Webhooks 并验证您的 Webhooks 是否仍在注册。
确保您已使用 certificate.crt、[ 设置 next.js 服务器的 SSL =18=]private.key 和 ca_bundle.crt.
示例:
var options = {
key: fs.readFileSync(__dirname + "/../certificates/server.key"),
cert: fs.readFileSync(__dirname + "/../certificates/server.crt"),
ca: fs.readFileSync(__dirname + "/../certificates/ca_bundle.crt"),
};
http.createServer(server.callback()).listen(8081);
https.createServer(options, server.callback()).listen(443);