【问题标题】:Connection refused error when using Stripe webhooks使用 Stripe webhook 时出现连接被拒绝错误
【发布时间】:2021-07-01 14:43:10
【问题描述】:

我在尝试接收 webhook 时经常收到连接被拒绝错误。

(venv) alexa@main:/etc/nginx/sites-available$ stripe listen --forward-to localhost:5000/webhook/
go package net: built with netgo build tag; using Go's DNS resolver
> Ready! Your webhook signing secret is whsec_************************* (^C to quit)
2021-04-05 18:13:03   --> customer.subscription.updated [evt_1Icwv5HrsuAsSZROjKy4Z5CK]
2021-04-05 18:13:03            [ERROR] Failed to POST: Post "http://localhost:5000/webhook/": dial tcp 127.0.0.1:5000: connect: connection refused)

端口已通过我的防火墙启用:

To                         Action      From
--                         ------      ----
5000                       ALLOW       Anywhere
5000/tcp                   ALLOW       Anywhere
22/tcp                     ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
5555                       ALLOW       Anywhere
5000 (v6)                  ALLOW       Anywhere (v6)
5000/tcp (v6)              ALLOW       Anywhere (v6)
22/tcp (v6)                ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)
5555 (v6)                  ALLOW       Anywhere (v6)

我的 web 应用在 Ubuntu 20.10 上运行

按照 Justin Michael 在 cmets 中的建议运行 curl -v -X POST http://localhost:5000/webhook/ 后,我得到以下结果:

*   Trying 127.0.0.1:5000...
* TCP_NODELAY set
* connect to 127.0.0.1 port 5000 failed: Connection refused
* Failed to connect to localhost port 5000: Connection refused
* Closing connection 0
curl: (7) Failed to connect to localhost port 5000: Connection refused

【问题讨论】:

  • 该错误表明 Stripe CLI 尝试将 POST 请求转发到 http://localhost:5000/webhook/ 被拒绝。不涉及您的防火墙;这是从 Stripe CLI 向localhost:5000 上运行的任何内容发出的本地请求。您可以运行以下命令并将输出添加到您的问题中吗? curl -v -X POST http://localhost:5000/webhook/
  • 谢谢。我在上面的问题中添加了输出。我尝试用 Linux 服务器的 IP 地址替换 'localhost' - 结果相同。在我的本地计算机上测试 web-app 和 Stripe webhook 时,使用 'localhost' 的相同命令似乎工作正常。
  • 输出表明连接被拒绝(与 Stripe CLI 尝试时相同)。你能解释一下你的测试设置吗?您的 webhook 代码在哪里运行?您提到涉及服务器?通常 Stripe CLI 只用于本地测试;服务器混在一起是不寻常的。
  • 当然。我在我的个人电脑上开发了一个网络应用程序。我测试了 Stripe 的功能,包括。 Webhooks 和一切工作正常。现在我在 Linode 虚拟服务器上部署网络应用程序并再次执行相同的测试。用服务器的 IP 地址替换 'localhost' 后,错误实际上不再是“连接被拒绝”,而是 webhook 错误 400,我试图弄清楚如何调试。在本地机器上进行测试时,我没有收到任何这些错误。

标签: django linux ubuntu stripe-payments web-development-server


【解决方案1】:

根据您的最新评论,您似乎在本地计算机上运行了 Stripe CLI,并且您正尝试使用它来将 Stripe 事件转发到您的 Linode 上运行的代码。

Stripe CLI 仅用于本地测试,虽然从本地计算机转发到 Linode 可能可行,但不建议这样做。

这里最好的方法是 set up an actual webhook endpoint in your Stripe Dashboardcreate one using the Stripe API 并将其指向您的 Linode。

或者,您可以在 Linode 本身上安装 Stripe CLI 并在本地转发,但实际的 webhook 端点将是更好的测试方法,因为您将获得实际的 webhook 端点行为,例如retries

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 2022-05-04
    • 1970-01-01
    相关资源
    最近更新 更多